답변:
나는 분명한 것이 빠져 있는지 궁금하지만 ANCOVA를 사용하여 통계적으로 이것을 할 수 없습니까? 중요한 문제는 두 회귀의 기울기 가 오류 로 추정된다는 것 입니다. 그들은 전체 인구의 기울기를 추정 한 것입니다. 두 회귀선 이 모집단에 평행인지 아닌지에 대한 우려가 있다면 비교하는 것이 합리적이지 않습니다. 와 정확한 동등성을 위해 직접; 그것들은 모두 고려해야 할 오류 / 불확실성에 종속됩니다.
통계적인 관점에서이 점을 생각하면 데이터를 결합 할 수 있습니다. 과 의미있는 방식으로 두 데이터 세트 모두 (예 : 과 두 세트에서 두 변수에 대해 비슷한 범위를 가진 두 모집단에서 도출되는 것은 두 모집단에서 다른 변수 사이의 관계 일뿐입니다) 다음 두 모델에 적합 할 수 있습니다.
과
어디 모델 계수이고 은 각 관측치에 속하는 데이터 세트를 나타내는 그룹화 변수 / 요인입니다.
ANOVA 테이블 또는 F- 비율을 사용하여 더 복잡한 두 번째 모델이 더 간단한 모델보다 데이터에 더 잘 맞는지 테스트 할 수 있습니다. 더 간단한 모델은 두 선의 기울기가 동일하다는 것을 나타냅니다.) 그러나 선은 금액만큼 서로 오프셋됩니다. .
더 복잡한 모델에는 선의 기울기와 그룹화 변수 간의 상호 작용이 포함됩니다. 이 교호 작용 항의 계수가 0과 크게 다르거 나 ANOVA / F- 비가 더 복잡한 모형이 데이터에 더 잘 적합 함을 나타내면 두 선이 평행하다는 귀무 가설을 기각해야합니다.
다음은 더미 데이터를 사용하는 R의 예입니다. 먼저 경사가 같은 데이터 :
set.seed(2)
samp <- factor(sample(rep(c("A","B"), each = 50)))
d1 <- data.frame(y = c(2,5)[as.numeric(samp)] + (0.5 * (1:100)) + rnorm(100),
x = 1:100,
g = samp)
m1 <- lm(y ~ x * g, data = d1)
m1.null <- lm(y ~ x + g, data = d1)
anova(m1.null, m1)
어느 것이
> anova(m1.null, m1)
Analysis of Variance Table
Model 1: y ~ x + g
Model 2: y ~ x * g
Res.Df RSS Df Sum of Sq F Pr(>F)
1 97 122.29
2 96 122.13 1 0.15918 0.1251 0.7243
이 데이터 샘플에서 동일한 기울기의 귀무 가설을 기각하지 못했음을 나타냅니다. 물론, 실제로 차이가 있다면 차이를 감지 할 수있는 충분한 힘을 가졌기 때문에 샘플 크기가 너무 작아서 예상되는 효과를 얻지 못하기 때문에 널을 잘못 기각하지 못했을 것입니다.
이제 다른 경사로.
set.seed(42)
x <- seq(1, 100, by = 2)
d2 <- data.frame(y = c(2 + (0.5 * x) + rnorm(50),
5 + (1.5 * x) + rnorm(50)),
x = x,
g = rep(c("A","B"), each = 50))
m2 <- lm(y ~ x * g, data = d2)
m2.null <- lm(y ~ x + g, data = d2)
anova(m2.null, m2)
다음을 제공합니다.
> anova(m2.null, m2)
Analysis of Variance Table
Model 1: y ~ x + g
Model 2: y ~ x * g
Res.Df RSS Df Sum of Sq F Pr(>F)
1 97 21132.0
2 96 103.8 1 21028 19439 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
여기서 우리는 귀무 가설에 대한 실질적인 증거가 있으므로 대안에 찬성하여 거부 할 수 있습니다 (즉, 두 선의 기울기가 같다는 가설을 기각합니다).
내가 장착 한 두 모델의 교호 작용 항)는 두 그룹의 예상 경사 차이를 제공합니다. 첫 번째 모델의 경우 기울기 차이의 추정치는 작습니다 (~ 0.003)
> coef(m1)
(Intercept) x gB x:gB
2.100068977 0.500596394 2.659509181 0.002846393
그리고 이것에 대한 -test는이 기울기 차이가 0이라는 귀무 가설을 기각하지 못합니다.
> summary(m1)
Call:
lm(formula = y ~ x * g, data = d1)
Residuals:
Min 1Q Median 3Q Max
-2.32886 -0.81224 -0.01569 0.93010 2.29984
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.100069 0.334669 6.275 1.01e-08 ***
x 0.500596 0.005256 95.249 < 2e-16 ***
gB 2.659509 0.461191 5.767 9.82e-08 ***
x:gB 0.002846 0.008047 0.354 0.724
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.128 on 96 degrees of freedom
Multiple R-squared: 0.9941, Adjusted R-squared: 0.9939
F-statistic: 5347 on 3 and 96 DF, p-value: < 2.2e-16
두 그룹에 대한 경사를 다르게 설정 한 두 번째 데이터 세트에 적합한 모형을 살펴보면 두 선의 경사의 추정 된 차이가 ~ 1 단위임을 알 수 있습니다.
> coef(m2)
(Intercept) x gB x:gB
2.3627432 0.4920317 2.8931074 1.0048653
그룹 "A"의 기울기는 ~ 0.49 ( x
위 출력)이며, 그룹 "B"의 기울기를 얻으려면 그룹 "A"의 기울기에 차이 기울기 (상호 작용 항으로 기억)를 추가해야합니다. ; ~ 0.49 + ~ 1 = ~ 1.49. 이것은 그룹 "B"의 명시된 기울기와 1.5에 매우 가깝습니다. ㅏ이 기울기 차이에 대한 -test는 차이의 추정치가 0에서 멀어짐을 나타냅니다.
> summary(m2)
Call:
lm(formula = y ~ x * g, data = d2)
Residuals:
Min 1Q Median 3Q Max
-3.1962 -0.5389 0.0373 0.6952 2.1072
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.362743 0.294220 8.031 2.45e-12 ***
x 0.492032 0.005096 96.547 < 2e-16 ***
gB 2.893107 0.416090 6.953 4.33e-10 ***
x:gB 1.004865 0.007207 139.424 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.04 on 96 degrees of freedom
Multiple R-squared: 0.9994, Adjusted R-squared: 0.9994
F-statistic: 5.362e+04 on 3 and 96 DF, p-value: < 2.2e-16
첫 번째 질문은 실제로 기하학입니다. 두 줄의 양식이있는 경우 :
그런 경우 그들은 평행 . 따라서 경사가 같으면 선이 평행합니다.
두 번째 질문에는 , 어디 선이 이루는 각도입니다 축 선의 기울기입니다. 그래서
도 단위로 변환하려면 . 따라서 학위의 답은
에 대한 R 함수 이라고 atan
합니다.
샘플 R 코드 :
> x<-rnorm(100)
> y<-x+1+rnorm(100)/2
> mod<-lm(y~x)
> mod$coef
(Intercept) x
0.9416175 0.9850303
> mod$coef[2]
x
0.9850303
> atan(mod$coef[2])*360/2/pi
x
44.56792
마지막 줄은 도입니다.
최신 정보. 음의 기울기 값을도 단위로 변환하려면 다른 규칙을 따라야합니다. x 축과의 각도는 x 축 위에 있다고 가정하기 때문에 x 축과의 각도는 0에서 180 사이의 값을 얻을 수 있습니다. 따라서 음수 값의 경우공식은 다음과 같습니다.
노트. 고등학교 삼각법을 기억하는 것이 즐거웠지만 실제로 유용한 답변은 Gavin Simpson이 제공 한 것입니다. 회귀선의 기울기는 랜덤 변수이므로이를 비교하기 위해 통계적 가설 체계를 사용해야합니다.
... @mpiktas의 대답에 이어 lm
객체 에서 경사를 추출 하고 위의 공식을 적용하는 방법은 다음과 같습니다 .
# prepare some data, see ?lm
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)
# extract the slope (this is also used to draw a regression line if you wrote abline(lm.D9)
coefficients(lm.D9)["groupTrt"]
groupTrt
-0.371
# use the arctan*a1 / (360 / (2*pi)) formula provided by mpiktas
atan(coefficients(lm.D9)["groupTrt"]) * (360/(2 * pi))
groupTrt
-20.35485
180-atan(coefficients(lm.D9)["groupTrt"]) * (360/(2 * pi))
groupTrt
200.3549