范围来自add1() - R中的命令

时间:2012-10-16 21:19:28

标签: r linear-regression anova

我不确定如何使用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>意味着什么。 这是否意味着将模型sl~le与模型sl~le进行比较的F-Test值为0.1856?或者我解释输出错误?

然后,即使这是正确的,我怎么做一个模型'sl~le + ky + le:ky',也就是说我确实有互动? 我似乎不理解add1()命令中的scope参数,但我需要它,因为没有它,add1()不起作用!

2 个答案:

答案 0 :(得分:0)

以下是如何使用范围并解释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

答案 1 :(得分:0)

在这种情况下,您可以使用drop1()功能。我们进行后向选择时使用drop1(fittedmodel)。它从完整模型开始,并在丢弃一个预测变量时返回每种情况的p值。因此,如果您只有2个预测变量可供比较,drop1()函数可以做得更好。