# librerias
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.formula.api as sm
%matplotlib inline
plt.style.use('ggplot')

# leer archivo
data = pd.read_csv('../data/dataFromAguascalientestTest.csv')

# verificar su contenido
data.head()

# diferencia entre valores de precipitacion, humedad relativa y temperatura promedio
data['diffRain'] = data['Rain'] - data['RainWRF']
data['diffHr'] = data['Hr'] - data['HrWRF']
data['diffTpro'] = data['Tpro'] - data['TproWRF']

# verificar contenido
data.head()

# histograma de diferencias Hr
data['diffHr'].hist()

# comportamiento de los datos por mes
data.groupby(['Month']).mean()[['Hr','HrWRF']]

# visualizar los datos en grafica
data.groupby(['Month']).mean()[['Hr','HrWRF']].plot.bar()

# histograma de diferencias Tpro
data['diffTpro'].hist()

# comportamiento de los datos por mes
data.groupby(['Month']).mean()[['Tpro','TproWRF']]

# visualizar los datos en grafica
data.groupby(['Month']).mean()[['Tpro','TproWRF']].plot.bar()

# histograma de diferencias Rain
data['diffRain'].hist()

# comportamiento de los datos por mes
data.groupby(['Month']).mean()[['Rain','RainWRF']]

# visualizar los datos en grafica
data.groupby(['Month']).mean()[['Rain','RainWRF']].plot.bar()

"""
Explanation: Validacion climMAPcore
En el siguiente ejercicio vamos a generar ciertos indicadores estadisticos para la validacion de las salidas de informacion de la aplicacion climMAPcore
Procedimiento
Los valores a comparar son el valor diario de la estacion vs el valor del modelo WRF. La base que se utilizara se encuentra en la carpeta data de nombre dataFromAguascalientestTest.csv la cual incluye los siguientes campos:
* Station : numero de la estacion
* State : estado
* Lat : latitud
* Long : longitud
* Year : anio
* Month : mes
* Day : dia
* Rain : precipitacion estacion
* Hr :  humedad relativa estacion
* Tpro :  temperatura promedio estacion
* RainWRF :  precipitacion modelo WRF
* HrWRF :  humedad relativa modelo WRF
* TproWRF :  tmperatura promedio modelo WRF
End of explanation
"""


# librerias seabron as sns
import seaborn as sns

# Hr
sns.lmplot(x='Hr',y='HrWRF',data=data, col='Month', aspect=0.6, size=8)

# Tpro
sns.lmplot(x='Tpro',y='TproWRF',data=data, col='Month', aspect=0.6, size=8)

# Rain
sns.lmplot(x='Rain',y='RainWRF',data=data, col='Month', aspect=0.6, size=8)

# Rain polynomial regression
sns.lmplot(x='Rain',y='RainWRF',data=data, col='Month', aspect=0.6, size=8, order=2)

"""
Explanation: Regresion Lineal
End of explanation
"""


# Hr
sns.jointplot("Hr", "HrWRF", data=data, kind="reg")

# Tpro
sns.jointplot("Tpro", "TproWRF", data=data, kind="reg")

# Rain
sns.jointplot("Rain", "RainWRF", data=data, kind="reg")

"""
Explanation: Regresion lineal con p y pearsonr
End of explanation
"""


# HR
result = sm.ols(formula='HrWRF ~ Hr', data=data).fit()

print(result.params)

print(result.summary())

# Tpro
result = sm.ols(formula='TproWRF ~ Tpro', data=data).fit()

print(result.params)

print(result.summary())

# Rain
result = sm.ols(formula='RainWRF ~ Rain', data=data).fit()

print(result.params)

print(result.summary())

"""
Explanation: OLS Regression
End of explanation
"""


# Hr
sns.distplot(data['diffHr'])

# Tpro
sns.distplot(data['diffTpro'])

# Rain
sns.distplot(data['diffRain'])

"""
Explanation: Histogramas seaborn
End of explanation
"""


