¿Cómo calculo si mi regresión lineal tiene una diferencia estadísticamente significativa de una línea teórica conocida?

14

Tengo algunos datos que se ajustan a lo largo de una línea aproximadamente lineal:

ingrese la descripción de la imagen aquí

Cuando hago una regresión lineal de estos valores, obtengo una ecuación lineal:

y=0.997x0.0136

En un mundo ideal, la ecuación debería ser .y=x

Claramente, mis valores lineales están cerca de ese ideal, pero no exactamente. Mi pregunta es, ¿cómo puedo determinar si este resultado es estadísticamente significativo?

¿Es el valor de 0.997 significativamente diferente de 1? ¿Es -0.01 significativamente diferente de 0? ¿O son estadísticamente iguales y puedo concluir que con un nivel de confianza razonable?y=x

¿Qué es una buena prueba estadística que puedo usar?

Gracias

Darcy
fuente
1
Puede calcular si hay o no una diferencia estadísticamente significativa, pero debe tener en cuenta que esto no significa si no hay una diferencia. Solo puede estar seguro del significado cuando falsifica la hipótesis nula, pero cuando no falsifica la hipótesis nula, esto puede ser (1) de hecho, la hipótesis nula es correcta (2) su prueba no fue poderosa debido a un número bajo de las muestras (3) su prueba no fue poderosa debido a una hipótesis alternativa incorrecta (3b) medida falsa de significancia estadística debido a la representación incorrecta de la parte no determinista del modelo.
Sextus Empiricus
Para mí, sus datos no se parecen a y = x + ruido blanco. ¿Puedes decir más al respecto? (una prueba para suponer que obtiene ese ruido puede no ver una diferencia significativa, sin importar qué tan grande sea la muestra, incluso cuando haya una gran diferencia entre los datos y la línea y = x, solo porque usted solo comparando con otras líneas y = a + bx, que puede no ser la comparación correcta y más poderosa)
Sextus Empiricus
Además, cuál es el objetivo de determinar la importancia. Veo que muchas respuestas sugieren usar un nivel alfa del 5% (intervalos de confianza del 95%). Sin embargo, esto es muy arbitrario. Es muy difícil ver la significación estadística como una variable binaria (presente o no presente). Esto se hace con reglas como los niveles alfa estándar, pero es arbitrario y casi sin sentido. Si da un contexto, entonces el uso de un cierto nivel de corte para tomar una decisión (una variable binaria) basada en un nivel de significación ( no una variable binaria), entonces un concepto como una significación binaria tiene más sentido.
Sextus Empiricus
1
¿Qué tipo de "regresión lineal" estás realizando? Uno normalmente consideraría que está discutiendo la regresión de mínimos cuadrados ordinarios (con un término de intercepción), pero en ese caso porque ambos conjuntos de residuos tendrán medias cero (exactamente), la intersección en la regresión entre los residuos también debería ser cero (exactamente ) Como no es así, algo más está sucediendo aquí. ¿Podría proporcionarnos información sobre lo que está haciendo y por qué?
whuber
Esto se parece al problema en la medición de ver si dos sistemas dan el mismo resultado. Intenta mirar el bland-altman-plot para obtener material.
mdewey

Respuestas:

17

Este tipo de situación puede manejarse mediante una prueba F estándar para modelos anidados . Como desea probar ambos parámetros contra un modelo nulo con parámetros fijos, sus hipótesis son:

H0:β=[01]HA:β[01].

La prueba F implica ajustar ambos modelos y comparar su suma de cuadrados residuales, que son:

SSE0=i=1n(yixi)2SSEA=i=1n(yiβ^0β^1xi)2

La estadística de prueba es:

FF(y,x)=n22SSE0SSEASSEA.

El valor p correspondiente es:

pp(y,x)=F(y,x)F-Dist(r|2,n2) dr.


Implementación en R: suponga que sus datos están en un marco de datos llamado DATAcon variables llamadas yy x. La prueba F se puede realizar manualmente con el siguiente código. En los datos simulados simulados que he usado, puede ver que los coeficientes estimados son cercanos a los de la hipótesis nula, y el valor p de la prueba no muestra evidencia significativa para falsificar la hipótesis nula de que la verdadera función de regresión es Función de identidad.

