Как объяснить результат ANCOVA и линейной регрессии

В настоящее время я изучаю 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? Уместно ли мое объяснение?

Может ли этот ответ здесь помочь? stats.stackexchange.com/questions/55571/….

Archeologist 17.02.2023 17:29

@Археолог Спасибо за ваш комментарий! Я думаю, что этот ответ очень информативен!

Moliz 18.02.2023 04:51
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала отбросьте 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 незначительна?

Moliz 18.02.2023 04:48

Добавление wt к модели qsec ~ am значительно улучшает соответствие, но добавление r.wt к qsec ~ r.am — нет. О корреляции ничего не сказано. cor(mtcars$qsec, mtcars$wt) равно cor(mtcars$qsec, r.wt) .

G. Grothendieck 18.02.2023 13:38

Большое спасибо за ваше дополнение! Ваш ответ снял все мои вопросы!

Moliz 18.02.2023 14:47

Другие вопросы по теме