0% found this document useful (0 votes)
10 views7 pages

Formulario - EA

This document provides code and instructions for statistical analysis in Python including importing libraries, reading data files, descriptive statistics, histograms, boxplots, probability distributions, chi-square tests, Kolmogorov-Smirnov tests, Anderson-Darling tests, Q-Q plots, P-P plots, linear regression modeling, ANOVA, and analyzing residuals. Methods include reading data, exploring distributions, fitting models, assessing fit quality, and model selection. The goal is to analyze data, fit appropriate models, and check assumptions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views7 pages

Formulario - EA

This document provides code and instructions for statistical analysis in Python including importing libraries, reading data files, descriptive statistics, histograms, boxplots, probability distributions, chi-square tests, Kolmogorov-Smirnov tests, Anderson-Darling tests, Q-Q plots, P-P plots, linear regression modeling, ANOVA, and analyzing residuals. Methods include reading data, exploring distributions, fitting models, assessing fit quality, and model selection. The goal is to analyze data, fit appropriate models, and check assumptions.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

FORMULARIO CODIGOS ESTADÍSTICA APLICADA

Imports

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

Leer archivo

df = pd.read_excel("nombreExcel.xlsx") o = pd.read_csv(“nombreArchivo.csv”)
df

Análisis Numérico

df.describe()

Histograma y Boxplot

fig = plt.figure(figsize=(10, 4))

ax = fig.add_subplot(121)
ax.hist(df['nombreVariable'])
ax.set_xlabel('nombreVariable')
ax.set_ylabel('frecuencia')
ax.set_title('Histograma')

ax = fig.add_subplot(122)
ax1 = df.boxplot(column=['nombreVariable'], grid=True)
ax.set_title('Box plot')

plt.tight_layout()

Distribución normal

histogram = nombreVariable.hist(density=True, bins=8)


val = np.linspace(nombreVariable.min(),nombreVariable.max(),1000)
x = st.norm(loc=nombreVariable.mean(), scale=nombreVariable.std())
histogram.plot(val,x.pdf(val))
Distribución exponencial

x = st.expon(scale = df.nombreVariable.mean())
pesos = df['nombreVariable']
histogram = pesos.hist(density=True)
vals = np.linspace(nombreVariable.min(),nombreVariable.max(),1000)
histogram.plot(vals,st.expon(scale=nombreVariable.mean()).pdf(vals))

Distribución gamma

histogram = nombreVariable.hist(density=True, bins = 7)


val = np.linspace(nombreVariable.min(),nombreVariable.max(),1000)
a= nombreVariable.mean()*2/nombreVariable.std()*2
b= nombreVariable.std()**2/nombreVariable.mean()
x = st.gamma(a,loc=0,scale=b)
histogram.plot(val,x.pdf(val))

Chi-2

k = mt.floor(1+mt.log2(nombreVariable.count()))
a = [x.ppf(0)]
for j in range(1, k+1):
a.append(x.ppf(j / k))
frec_obs, _ = np.histogram(nombreVariable,bins=a)
st.chisquare(frec_obs)

Prueba KS

st.kstest(nombreVariable, x.cdf)

Prueba AD

st.anderson(“nombreVariable”,'expon') o st.anderson(nombreVariable,'norm') o
st.anderson(nombreVariable,'gumbel')

Valor mínimo del describe

nombreVariable.min()
Q-Q Plot y P-P Plot

n = peso.count()
df['nombreVariable'] = df.index
dt = df.groupby('nombreVariable').count()
dt.columns = ['count']
dt['cum_count'] = dt['count'].cumsum()
dt['f'] = dt['cum_count'] / n
dt['f_bigote'] = dt['f'] - 0.5 / n
dt['f_gorro'] = x.cdf(dt.index)
dt['x_M'] = x.ppf(dt['f_bigote'])

fig = plt.figure(figsize=(9, 4))


fig.suptitle('Gráficos de probabilidad', fontsize=14, fontweight='bold')

ax = fig.add_subplot(121)
ax.set_title('Q-Q Plot')
ax.set_xlabel('$x^s$')
ax.set_ylabel('$x^M$')
v_min = min(dt['x_M'].min(), dt.index.min())
v_max = max(dt['x_M'].max(), dt.index.max())
ax.plot([v_min, v_max], [v_min, v_max])
ax.plot(dt.index, dt['x_M'], 'o', ls='None', alpha=0.3)
ax.axis('equal')
ax = fig.add_subplot(122)
ax.set_title('P-P Plot')
ax.set_xlabel('$\widetilde{F}$')
ax.set_ylabel('$\hat{F}$')
ax.plot([0, 1], [0, 1])
ax.plot(dt['f_bigote'], dt['f_gorro'], 'o', ls='None', alpha=0.3)
ax.axis('equal')

fig.subplots_adjust(top=0.8, wspace=0.3)