#Generate mock data (you can substitute your data if you prefer)
set.seed(12345);
n    <- 1000;
x    <- rnorm(n, mean = 0, sd = 5);
e    <- rnorm(n, mean = 0, sd = 2/sqrt(1+abs(x)));
y    <- x + e;
DATA <- data.frame(y = y, x = x);

#Fit initial regression model
MODEL <- lm(y ~ x, data = DATA);

#Calculate test statistic
SSE0   <- sum((DATA$y-DATA$x)^2);
SSEA   <- sum(MODEL$residuals^2);
F_STAT <- ((n-2)/2)*((SSE0 - SSEA)/SSEA);
P_VAL  <- pf(q = F_STAT, df1 = 2, df2 = n-2, lower.tail = FALSE);

#Plot the data and show test outcome
plot(DATA$x, DATA$y,
     main = 'All Residuals',
     sub  = paste0('(Test against identity function - F-Stat = ',
            sprintf("%.4f", F_STAT), ', p-value = ', sprintf("%.4f", P_VAL), ')'),
     xlab = 'Dataset #1 Normalized residuals',
     ylab = 'Dataset #2 Normalized residuals');
abline(lm(y ~ x, DATA), col = 'red', lty = 2, lwd = 2);

La summarysalida y plotpara estos datos se ven así:

summary(MODEL);

Call:
lm(formula = y ~ x, data = DATA)

Residuals:
    Min      1Q  Median      3Q     Max 
-4.8276 -0.6742  0.0043  0.6703  5.1462 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.02784    0.03552  -0.784    0.433    
x            1.00507    0.00711 141.370   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.122 on 998 degrees of freedom
Multiple R-squared:  0.9524,    Adjusted R-squared:  0.9524 
F-statistic: 1.999e+04 on 1 and 998 DF,  p-value: < 2.2e-16

F_STAT;
[1] 0.5370824

P_VAL;
[1] 0.5846198

ingrese la descripción de la imagen aquí

Reinstalar a Mónica
fuente
Es interesante cómo generar los datos. Si usted hubiera añadido un error a la variable de entonces la mejor línea para ajustar los datos sería no y = x. Esto muestra cuánto depende una prueba de hipótesis no solo de la parte determinista y = x sino también de la parte no determinista que explica cómo se distribuyen los errores. La prueba de hipótesis nula aquí es para la hipótesis más específica 'y = x + e' y no para 'y = x'. x
Sextus Empiricus
1
Sí, bien visto. Los datos simulados no utilizan una regresión lineal homoskedastic estándar. Utilicé la heterocedasticidad en la simulación para tratar de imitar aproximadamente el patrón de datos en el gráfico mostrado por el OP. (¡Y creo que hice un muy buen trabajo!) Así que este es un caso en el que estoy ajustando un modelo lineal homoskedastic estándar a datos simulados que no se generaron a partir de ese modelo. Sin embargo, eso todavía es legítimo: está bien simular datos de un modelo y luego ajustarlos a otro, para ver qué surge.
Restablece a Mónica el
1
Ni siquiera noté la heterocedasticidad en la parte sd = 2/sqrt(1+abs(x))(encontré extraña la forma del bulbo central en el gráfico de OP y su imagen me hizo pensar, 'oh, no es tan extraño después de todo, debe ser la densidad', por lo que es un buen trabajo ) A lo que me refería es que agrega el error a la variable pero no a la variable . Supongo que esto es importante. En la práctica, cuando uno mide una relación teórica también puede haber algún error en la variable y uno debería ser capaz de falsificar dados los datos suficientes, pero lo que uno falsifica en realidad esyxy=xxy=xy=x+e
Sextus Empiricus
1
Eso es cierto, pero te lleva al territorio de los modelos de errores en variables, lo que lo hace más complicado. Creo que el OP solo quiere usar regresión lineal estándar en este caso.
Restablece a Mónica el
Estoy de acuerdo en que es una nota al margen, pero no obstante importante. La simplicidad de la pregunta me desconcierta (en diferentes puntos), y también me preocupa porque podría ser una representación demasiado simple. Por supuesto, depende de lo que uno realmente esté tratando de lograr ('todos los modelos están equivocados ...'), pero esta simple representación puede convertirse en un estándar y las complejas preguntas adicionales que uno debe tener en cuenta serán olvidadas o incluso olvidadas. nunca comienza a pensar en ello (la referencia al IC del 95% en otras respuestas es un ejemplo de un estándar que las personas siguen ciegamente).
Sextus Empiricus
5

