Guía práctica de modelado econométrico avanzado con Python y Matlab

El análisis econométrico no se limita a memorizar fórmulas. Al implementar modelos con herramientas modernas como Python o Matlab, se pueden obtener resultados robustos de forma más eficiente. A continuación se presentan ejemplos clave para estimar y validar modelos econométricos, desde regresión lineal hasta técnicas de aprendizaje automático.

Regresión lineal con mínimos cuadrados ordinarios (OLS)

En Python, la biblioteca statsmodels ofrece una interfaz completa para OLS. Es importante agregar manualmente el término constante:

import statsmodels.api as sm
predictores = sm.add_constant(data[['x1', 'x2', 'x3']])
modelo = sm.OLS(data['respuesta'], predictores).fit()
print(modelo.summary())  # muestra R², p-valores, intervalos de confianza

Para detectar multicolinealidad, se puede calcular el factor de inflación de la varianza (VIF):

from statsmodels.stats.outliers_influence import variance_inflation_factor
import numpy as np
matriz = predictores.values
vif = [variance_inflation_factor(matriz, i) for i in range(matriz.shape[1])]
print("VIF:", vif)  # valores > 10 indican problemas

En Matlab, la implementación clásica requiere construir la matriz de diseño manualmente:

X = [ones(size(data,1),1), data(:,2:4)];
[beta, sigma, resid] = mvregress(X, y);

Modelo Probit y efectos marginales

Para variables dependientes binarias, el modelo Probit es común. Con statsmodels, se ajusta fácilmente y se obtienen los efectos marginales:

modelo_probit = sm.Probit(y, predictores).fit()
marginales = modelo_probit.get_margeff(at='mean')  # efectos en la media
print("Efecto marginal de x1:", marginales.margeff[1])

Si se desea verificar el cálculo manual, se puede usar la función de densidad normal:

from scipy.stats import norm
beta_hat = modelo_probit.params
media = predictores.mean()
efecto_x1 = norm.pdf(media @ beta_hat) * beta_hat[1]
print("Efecto marginal calculado:", efecto_x1)

Importancia de variables con Random Forest

En aprendizaje automático, el Random Forest permite evaluar la relevacnia de predictores. La importancia por permutación es más fiable que el valor por defecto cuando hay correlación entre variables:

from sklearn.ensemble import RandomForestRegressor
from sklearn.inspection import permutation_importance

modelo_rf = RandomForestRegressor(n_estimators=200, random_state=42)
modelo_rf.fit(X_train, y_train)

resultados = permutation_importance(modelo_rf, X_test, y_test, n_repeats=30, random_state=42)
indices = resultados.importances_mean.argsort()[::-1]

import matplotlib.pyplot as plt
plt.figure()
plt.boxplot(resultados.importances[indices].T, vert=False, labels=X_train.columns[indices])
plt.title("Importancia por permutación")
plt.show()

Para un análisis más interpretable en economía, se recomienda complementar con valores SHAP. La librería shap permite descomponer la predicicón:

import shap
explainer = shap.Explainer(modelo_rf, X_train)
shap_values = explainer(X_test)
shap.summary_plot(shap_values, X_test)

Consideraciones sobre las herramientas

Aunque Matlab conserva fucniones como gmm para estimación por momentos generalizados, Python ofrece paquetes como linearmodels para datos de panel. La elección depende del problema específico; no hay un entorno universalmente superior. Lo fundamental es comprender la teoría detrás de cada modelo y validar los supuestos con los datos reales.

Etiquetas: Python matlab econometría OLS Probit

Publicado el 6-29 23:33