我不确定如何使用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()不起作用!
答案 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()
函数可以做得更好。