Largo

len(df)

Crear modelo
modelo = smf.ols('variableimportante ~ C(variablecualitativa) + variables+ variables +
variables + variables + variables ', data=df)
resultado = modelo.fit()
resultado.summary()
Ecuación de modelo
$\hat{Nombrevariable}$ = interceptvalor + valorvariable1\**Nombrevariable1* +
valorvariable2\** Nombrevariable2* + valorvariable3\**Nombrevariable3* + valorvariable4\**
Nombrevariable4* + valorvariable5\** Nombrevariable5* + valorvariable6\**
Nombrevariable6*

Radj^2 R^2

resultado.rsquared, resultado.rsquared_adj

Mejora modelo
$\hat{Nombrevariable}$ = interceptvalor + valorvariable1\**Nombrevariable1* +
valorvariable2\** Nombrevariable2* + valorvariable3\**Nombrevariable3* + valorvariable4\**
Nombrevariable4* + valorvariable5\** Nombrevariable5* + valorvariable6\**
Nombrevariable6*
se eliminaron las variables de carlength y citympg por ser poco significativas para el modelo. No
se encontró mejora alguna, sin embargo, se eliminaron las características que no aportaban,
teniendo un mejor ajuste y con esto se podría ahorrar más tiempo en la toma de datos
Prueba respuesta

res = smf.ols("Y(variable que se busca) ~ A*B*C(factores)",data=df).fit()


res.summary()
o
res = smf.ols("Y(variable que se busca) ~ C(A)*C(B)*C(C)(factores)",data=df).fit()
res.summary()

Ordenar de mayor a menor para R^2Adjustado (mejor modelo))

all_vars =
['NombreVariable1','NombreVariable2','NombreVariable3','NombreVariable4','NombreVariabl
e5','NombreVariable6']
modelos = []

for k in range(1, len(all_vars)+1):

subconjuntos = itertools.combinations(all_vars, k)

for sc in subconjuntos:

formula = 'NombreVariableImportante ~ ' + ' + '.join(list(sc))

resultado = smf.ols(formula, data=df).fit()

modelos.append({'k': k, 'R2adj': resultado.rsquared_adj, 'Formula': formula})

df_mdls = pd.DataFrame(modelos)

df_mdls.sort_values(['R2adj'], ascending=False)
residuos representativos

df['log_wind'] = np.log(df['wind'])

df

modelo = smf.ols('dc ~ log_wind', data=df)

resultado=modelo.fit()

resultado.summary()

otros
- df['inv_wind'] = 1/df['wind']
df.head()
df
modelo = smf.ols('dc ~ inv_wind', data=df)

resultado=modelo.fit()

resultado.summary()

Filtro de una tabla

modelo = smf.ols('price ~ C(fueltype) + enginesize + horsepower', data=df2)


resultado = modelo.fit()
predic = resultado.get_prediction(exog={'fueltype':'gas', 'enginesize':120,'horsepower':90})
predic.summary_frame()

4 Gráficos (Con observaciones)

df['Obs'] = [i for i in range(1,len(df)+1)]


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

ax = fig.add_subplot(221)
ax.scatter(df['Obs'], resultado.resid_pearson, color='blue')
ax.set_xlabel('Observations')
ax.set_ylabel('Standard error')

ax = fig.add_subplot(222)
ax.scatter(resultado.fittedvalues, resultado.resid_pearson, color='blue')
ax.set_xlabel('Mean response')
ax.set_ylabel('Standard error')
ax = fig.add_subplot(223)
st.probplot(resultado.resid_pearson, plot=ax)

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

plt.tight_layout()

4 Graficos

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

# obs v/s error estandar

ax = fig.add_subplot(221)
ax.scatter(df["Factor"],res.resid, color = "r")
ax.set_xlabel("Observaciones")
ax.set_ylabel("Error Estandar")

#resp media v/s error estandar

ax = fig.add_subplot(222)
ax.scatter(res.fittedvalues, res.resid, color="b")
ax.set_xlabel("Respuesta media")
ax.set_ylabel("Error Estandar")

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

#Histograma
ax = fig.add_subplot(224)
ax.hist(res.resid_pearson)
ax.set_xlabel("Error Estandar")
ax.set_ylabel("Frecuencia")

plt.tight_layout()

valor p > significancia = no se rechaza

El gráfico de residuos contiene patrones evidentes. No se cumple el principio de


homocedasticidad con su límite superior. Se observa una campana que no está centrada,
presenta un sesgo, por lo que, si bien el ajuste del pp plot es bueno, el error no es de tipo
normal. Podría haber ocurrido debido a que las variables consideradas no son suficientes, se
está dejando una o más características fuera de las existentes que posiblemente sea relevante.
Por ota parte, otras razones pueden ser de que exista multicolinealidad o bien, que el ajuste del
modelo no sea lineal.

You might also like