Вы находитесь на странице: 1из 4

//COMANDOS INICIALES//

import pandas as pd
import statsmodels.formula.api as smf
import matplotlib.pyplot as plt
import scipy.stats as st
import itertools
%matplotlib inline

import pandas as pd
import statsmodels.formula.api as smf
from statsmodels.stats.anova import anova_lm
from statsmodels.graphics.factorplots import interaction_plot
import matplotlib.pyplot as plt
import scipy.stats as st
import numpy as np
%matplotlib inline

//IMPORTAR EL ARCHIVO EXCEL//

df = pd.read_excel('ARCHIVO.xlsx')
df.head()

//GRAFICO PLOT SCATTER (HISTOGRAMA)//

df.plot.scatter('X', 'Y')

#El grafico nos da un indicio inicial de como varia la media segun el nivel
#Si es que nos piden diferenciar entre an�lisis cualitativos o cuantitativos,
debemos analizar los datos que nos entregan.
Factores cualitativos: Los niveles corresponden a posibles categor�as del factor.
Factores cuantitativos: Los niveles corresponden a diferentes ajustes del factor

//MODELO DE REGRESI�N//

res = smf.ols('Y ~ C(X)', data=df).fit()


res.summary()

#Se obtiene el modelo de regresion


#En el caso de que hubieran X1 y X2 se usa Y ~ C(X1) * C(X2)

//ANOVA//

anova_lm(res)

#Si es que en el anova(res) PR(>F) es menor al alpha, se rechaza la hipotesis nula,


es decir, el efecto de cada nivel es nulo (0).
Entonces, la hip�tesis alternativa es que al menos un factor difiere de los dem�s.
#Cuando Ho es cierta, Fo deber�a ser cercana a 1, mientras que el valor deberia de
crecer si Ho es falsa.

//PRUEBA DE TUCKEY//

from statsmodels.stats.multicomp import pairwise_tukeyhsd

#Tuckey depende solo de dos par�metros.


res = pairwise_tukeyhsd(df['Y'], df['X'])
res.summary()

#Las columnas "group" indican que niveles se estan comparando


#La columna "meandiff" nos indica la diferencia entre las medias de los respectivos
niveles
#Las columnas "lower" y "upper" nos indican los limites del intervalo de confianza
para la diferencia de las medias, si este intervalo contiene al "0" significa que
la diferencia entre las medias de esos niveles no es significativa, en palabras
simples que no importa cual de esos niveles se escoja, el resultado tendera a ser
el mismo
#La columna "reject" nos indica si la diferencia entre los 2 niveles analizados es
significativa: "False" = No es significativa / "True" = Si es significativa.

comp.plot_simultaneous(figsize=(8, 4));

#En el eje X estan las medias, y los niveles se encuentran en el eje Y.


#El grafico sirve para observar de manera visual y clara cuales niveles del factor
arrojan resultados diferentes

//GRAFICO BOXPLOT//

df.boxplot('Y', by='X', figsize=(12, 6))

#Mientras mas variabilidad existe en los datos, mejor es el estudio (y m�s grande
es la caja).
Esto debido a que si existe muy poca variabilidad, puede haber un factor externo el
cual est� afectando a los datos.

//INTERACTION PLOT//

from statsmodels.graphics.factorplots import interaction_plot

interaction_plot(df['X1'], df['X2'], df['Y']);

interaction_plot(df['X2'], df['X1'], df['Y']);

#Los interaction plot se realizan cuando nos piden un an�lisis con interacciones.
#Si las lineas se intersectan significa que la interacci�n es significativa.
Paralelas -> No son significativas.

//CODIGO DESV STANDAR

anv = anova_lm(res)
sigma2_t = (anv.mean_sq['C(Lote)'] - anv.mean_sq['Residual']) / 5
sigma2_t**(1/2)

//CODIGO DESV STANDAR ENTRE MUESTRAS

sigma2 = anv.mean_sq['Residual']
sigma2, sigma2**0.5

//ERROR//

fig = plt.figure(figsize=(8, 6))


ax = fig.add_subplot(221)
ax.scatter(df.index, res.resid_pearson, color='blue')
ax.set_xlabel('Observations')
ax.set_ylabel('Standard error')

ax = fig.add_subplot(222)
ax.scatter(res.fittedvalues, res.resid_pearson, color='blue')
ax.set_xlabel('Mean response')
ax.set_ylabel('Standard error')

ax = fig.add_subplot(223)
st.probplot(res.resid_pearson, plot=ax)

ax = fig.add_subplot(224)
ax.hist(res.resid_pearson, bins=6)
ax.set_xlabel('Standard error')
ax.set_ylabel('Frecuency')
ax.set_title('Histogram')

plt.tight_layout()

// 2alak//

(Con este c�digo observas si hay variables fuera del rango)

effects = [v*2 for v in re.params[1:]]


labels = [v for v in re.params[1:].index]

rv = st.norm(loc=np.mean(effects),scale=np.std(effects))

fig = plt.figure(figsize=(6,6))
ax = fig.add_subplot(111)
(_y, _x), _ = st.probplot(effects,dist=rv)
ax.scatter(_x,_y)

for i, (e, l) in enumerate(sorted(zip(effects,labels),key=lambda v:v[0])):


ax.text(_x[i],_y[i], ' '+l, verticalalignment='top')

ax.set_ylabel('Theorical quantiles')
ax.set_xlabel('Effect')
ax.set_title('Normal probability plot of the effects')

plt.show()

////

res = smf.ols('Respuesta ~ (A+B+C+D)**3', data=df).fit()


anova_lm(re)
res.summary()

(C�digo haciendo 2k **2 eliminando variables malas)

res = smf.ols('Respuesta ~ (A+B+C+D)**2 - B:D - C:D - A:B - A:C - B - C',


data=df).fit()
anova_lm(res)
res.summary()

//PROMPT
cd Desktop
cd (carpeta)
cd (nombredelarchivo)

//
Prueba turkey
Las columnas "group" indican que niveles se estan comparando
La columna "meandiff" nos indica la diferencia entre las medias de los respectivos
niveles
Las columnas "lower" y "upper" nos indican los limites del intervalo de confianza
para la diferencia de las medias, si este intervalo contiene al "0" significa que
la diferencia entre las medias de esos niveles no es significativa, en palabras
simples que no importa cual de esos niveles se escoja, el resultado tendera a ser
el mismo
La columna "reject" nos indica si la diferencia entre los 2 niveles analizados es
significativa: "False" = No es significativa / "True" = Si es significativa

Interaction plot
Si las lineas se intersectan significa que la interaccion es significativa, si son
paralelas caso contrario
En este caso se comprueba graficamente que la interaccion entre el operador y la
temperatura no es significativa, lo que nos indicaba el valor F cercano a 1 y el
valor P alto del analisis anova

//

re = smf.ols('Respuesta ~ A*B*C*D', data=df).fit()


re.summary()

# cuidado con la cantidad de factores, depende de cada ejercicio


# esto es el modelo de regresion, importante fijarse primeramente en el Prob (F-
statistic) que no es nada mas que el valor p
# recuerden que el criterio de valor p indica que si el valor p es < al alfa en
consideraci�n
# ya aqui se puede concluir si algun coeficiente es significativo y/o el modelo es
representativo

# recuerden que los coeficientes entregados son la mitad del efecto de interaccion
entre los factores indicados
# en este punto hay que empezar a definir que interacciones no son significativas
para el modelo,
# esto no es nada mas que � sea estadisticamente igual a 0, lamentablemente esto no
se puede visualizar con esta regresion
# tal como esta

Вам также может понравиться