es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Las transformaciones polinómicas en la regresión resultan en múltiples valores de p para cada variable. ¿Existe un único valor sustituto que pueda representar estos valores de p?

Utilizo el módulo statsmodels.formula.api de Python para la mayoría de las tareas de regresión. Cuando pruebo un gran número de variables en un modelo, verifico sus valores de p para tener confianza de que las variables realmente están mejorando el modelo.

Normalmente aplico transformaciones polinómicas a las variables para verificar si mejoran el ajuste. Por ejemplo, esta es la ecuación de una transformación polinómica de 3 grados para la variable x:

ŷ = C + β₁x + β₂x² + β₃x³

Mi problema es que cada término de la variable x tiene su propio valor de p. Es decir, hay un valor de p separado para los términos x, y .

En un modelo de regresión multivariante, donde los predictores X comprenden n variables individuales x₁, x₂, … xₙ, no tengo forma de evaluar el valor de p de xᵢ si le aplico una transformación polinómica.

En este código, aplico una transformación polinómica de 3 grados a X:

import statsmodels.formula.api as smf

X = data["predictor"]
y = data["outcome"]

model = smf.ols(
    formula="outcome ~ predictor + I(predictor**2) + I(predictor**3)",
    data=data
)
results = model.fit()

print(results.pvalues)

Esto generará 4 valores de p: uno para la constante/intercepto y uno para cada término de X. ¿Es posible combinar de alguna manera los valores de p de X o desarrollar una medida proxy para ellos que sea un único valor?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como cada término de una transformación polinomial de una variable x tiene su propio valor p, se vuelve difícil evaluar la importancia de los términos individuales en un modelo de regresión multivariada donde los predictores X comprenden múltiples variables.

    Un enfoque para combinar los valores p de los términos polinomiales de una variable es usar el test F. El test F es una prueba de hipótesis estadística en la que la estadística de prueba sigue una distribución F bajo la hipótesis nula. Este test se puede usar para determinar si los términos polinomiales de una variable x tienen un efecto global significativo en la variable de resultado.

    En la biblioteca statsmodels de Python, podemos usar la función anova_lm para realizar un análisis de varianza (ANOVA) en el objeto de resultados de regresión. Esta función devuelve una tabla ANOVA que incluye la estadística F y el valor p para el modelo completo y para cada uno de los predictores individuales.

    Aquí tienes un ejemplo de cómo usar anova_lm para obtener la estadística F y el valor p para los términos polinomiales de una variable x:

    import statsmodels.api as sm
    
    X = data["predictor"]
    y = data["outcome"]
    
    # transformación polinomial
    X_poly = sm.add_poly(X, degree=3, include_intercept=True)
    
    modelo = sm.OLS(y, X_poly)
    resultados = modelo.fit()
    
    # realizar ANOVA
    tabla_anova = sm.stats.anova_lm(resultados, typ=2)
    
    print(tabla_anova)
    

    El parámetro degree en add_poly especifica el grado de la transformación polinomial. El parámetro typ en anova_lm especifica el tipo de ANOVA a utilizar. En este caso, typ=2 realiza un ANOVA de sumas de cuadrados secuenciales.

    La tabla ANOVA resultante tendrá una fila para cada uno de los términos polinomiales de x, junto con una fila para el intercepto y una fila para el residual. La estadística F y el valor p para los términos polinomiales se pueden encontrar en las filas correspondientes.

    Alternativamente, otro enfoque es utilizar un modelo de regresión multivariada que incluya todos los términos polinomiales de la variable x en lugar de crear modelos separados para cada término polinomial. Esto puede ayudar a evitar el problema de las pruebas de hipótesis múltiples y mejorar el ajuste general del modelo. Sin embargo, el modelo resultante puede ser más complejo y difícil de interpretar.

Comments are closed.