область видимости из команды add1() в R

Я не уверен, как использовать команду add1. Предположим, у меня есть модель

y=b0+b1*x1

и я хотел бы знать, будет ли лучше добавить больше независимых переменных. Теперь я бы протестировал все модели

y=b0+b1*x1+b2*x2

с разными x2 (мои разные независимые переменные). Команде add1 каким-то образом нужна «область действия». Я не уверен, что это такое. Я не мог узнать, как использовать команду add1. Если я сделаю это:

add1(fittedmodel)

Я получаю сообщение об ошибке, поэтому, полагаю, мне нужно вручную указать, какую переменную я хочу использовать. Это нормально, это на самом деле то, что я хотел, но не был уверен, что это так. Если я сделаю

add1(fittedmodel, scope=x1+x2, test="F")

вставив определенную переменную для x2, я получаю следующий вывод:

Дополнения к одному термину

Модель:

sl ~ le
       Df  Sum of Sq     RSS     AIC F value Pr(>F)
<none>               0.51211 -523.44               
ky      1 0.00097796 0.51113 -521.63  0.1856 0.6676

и я не уверен, хочу ли я этого. Модель, которую он описывает sl~le, не то, что я хотел (sl~le+ky), но может быть это просто модель, с которой он начинается? Тогда я не знаю, что означает <none>. Означает ли это теперь, что значение F-теста для сравнения модели sl~le с моделью sl~le равно 0,1856? Или я неправильно интерпретирую вывод?

Тогда, даже если это правильно, как мне сделать это для модели 'sl~le+ky+le:ky', то есть если у меня есть взаимодействие? Кажется, я не понимаю параметр области видимости в команде add1(), но он мне нужен, потому что без него add1() не работает!


person lisa    schedule 16.10.2012    source источник
comment
Это было бы яснее, если бы вы сделали воспроизводимый пример.   -  person mnel    schedule 17.10.2012


Ответы (2)


Вот пример того, как использовать область действия и интерпретировать результаты add1.

Все это можно было легко найти, прочитав ?add1 и посмотрев примеры.

# create some data
set.seed(1)
DF <- data.frame(x1 = sample(letters[1:2], 50, replace = TRUE), x2 = sample(letters[3:4], 
    50, replace = TRUE))

library(plyr)

DF <- ddply(DF, .(x1, x2), mutate, y = sample(1:10, 1))
DF <- ddply(DF, .(x1, x2), mutate, y = y + rnorm(length(y), 0, 2))

# a simple model with just y~x1
simple <- lm(y ~ x1, data = DF)


# add a single term

add1(simple, scope = ~x1 + x2, test = "F")

## Single term additions
## 
## Model:
## y ~ x1
##        Df Sum of Sq RSS AIC F value Pr(>F)   
## <none>              565 125                  
## x2      1      93.9 471 118    9.37 0.0036 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Таблицы проходят через все возможности добавления 1 переменной с учетом области действия и, как указано в справке (?add1) в разделе «Значение».

Ценность

Объект класса anova, обобщающий различия в подгонке между моделями.

Таким образом, в нем говорится, что добавление x2 к модели, содержащей x1, даст более низкий AIC, а тест F проверяет разницу между моделями.

Если вы хотите проверить, улучшает ли модель добавление взаимодействия, вам нужно сначала подогнать модель основных эффектов, а затем использовать область видимости ~x1*x2, которая расширяется до ~x1+x2+x1:x2.

simple_2 <- lm(y ~ x1 + x2, data = DF)
add1(simple_2, scope = ~x1 * x2, test = "F")

## Single term additions
## 
## Model:
## y ~ x1 + x2
##        Df Sum of Sq RSS   AIC F value  Pr(>F)    
## <none>              471 118.2                    
## x1:x2   1       289 182  72.6      73 4.7e-11 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
person mnel    schedule 16.10.2012

В этом случае вы могли бы использовать функцию drop1(). drop1(fittedmodel) используется, когда мы делаем обратный выбор. Он начинается с полной модели и возвращает p-значение для каждого случая, когда один предиктор отбрасывается. Поэтому, если у вас есть только 2 предиктора для сравнения, функция drop1() справилась бы лучше.

person Zach Kim    schedule 31.03.2018