1

我不确定如何使用 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~lesl~le0.1856?还是我错误地解释了输出?

那么,即使这是正确的,我该如何为模型“sl~le+ky+le:ky”做这件事,也就是说,如果我确实有交互?add1() 命令中的 scope 参数我好像看不懂,但是我需要它,因为没有它, add1() 就不起作用!

4

2 回答 2

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
于 2012-10-16T23:15:20.777 回答
0

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

于 2018-03-31T10:02:25.380 回答