Saltar al contenido principal
LibreTexts Español

27.3: Ejemplos de Ajuste de Modelo Problemático

  • Page ID
    150923
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Digamos que había otra variable en juego en este conjunto de datos, de la que no estábamos al tanto. Esta variable hace que algunos de los casos tengan valores mucho mayores que otros, de una manera que no está relacionada con la variable X. Jugamos un truco aquí usando la función seq () para crear una secuencia de cero a uno, y luego umbral esos 0.5 (para obtener la mitad de los valores como cero y la otra mitad como uno) y luego multiplicar por el tamaño del efecto deseado:

    effsize=2
    regression_data <- regression_data %>%
      mutate(y2=y + effsize*(seq(1/npoints,1,1/npoints)>0.5))
    
    lm_result2 <- lm(y2 ~ x, data=regression_data)
    summary(lm_result2)
    ## 
    ## Call:
    ## lm(formula = y2 ~ x, data = regression_data)
    ## 
    ## Residuals:
    ##     Min      1Q  Median      3Q     Max 
    ## -2.3324 -0.9689 -0.0939  1.0421  2.2591 
    ## 
    ## Coefficients:
    ##             Estimate Std. Error t value Pr(>|t|)    
    ## (Intercept)   10.978      0.117   93.65   <2e-16 ***
    ## x              0.270      0.119    2.27    0.025 *  
    ## ---
    ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    ## 
    ## Residual standard error: 1.2 on 98 degrees of freedom
    ## Multiple R-squared:  0.0501, Adjusted R-squared:  0.0404 
    ## F-statistic: 5.17 on 1 and 98 DF,  p-value: 0.0252

    Una cosa que debes notar es que el modelo ahora encaja en general mucho peor; el R-cuadrado es aproximadamente la mitad de lo que era en el modelo anterior, lo que refleja el hecho de que se agregó más variabilidad a los datos, pero no se contabilizó en el modelo. Veamos si nuestros informes de diagnóstico nos pueden dar alguna idea:

    autoplot(lm_result2,which=1:2)

    El gráfico residual versus ajustado no nos da mucha idea, pero vemos en la gráfica Q-Q que los residuos están divergiendo bastante de la línea unitaria.

    Veamos otro problema potencial, en el que la variable y está relacionada de manera no lineal con la variable X. Podemos crear estos datos al cuadrar la variable X cuando generamos la variable Y:

    effsize=2
    regression_data <- regression_data %>%
      mutate(y3 = (x**2)*slope + rnorm(npoints)*noise_sd + intercept)
    
    lm_result3 <- lm(y3 ~ x, data=regression_data)
    summary(lm_result3)
    ## 
    ## Call:
    ## lm(formula = y3 ~ x, data = regression_data)
    ## 
    ## Residuals:
    ##    Min     1Q Median     3Q    Max 
    ## -1.610 -0.568 -0.065  0.359  3.266 
    ## 
    ## Coefficients:
    ##             Estimate Std. Error t value Pr(>|t|)    
    ## (Intercept)  10.5547     0.0844  125.07   <2e-16 ***
    ## x            -0.0419     0.0854   -0.49     0.62    
    ## ---
    ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    ## 
    ## Residual standard error: 0.84 on 98 degrees of freedom
    ## Multiple R-squared:  0.00245,    Adjusted R-squared:  -0.00773 
    ## F-statistic: 0.241 on 1 and 98 DF,  p-value: 0.625

    Ahora vemos que no existe una relación lineal significativa entreX2X^2y Y/ Pero si miramos los residuales el problema con el modelo queda claro:

    autoplot(lm_result3,which=1:2)

    En este caso podemos ver la relación claramente no lineal entre los valores predichos y residuales, así como la clara falta de normalidad en los residuales.

    Como señalamos en el capítulo anterior, el “lineal” en el modelo lineal general no se refiere a la forma de la respuesta, sino que se refiere al hecho de que el modelo es lineal en sus parámetros, es decir, los predictores en el modelo solo se multiplican los parámetros (e.g., en lugar de elevarse a una potencia de el parámetro). Así es como construiríamos un modelo que pudiera dar cuenta de la relación no lineal:

    # create x^2 variable
    regression_data <- regression_data %>%
      mutate(x_squared = x**2)
    
    lm_result4 <- lm(y3 ~ x + x_squared, data=regression_data)
    summary(lm_result4)
    ## 
    ## Call:
    ## lm(formula = y3 ~ x + x_squared, data = regression_data)
    ## 
    ## Residuals:
    ##     Min      1Q  Median      3Q     Max 
    ## -1.4101 -0.3791 -0.0048  0.3908  1.4437 
    ## 
    ## Coefficients:
    ##             Estimate Std. Error t value Pr(>|t|)    
    ## (Intercept)  10.1087     0.0739   136.8   <2e-16 ***
    ## x            -0.0118     0.0600    -0.2     0.84    
    ## x_squared     0.4557     0.0451    10.1   <2e-16 ***
    ## ---
    ## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    ## 
    ## Residual standard error: 0.59 on 97 degrees of freedom
    ## Multiple R-squared:  0.514,  Adjusted R-squared:  0.504 
    ## F-statistic: 51.2 on 2 and 97 DF,  p-value: 6.54e-16

    Ahora vemos que el efecto deX2X^2es significativo, y si miramos la trama residual deberíamos ver que las cosas se ven mucho mejor:

    autoplot(lm_result4,which=1:2)

    No perfecto, ¡pero mucho mejor que antes!


    This page titled 27.3: Ejemplos de Ajuste de Modelo Problemático is shared under a not declared license and was authored, remixed, and/or curated by Russell A. Poldrack via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.