선형 회귀가 알려진 이론적 선과 통계적으로 유의 한 차이가 있는지 어떻게 계산합니까?


14

대략 선형 선에 맞는 데이터가 있습니다.

여기에 이미지 설명을 입력하십시오

이 값의 선형 회귀를 수행하면 선형 방정식이 나타납니다.

y=0.997x0.0136

이상적인 세계에서 방정식 은 이어야 합니다 .y=x

분명히, 내 선형 값은 그 이상에 가깝지만 정확하게는 아닙니다. 제 질문은 이 결과가 통계적으로 유의한지 어떻게 확인할 수 있습니까?

0.997의 값이 1과 크게 다른 가요? -0.01 이 0과 크게 다른 가요 ? 또는 통계적으로 동일하고 합리적인 신뢰 수준으로 라고 결론 지을 수 있습니까?y=x

사용할 수있는 좋은 통계 테스트는 무엇입니까?

감사


1
당신이 나 통계적으로 유의 한 차이 여부 계산할 수 있지만,이 않음을 유의해야 되지 차이가 아닌지를 의미한다. 귀무 가설을 위조 할 때의 의미에 대해서만 확신 할 수 있지만 귀무 가설을 위조하지 않으면 다음 중 하나 일 수 있습니다. (1) 실제로 귀무 가설이 정확합니다. (3) 표본의 비 결정적 부분을 잘못 표현하여 잘못된 통계적 가설을 잘못 추정하여 잘못된 검정 (3b)으로 인해 검정이 강력하지 않습니다.
Sextus Empiricus

나에게 당신의 데이터는 y = x + white noise처럼 보이지 않습니다. 그것에 대해 더 말할 수 있습니까? (이러한 노이즈가 발생한다는 가정에 대한 테스트는 샘플의 크기와 상관없이 데이터와 선 y = x 사이에 큰 차이가 있더라도 큰 차이를 '보지'못할 수 있습니다. 다른 라인들과 비교하면 y = a + bx, 옳고 가장 강력한 비교는 아닐 수 있습니다)
Sextus Empiricus

또한 중요성을 결정하는 목표는 무엇입니까? 많은 답변에서 5 %의 알파 수준 (95 % 신뢰 구간)을 사용하는 것이 좋습니다. 그러나 이것은 매우 임의적입니다. 통계적 유의성을 이진 변수 (현재 또는 존재하지 않음)로 보는 것은 매우 어렵습니다. 이는 표준 알파 수준과 같은 규칙으로 수행되지만 임의적이며 거의 의미가 없습니다. 컨텍스트를 제공하는 경우 이진 변수가 아닌 중요도 수준을 기반으로 결정 (이진 변수)을 결정하기 위해 특정 컷오프 수준을 사용 하는 경우 이진 중요도와 같은 개념이 더 적합합니다.
Sextus Empiricus

1
어떤 종류의 "선형 회귀"를 수행하고 있습니까? 일반적으로 평범한 최소 제곱 회귀에 대해 (절편 항과 함께) 논의하고 있다고 생각하지만, 두 잔차 세트 모두 제로 평균을 갖기 때문에 (정확히) 잔차 간의 회귀 인터셉트도 0이어야합니다 (정확히 ). 그렇지 않기 때문에 다른 일이 일어나고 있습니다. 하고있는 일과 그 이유에 대한 배경 지식을 제공해 주시겠습니까?
whuber

이는 두 시스템이 동일한 결과를 제공하는지 확인하는 측정 문제와 유사합니다. 어떤 재료는 blt-altman-plot 을 살펴보십시오 .
mdewey

답변:


17

이러한 유형의 상황은 중첩 모델에 대한 표준 F- 테스트 로 처리 할 수 ​​있습니다 . 고정 매개 변수를 사용하여 널 모델에 대해 두 매개 변수를 모두 테스트하려고하므로 가설은 다음과 같습니다.

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

F- 검정은 두 모형을 모두 적합시키고 잔차 제곱합을 비교합니다.

에스에스이자형0=나는=1(와이나는엑스나는)2에스에스이자형=나는=1(와이나는β^0β^1엑스나는)2

테스트 통계량은 다음과 같습니다.

에프에프(와이,엑스)=22에스에스이자형0에스에스이자형에스에스이자형.

해당 p- 값은 다음과 같습니다.

(와이,엑스)=에프(와이,엑스)F-Dist(아르 자형|2,2) 아르 자형.


R에서의 구현 : 데이터가 and DATA라는 변수로 불리는 데이터 프레임에 있다고 가정합니다 . F 코드 테스트는 다음 코드를 사용하여 수동으로 수행 할 수 있습니다. 내가 사용한 시뮬레이션 모의 데이터에서 추정 계수가 귀무 가설의 계수에 가깝다는 것을 알 수 있으며 검정의 p- 값은 귀무 가설을 실제 회귀 함수가 정체성 기능.yx

#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);

이 데이터 의 summary출력과 plot모양은 다음과 같습니다.

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

여기에 이미지 설명을 입력하십시오


