답변:
두 모델이 동일한 가설에 대해 검정하고 동일한 인코딩을 사용하는 경우 분산 분석 및 선형 회귀 분석은 동일합니다. 모형의 기본 목표는 다릅니다. 분산 분석은 데이터의 범주 평균 간의 차이를 나타내는 데 주로 관심이있는 반면 선형 회귀 분석은 표본 평균 반응 및 관련 를 추정하는 데 주로 관심이 있습니다.
다소 독단적으로 ANOVA를 더미 변수가있는 회귀로 설명 할 수 있습니다. 범주 형 변수를 사용한 단순 회귀 분석에서이 경우를 쉽게 알 수 있습니다. 범주 형 변수는 지표 매트릭스 ( 0/1
피험자가 주어진 그룹의 일부인지 여부 에 따라 달라지는 매트릭스)로 인코딩 된 다음 선형 회귀로 설명 된 선형 시스템의 솔루션에 직접 사용됩니다. 5 개의 그룹이있는 예를 봅시다. 인수를 위해 평균 group1
은 1, 평균 group2
은 2, ...은 평균 group5
5와 같다고 가정합니다 (MATLAB을 사용하지만 R에서도 똑같은 것이 동일합니다).
rng(123); % Fix the seed
X = randi(5,100,1); % Generate 100 random integer U[1,5]
Y = X + randn(100,1); % Generate my response sample
Xcat = categorical(X); % Treat the integers are categories
% One-way ANOVA
[anovaPval,anovatab,stats] = anova1(Y,Xcat);
% Linear regression
fitObj = fitlm(Xcat,Y);
% Get the group means from the ANOVA
ANOVAgroupMeans = stats.means
% ANOVAgroupMeans =
% 1.0953 1.8421 2.7350 4.2321 5.0517
% Get the beta coefficients from the linear regression
LRbetas = [fitObj.Coefficients.Estimate']
% LRbetas =
% 1.0953 0.7468 1.6398 3.1368 3.9565
% Rescale the betas according the intercept
scaledLRbetas = [LRbetas(1) LRbetas(1)+LRbetas(2:5)]
% scaledLRbetas =
% 1.0953 1.8421 2.7350 4.2321 5.0517
% Check if the two results are numerically equivalent
abs(max( scaledLRbetas - ANOVAgroupMeans))
% ans =
% 2.6645e-15
이 시나리오에서 볼 수 있듯이 결과는 정확히 동일합니다. 미세한 수치 차이는 설계가 완벽하게 균형을 이루지 못하고 기초 추정 절차로 인해 발생합니다. 분산 분석은 수치 적 오류를 조금 더 적극적으로 축적합니다. 그런 점에서 우리는 절편에 맞습니다 LRbetas(1)
. 우리는 절편이없는 모델에 적합 할 수 있지만 "표준"선형 회귀는 아닙니다. (이 경우 결과는 분산 분석에 더 가깝습니다.)
abs( fitObj.anova.F(1) - anovatab{2,5} )
% ans =
% 2.9132e-13
절차는하지만 서로 다른 원문과 같은 가설을 테스트하기 때문이다 : "경우 ANOVA는 질적으로 확인합니다 비율이 더 그룹이 믿기 어려운 없다는 것을 제안하기에 충분히 높다 "경우 선형 회귀가 질적으로 확인합니다 동안 " 비율이 절편을 제안 할만큼 높은 만 모델이 적절하지 않을 수 있습니다 ".
(이것은 " 무 가설 하에서 관찰 된 값과 같거나 큰 값을 볼 수있는 가능성 "에 대한 다소 자유로운 해석이며 이는 교과서 정의가 아닙니다.)
" 분산 분석 (ANOVA) 에 대한 질문의 마지막 부분으로 되돌아 가면 (평균이 같지 않다고 가정 할 때) 선형 모형의 계수에 대해 아무 것도 알려주지 않습니다. 이제는 설계가 간단하고 균형 잡히고 선형 모델이 할 수있는 모든 것을 알려줍니다. 그룹 평균의 신뢰 구간은 와 동일합니다.회귀 모델에서 다중 공변량을 추가하기 시작할 때, 단순 일원 분산 분석에는 직접적인 동등성이 없습니다. 이 경우, 일원 분산 분석에 직접 사용할 수없는 정보로 선형 회귀의 평균 반응을 계산하는 데 사용되는 정보를 보강합니다. 나는 한 번 더 ANOVA 용어로 표현할 수 있다고 믿지만 그것은 대부분 학업 운동입니다.
이 문제에 대한 흥미로운 논문은 Gelman의 2005 년 논문 : 분산 분석-그 어느 때보 다 중요한지입니다 . 몇 가지 중요한 사항이 제기되었습니다. 나는이 논문을 전적으로지지하지는 않는다 (나는 개인적으로 McCullach의 견해와 훨씬 더 부합한다고 생각한다).
마지막으로 : 혼합 효과 모델 이있는 경우 플롯이 두껍게 표시됩니다 . 여기에는 데이터 그룹화와 관련하여 성가신 정보 나 실제 정보로 간주 할 수있는 개념이 다릅니다. 이러한 문제는이 질문의 범위를 벗어 났지만, 나는 그것이 고개를 끄덕일만한 가치가 있다고 생각합니다.
범주 형 ( 더미 코딩 된 ) 회귀자를 사용 하는 OLS가 ANOVA 의 요인 과 동일 하다는 생각에 색을 입 힙니다 . 두 경우 모두 수준 (또는 분산 분석의 경우 그룹 )이 있습니다.
OLS 회귀 분석에서는 회귀 변수에 연속 변수가있는 것이 가장 일반적입니다. 이들은 범주 형 변수와 종속 변수 (DC) 사이의 적합 모형의 관계를 논리적으로 수정합니다. 그러나 병렬을 인식 할 수없는 시점까지는 아닙니다.
mtcars
데이터 세트를 기반으로 먼저 lm(mpg ~ wt + as.factor(cyl), data = mtcars)
연속 변수 wt
(가중치)에 의해 결정된 기울기 와 범주 형 변수 cylinder
(4 개, 6 개 또는 8 개 실린더) 의 영향을 예상하는 다른 절편 으로 모델 을 시각화 할 수 있습니다 . 일원 분산 분석과 평행을 이루는 것이이 마지막 부분입니다.
오른쪽의 서브 플롯에서 그래픽으로 보자 (왼쪽의 3 개의 서브 플롯은 곧바로 논의되는 ANOVA 모델과의 측면 비교를 위해 포함됨).
각 실린더 엔진은 색상으로 구분되며, 다른 인터셉트가있는 적합 선과 데이터 클라우드 간의 거리는 ANOVA의 그룹 내 변동과 같습니다. 연속 변수 (와 OLS 모델에서 인터셉트가 주목 weight
)으로 인해 효과를 수학적으로 서로 다른 집단 내 ANOVA 수단의 값과 동일하지 않은 weight
평균 : 및 다른 모델 행렬 (아래 참조) mpg
에 대한 예를 들어, 4 실린더 자동차 mean(mtcars$mpg[mtcars$cyl==4]) #[1] 26.66364
는 OLS "기준선"절편 (일반적으로 cyl==4
(R에서 가장 낮은 숫자에서 가장 높은 숫자 순서로 반영 ))은 크게 다릅니다 summary(fit)$coef[1] #[1] 33.99079
. 선의 기울기는 연속 변수의 계수입니다 weight
.
weight
이러한 선을 정신적으로 직선화하여 수평선으로 되돌려 서 효과를 억제하려고 aov(mtcars$mpg ~ as.factor(mtcars$cyl))
하면 왼쪽에있는 3 개의 하위 플로트에있는 모형의 ANOVA 플롯으로 끝납니다 . weight
회귀 밖으로 지금이지만, 다른 인터셉트하는 점에서 관계는 크게 보존 - 우리는 단순히 전용 "볼"수있는 영상 장치로서, 반 시계 방향으로 회전하고 다시 각각의 상이한 레벨 (위한 이전 중첩 플롯 밖으로 확산되고 우리는 두 개의 서로 다른 모델을 비교하기 때문에 수학적 평등이 아닙니다!).
cylinder
그리고 이러한 수직 세그먼트의 합계를 통해 잔차를 수동으로 계산할 수 있습니다.
mu_mpg <- mean(mtcars$mpg) # Mean mpg in dataset
TSS <- sum((mtcars$mpg - mu_mpg)^2) # Total sum of squares
SumSq=sum((mtcars[mtcars$cyl==4,"mpg"]-mean(mtcars[mtcars$cyl=="4","mpg"]))^2)+
sum((mtcars[mtcars$cyl==6,"mpg"] - mean(mtcars[mtcars$cyl=="6","mpg"]))^2)+
sum((mtcars[mtcars$cyl==8,"mpg"] - mean(mtcars[mtcars$cyl=="8","mpg"]))^2)
결과 : SumSq = 301.2626
및 TSS - SumSq = 824.7846
. 다음과 비교하십시오 :
Call:
aov(formula = mtcars$mpg ~ as.factor(mtcars$cyl))
Terms:
as.factor(mtcars$cyl) Residuals
Sum of Squares 824.7846 301.2626
Deg. of Freedom 2 29
cylinder
회귀 분석으로 범주 만있는 선형 모형을 ANOVA로 테스트하는 것과 정확히 동일한 결과 :
fit <- lm(mpg ~ as.factor(cyl), data = mtcars)
summary(fit)
anova(fit)
Analysis of Variance Table
Response: mpg
Df Sum Sq Mean Sq F value Pr(>F)
as.factor(cyl) 2 824.78 412.39 39.697 4.979e-09 ***
Residuals 29 301.26 10.39
따라서 우리가 보는 것은 모형에 의해 설명되지 않은 총 분산의 일부인 잔차와 분산은 유형의 OLS lm(DV ~ factors)
또는 ANOVA ( aov(DV ~ factors)
) 를 호출하든 상관없이 동일하다는 것입니다. 연속 변수 모델은 동일한 시스템으로 끝납니다. 마찬가지로, 모델을 전체적으로 또는 옴니버스 ANOVA (레벨 별이 아님)로 평가할 때 자연스럽게 동일한 p- 값을 얻습니다 F-statistic: 39.7 on 2 and 29 DF, p-value: 4.979e-09
.
이것은 개별 수준의 테스트가 동일한 p- 값을 산출한다는 것을 의미하지는 않습니다. OLS의 경우 다음을 호출 summary(fit)
하여 얻을 수 있습니다.
lm(formula = mpg ~ as.factor(cyl), data = mtcars)
Estimate Std. Error t value Pr(>|t|)
(Intercept) 26.6636 0.9718 27.437 < 2e-16 ***
as.factor(cyl)6 -6.9208 1.5583 -4.441 0.000119 ***
as.factor(cyl)8 -11.5636 1.2986 -8.905 8.57e-10 ***
p adjusted
Tukey multiple comparisons of means
95% family-wise confidence level
Fit: aov(formula = mtcars$mpg ~ as.factor(mtcars$cyl))
$`as.factor(mtcars$cyl)`
diff lwr upr p adj
6-4 -6.920779 -10.769350 -3.0722086 0.0003424
8-4 -11.563636 -14.770779 -8.3564942 0.0000000
8-6 -4.642857 -8.327583 -0.9581313 0.0112287
결국, 후드 아래의 엔진을 들여다 보는 것보다 더 안심할 수있는 것은 없습니다. 이는 모델 행렬과 기둥 공간의 돌출부 외에는 없습니다. 이것은 분산 분석의 경우 실제로 매우 간단합니다.
cyl 4
cyl 6
cyl 8
반면에 OLS 회귀에 대한 모형 행렬은 다음과 같습니다.
weight
displacement
lm(mpg ~ wt + as.factor(cyl), data = mtcars)
weight
weight
cyl 4
cyl 4
cyl 6
cyl 8
fit <- lm(mpg ~ wt + as.factor(cyl), data = mtcars)
summary(fit)$coef[3] #[1] -4.255582 (difference between intercepts cyl==4 and cyl==6 in OLS)
fit <- lm(mpg ~ as.factor(cyl), data = mtcars)
summary(fit)$coef[2] #[1] -6.920779 (difference between group mean cyl==4 and cyl==6)
Antoni Parellada와 usεr11852는 매우 좋은 대답을했습니다. 와 코딩 관점에 대한 귀하의 질문을 해결할 것입니다 R
.
분산 분석은 선형 모형의 계수에 대해 아무 것도 알려주지 않습니다. 선형 회귀 분석은 어떻게 분산 분석과 동일합니까?
실제로 우리는 aov
in R
과 같은 기능을 수행 할 수 있습니다 lm
. 여기 몇 가지 예가 있어요.
> lm_fit=lm(mpg~as.factor(cyl),mtcars)
> aov_fit=aov(mpg~as.factor(cyl),mtcars)
> coef(lm_fit)
(Intercept) as.factor(cyl)6 as.factor(cyl)8
26.663636 -6.920779 -11.563636
> coef(aov_fit)
(Intercept) as.factor(cyl)6 as.factor(cyl)8
26.663636 -6.920779 -11.563636
> all(predict(lm_fit,mtcars)==predict(aov_fit,mtcars))
[1] TRUE
보시다시피, ANOVA 모델에서 계수를 얻을 수있을뿐만 아니라 선형 모델과 마찬가지로 예측에 사용할 수도 있습니다.
도움말 파일에서 aov
기능을 확인하면
이는 선형 모델을 균형 또는 불균형 실험 설계에 맞추기위한 래퍼를 제공합니다 . lm과의 주요 차이점은 인쇄, 요약 등이 적합을 처리하는 방식에 있습니다. 이는 선형 모델이 아닌 분산 분석의 전통적인 언어로 표현됩니다.