Aquí hay un método gráfico genial que creé del excelente libro de Julian Faraway "Modelos lineales con R (segunda edición)". Son intervalos de confianza simultáneos del 95% para la intersección y la pendiente, trazados como una elipse.

Por ejemplo, creé 500 observaciones con una variable "x" que tiene una distribución N (media = 10, sd = 5) y luego una variable "y" cuya distribución es N (media = x, sd = 2). Eso produce una correlación de poco más de 0.9 que puede no ser tan estricta como sus datos.

Puede verificar la elipse para ver si el punto (intersección = 0, pendiente = 1) cae dentro o fuera de ese intervalo de confianza simultáneo.

library(tidyverse)
library(ellipse)
#> 
#> Attaching package: 'ellipse'
#> The following object is masked from 'package:graphics':
#> 
#>     pairs

set.seed(50)
dat <- data.frame(x=rnorm(500,10,5)) %>% mutate(y=rnorm(n(),x,2))

lmod1 <- lm(y~x,data=dat)
summary(lmod1)
#> 
#> Call:
#> lm(formula = y ~ x, data = dat)
#> 
#> Residuals:
#>     Min      1Q  Median      3Q     Max 
#> -6.9652 -1.1796 -0.0576  1.2802  6.0212 
#> 
#> Coefficients:
#>             Estimate Std. Error t value Pr(>|t|)    
#> (Intercept)  0.24171    0.20074   1.204    0.229    
#> x            0.97753    0.01802  54.246   <2e-16 ***
#> ---
#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#> 
#> Residual standard error: 2.057 on 498 degrees of freedom
#> Multiple R-squared:  0.8553, Adjusted R-squared:  0.855 
#> F-statistic:  2943 on 1 and 498 DF,  p-value: < 2.2e-16

cor(dat$y,dat$x)
#> [1] 0.9248032

plot(y~x,dat)
abline(0,1)


confint(lmod1)
#>                  2.5 %    97.5 %
#> (Intercept) -0.1526848 0.6361047
#> x            0.9421270 1.0129370

plot(ellipse(lmod1,c("(Intercept)","x")),type="l")
points(coef(lmod1)["(Intercept)"],coef(lmod1)["x"],pch=19)

abline(v=confint(lmod1)["(Intercept)",],lty=2)
abline(h=confint(lmod1)["x",],lty=2)

points(0,1,pch=1,size=3)
#> Warning in plot.xy(xy.coords(x, y), type = type, ...): "size" is not a
#> graphical parameter

abline(v=0,lty=10)
abline(h=0,lty=10)

Creado el 21-01-2019 por el paquete reprex (v0.2.1)

Brent Hutto
fuente
1

Podría calcular los coeficientes con n muestras de arranque. Esto probablemente dará como resultado valores de coeficientes distribuidos normales (Teorema del límite central). Con eso, podría construir un intervalo de confianza (por ejemplo, 95%) con valores t (n-1 grados de libertad) alrededor de la media. Si su IC no incluye 1 (0), es estadísticamente significativo diferente o más preciso: puede rechazar la hipótesis nula de una pendiente igual.

peter
fuente
Como lo ha formulado aquí, solo prueba dos hipótesis por separado, pero lo que necesita es una prueba conjunta.
kjetil b halvorsen
0

β0=0β1=1

RScrlli
fuente
1
Pero lo que se necesita es una prueba conjunta como en otras respuestas.
kjetil b halvorsen
@kjetilbhalvorsen Me he dado cuenta de que hoy me equivoqué al leer las otras respuestas. Lo borraré.
RScrlli el
0

Debe ajustar una regresión lineal y verificar los intervalos de confianza del 95% para los dos parámetros. Si el IC de la pendiente incluye 1 y el IC del desplazamiento incluye 0, la prueba de dos lados es insignificante aprox. en el nivel (95%) ^ 2, ya que usamos dos pruebas separadas, el riesgo de tipo I aumenta.

Usando R:

fit = lm(Y ~ X)
confint(fit)

o usas

summary(fit)

y calcule los 2 intervalos sigma usted mismo.

Semoi
fuente