데이터를 생성하는 방법이 흥미 롭습니다. 변수에 오류를 추가 한 경우 데이터에 가장 적합한 행은 y = x 가 아닙니다 . 이것은 가설 검정이 결정적 부분 y = x뿐만 아니라 오류가 어떻게 분포되는지를 설명하는 비 결정적 부분에 얼마나 의존 하는지를 보여줍니다. 여기서 귀무 가설 검정은보다 구체적인 가설 'y = x + e'에 대한 것이며 'y = x'에 대한 것이 아닙니다. 엑스
Sextus Empiricus

1
네, 잘 발견되었습니다. 시뮬레이트 된 데이터는 표준 동 분산 선형 회귀를 사용하지 않습니다. 시뮬레이션에서 이분산성을 사용하여 OP로 표시된 플롯의 데이터 패턴을 대략적으로 모방하려고했습니다. (그리고 나는 꽤나 좋은 일을했다고 생각합니다!) 이것이 표준 호모 스케 이직 선형 모델을 해당 모델에서 생성되지 않은 시뮬레이션 된 데이터에 맞추는 경우입니다. 그래도 여전히 합법적입니다. 한 모델의 데이터를 시뮬레이션 한 다음 다른 모델에 맞추면 무엇이 나오는지 알 수 있습니다.
복원 Monica Monica

1
나는 심지어 부분의 이분산성을 눈치 채지 sd = 2/sqrt(1+abs(x))못했습니다. (OPs 그래프에서 중앙 벌지 모양이 이상하다는 것을 알았으며 이미지가 '오, 너무 이상하지는 않지만 밀도가 있어야합니다'라고 생각하게 만들었습니다. ). 내가 언급 한 것은 오류를 변수가 아닌 변수에 추가한다는 것 입니다. 이것이 중요하다고 생각합니다. 실제로 이론적 인 관계 측정 할 때 변수 에 약간의 오차 가있을 수 있으며 충분한 데이터가 주어지면 를 위조 할 수 있어야 하지만 실제로는 위조 된 것은와이엑스와이=엑스엑스와이=엑스와이=엑스+이자형
Sextus Empiricus

1
그건 사실이지만, 그것은 변수 오류 모델의 영역으로 당신을 데려 가서 더 복잡하게 만듭니다. OP는이 경우 표준 선형 회귀를 사용하려고한다고 생각합니다.
복원 Monica Monica

나는 그것이 주석이지만, 그럼에도 불구하고 중요한 것에 동의합니다. 질문의 단순성은 (다른 점에서) 당황스럽고, 너무 간단한 표현 일 수 있기 때문에 나를 걱정합니다. 물론 그것은 실제로 달성하려는 것에 달려 있지만 ( '모든 모델이 잘못되었습니다 ...')이 간단한 표현은 표준이 될 수 있으며 명심해야 할 복잡한 추가 질문은 잊혀지거나 절대로 그것을 생각하기 시작하지 않습니다 (다른 답변에서 95 % CI를 언급하는 것은 사람들이 맹목적으로 따르는 표준의 예입니다).
Sextus Empiricus

5

다음은 Julian Faraway의 저서 인 "Linear Models With R (Second Edition)"에서 인용 한 멋진 그래픽 방법입니다. 타원으로 표시되는 절편과 기울기에 대해 95 %의 신뢰 구간이 동시에 발생합니다.

예를 들어, 나는 N (mean = 10, sd = 5) 분포를 갖는 변수 "x"와 그 분포가 N (mean = x, sd = 2) 인 변수 "y"로 500 개의 관측치를 생성했습니다. 그것은 0.9보다 약간의 상관 관계를 산출하며 이는 데이터만큼 엄격하지 않을 수 있습니다.

타원을 확인하여 점 (절편 = 0, 기울기 = 1)이 동시 신뢰 구간 내에 있는지 또는 바깥에 있는지 확인할 수 있습니다.

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)

reprex 패키지 (v0.2.1)로 2019-01-21에 작성


1

n 부트 스트랩 된 샘플로 계수를 계산할 수 있습니다. 이로 인해 정규 분포 계수 값이 발생할 수 있습니다 (중앙 한계 정리). 이를 통해 평균 주위에 t- 값 (n-1 자유도)으로 (예 : 95 %) 신뢰 구간을 구성 할 수 있습니다. CI에 1이 포함되지 않은 경우 통계적으로 유의미하거나 더 정확합니다. 동일한 기울기의 귀무 가설을 기각 할 수 있습니다.


여기에서 공식화 한 것처럼 두 가설 만 개별적으로 테스트하지만 필요한 것은 공동 테스트입니다.
kjetil b halvorsen

0

β0=0β1=1


1
그러나 다른 답변과 마찬가지로 공동 테스트 가 필요 합니다.
kjetil b halvorsen

@kjetilbhalvorsen 오늘 아침에 다른 답변을 읽는 것이 잘못되었음을 깨달았습니다. 삭제하겠습니다.
RScrlli

0

선형 회귀를 맞추고 두 모수에 대해 95 % 신뢰 구간을 확인해야합니다. 기울기의 CI가 1을 포함하고 오프셋의 CI가 0을 포함하면 양면 테스트는 약합니다. (95 %) ^ 2 수준에서-typ-I 위험이 증가하는 두 가지 테스트를 사용하므로

R 사용하기 :

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

또는 당신은 사용

summary(fit)

2 시그마 간격을 스스로 계산하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.