В настоящее время я изучаю ANCOVA, но меня смущает результат.
Я создал модель линейной регрессии, используя mtcars
, вот так:
summary(lm(qsec ~ wt+factor(am), data = mtcars))
Результат:
Call:
lm(formula = qsec ~ wt + factor(am), data = mtcars)
Residuals:
Min 1Q Median 3Q Max
-2.6898 -1.3063 0.0167 1.1398 3.9917
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 22.5990 1.5596 14.490 8.17e-15 ***
wt -1.1716 0.4025 -2.911 0.00685 **
factor(am)1 -2.4141 0.7892 -3.059 0.00474 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.582 on 29 degrees of freedom
Multiple R-squared: 0.267, Adjusted R-squared: 0.2165
F-statistic: 5.283 on 2 and 29 DF, p-value: 0.01106
Как видите, значение p для wt
показало 0,00685, что означало сильную линейную корреляцию между wt
и qsec
, а также am
.
Но когда я запустил код aov
:
summary(aov(qsec ~ wt+factor(am), data = mtcars))
С выходом:
Df Sum Sq Mean Sq F value Pr(>F)
wt 1 3.02 3.022 1.208 0.28081
factor(am) 1 23.41 23.413 9.358 0.00474 **
Residuals 29 72.55 2.502
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Вроде никакого эффекта от wt
на qsec
не было.
Означает ли это, что сильная линейная корреляция между wt
и qsec
может быть подтверждена, но нет большого влияния wt
на qsec
?
Уместно ли мое объяснение?
@Археолог Спасибо за ваш комментарий! Я думаю, что этот ответ очень информативен!
Сначала отбросьте factor
, так как am
имеет только два значения, поэтому превращение его в фактор не повлияет на результаты.
Теперь, что касается тестов для получения значений p, они разные. Для lm
значение wt
p основано на сравнении этих двух моделей.
qsec ~ am
qsec ~ wt + am
так что у нас есть
anova(lm(qsec ~ am, mtcars), lm(qsec ~ mt + am, mtcars))
## Model 1: qsec ~ am
## Model 2: qsec ~ wt + am
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 30 93.758
## 2 29 72.554 1 21.204 8.4753 0.006854 ** <-- 0.00685
summary(lm(qsec ~ wt + am, mtcars))
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 22.5990 1.5596 14.490 8.17e-15 ***
## wt -1.1716 0.4025 -2.911 0.00685 ** <-- 0.00685
## am -2.4141 0.7892 -3.059 0.00474 **
тогда как aov
действительно предназначен для сбалансированных планов, где термины ортогональны, а если нет, как здесь, то он концептуально ортогонализует их последовательно, поэтому в этом случае сравнение эффективно между этими двумя моделями.
qsec ~ r.am
qsec ~ r.wt + r.am
где r.wt — часть wt
, ортогональная отрезку, а r.am — часть am
, ортогональная wt
и отрезку, поэтому мы имеем
r.wt <- resid(lm(wt ~ 1, mtcars))
r.am <- resid(lm(am ~ wt, mtcars))
anova(lm(qsec ~ r.am, mtcars), lm(qsec ~ r.wt + r.am, mtcars))
## Model 1: qsec ~ r.am
## Model 2: qsec ~ r.wt + r.am
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 30 75.576
## 2 29 72.554 1 3.0217 1.2078 0.2808 <------- 0.2808
summary(aov(qsec ~ wt + am, mtcars))
## Df Sum Sq Mean Sq F value Pr(>F)
## wt 1 3.02 3.022 1.208 0.28081 <------- 0.28081
## am 1 23.41 23.413 9.358 0.00474 **
## Residuals 29 72.55 2.502
Это также можно было бы продемонстрировать, выполнив Грэм Шмидт на матрице модели cbind(1, wt, am)
, чтобы сделать столбцы ортогональными. В пакете pracma есть программа Грэма Шмидта.
Спасибо за ваш ответ, который дал мне лучшее понимание ancova как новичка! Ваш ответ кратко и ясно демонстрирует, как два метода по-разному обрабатывают данные. Итак, я могу понять, что значение wt
p, полученное с помощью подхода линейной регрессии, указывает на то, что действительно существует корреляция между wt
и qsec
, но разница влияния на qsec
между wt
из am0
и wt
из am1
незначительна?
Добавление wt
к модели qsec ~ am
значительно улучшает соответствие, но добавление r.wt
к qsec ~ r.am
— нет. О корреляции ничего не сказано. cor(mtcars$qsec, mtcars$wt)
равно cor(mtcars$qsec, r.wt)
.
Большое спасибо за ваше дополнение! Ваш ответ снял все мои вопросы!
Может ли этот ответ здесь помочь? stats.stackexchange.com/questions/55571/….