Академический Документы
Профессиональный Документы
Культура Документы
import pandas as pd
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as st
import itertools
%matplotlib inline
___________________________________________________________________________________
_________________________________________________________
#Importar tabla
df = pd.read_excel(�NOMBRETABLA.xlsx�)
df.head()
#Modelo regresi�n
modelo = smf.ols('Y ~ X', data=df)
resultado = modelo.fit()
resultado.summary()
___________________________________________________________________________________
_______
#Obtener valor p
resultado.f_pvalue
__________________________________________________
#Definicion de y_gorro
y_gorro = lambda x: FORMULA+FORMULA*x
___________________________________________________________________________________
_______
#En caso de pedir variable con log
df['LOGX'] = np.log(df['X'])
df.head()
__________________________________________________
#Analisis de residuos
fig = plt.figure(figsize=(8,6))
#Gr�fico de probabilidad
ax = fig.add_subplot(223)
st.probplot(resultado.resid_pearson, plot=ax);
#Histograma
ax = fig.add_subplot(224)
ax.hist(resultado.resid_pearson, bins=6)
ax.set_ylabel('Frecuency')
ax.set_xlabel('Standard error')
plt.tight_layout()
___________________________________________________________________________________
_________________________________________________________
fig = plt.figure(figsize=(8,5))
ax = fig.add_subplot(111)
ax.scatter(df.X,df.Y)
ax.plot(x_val,y_gorro(x_val),color='g')
ax.plot(x_val,pred.conf_int(),color='r')
ax.plot(x_val,pred.conf_int(obs=True),color='orange')
#El intervalo de respuesta media (Representado con lineas rojas) representa el
intervalo en el cual se encuentra la media real de los datos mientras que el
intervalo de prediccion (Representado con lineas naranjas) nos indica el rango de
valores que puede tomar "y".
#Prediccion de valores
predict = resultado.get_prediction(exog={'1': 'Valor1',
'2':'Valor2',
'3':Valor3,
})
predict.summary_frame()
___________________________________________________________________________________
_________________________________________________________
#Codigo polinomial
df['x1x1'] = (df['x1']) **2
df['x2x2'] = (df['x2']) **2
df['x3x3'] = (df['x3']) **2
df['x1x2'] = (df['x1'])*(df['x2'])
df['x1x3'] = (df['x1'])*(df['x2'])
df['x2x3'] = (df['x2'])*(df['x3'])
df.head()
___________________________________________________________________________________
_________________________________________________________
#Si es que me piden los graficos de los residuos Y gorro y de cada uno de sus
regresores
plt.scatter(resultado.fittedvalues, resultado.resid_pearson)
plt.xlabel('y_gorro*')
plt.ylabel('residuo estandar')
plt.scatter(df['x'], resultado.resid_pearson)
plt.xlabel('Nombre de x')
plt.ylabel('residuo estandar')
_____________________________________________
___________________________________________________________________________________
___________
df['ln_Y'] = np.log(df['Y'])
plt.scatter('X','Y',data=df)
plt.xlabel('X')
plt.ylabel('Y');
df['inv_X'] = 1/df['X']
plt.scatter('inv_X','Y',data=df)
plt.xlabel('inv_X')
plt.ylabel('Y');
3.Relacion y=ax^B
df['ln_X'] = np.log(df['X'])
plt.scatter('ln_X','ln_Y',data=df)
plt.xlabel('ln_X')
plt.ylabel('ln_Y');
4.Relacion y=a+blnx
plt.scatter('inv_X','ln_Y',data=df)
plt.xlabel('inv_X')
plt.ylabel('ln_Y');
5.Relacion lny=a+b(1/x)