R 中的虚拟变量
Dummy variables in R
我正在构建一个线性模型来评估距栖息地边界的距离对昆虫目丰富度的影响。使用的设备存在一些差异,因此我将设备作为分类变量包括在内,以确保它不会对丰富度产生重大影响。
分类因子是 3 级的,所以我要求 r 使用代码在 lm 中生成虚拟变量:
lm(Richness ~ Distances + factor(Equipment), data = Data)
当我询问模型的摘要时,我可以看到其中两个级别及其系数。我假设这意味着 r 正在使用其中一个级别作为 "standard" 来比较其他级别的系数。
如何找到第三级的系数以查看它对模型的影响?
谢谢
您可以lm(y~x-1)
去除截距,在您的情况下截距是因素之一的参考水平。话虽如此,使用其中一个级别作为参考是有统计原因的。
要确定如何提取系数,这里有一个简单的例子:
# load data
data(mtcars)
head(mtcars)
# what are the means of wt given the factor carb?
(means <- with(mtcars, tapply(wt, factor(carb), mean)))
# run the lm
mod <- with(mtcars, lm(wt~factor(carb)))
# extract the coefficients
coef(mod)
# the intercept is the reference level (i.e., carb 1)
coef(mod)[1]
coef(mod)[2:6]
coef(mod)[1] + coef(mod)[2:6]
means
所以你可以看到,在这个简单的例子中,系数只是简单地添加到参考水平(即截距)。但是,如果你有一个协变量,它会变得更复杂
mod2 <- lm(wt ~ factor(carb) + disp, data=mtcars)
summary(mod2)
截距现在是 disp = 0 时的碳水化合物 1。
我正在构建一个线性模型来评估距栖息地边界的距离对昆虫目丰富度的影响。使用的设备存在一些差异,因此我将设备作为分类变量包括在内,以确保它不会对丰富度产生重大影响。
分类因子是 3 级的,所以我要求 r 使用代码在 lm 中生成虚拟变量:
lm(Richness ~ Distances + factor(Equipment), data = Data)
当我询问模型的摘要时,我可以看到其中两个级别及其系数。我假设这意味着 r 正在使用其中一个级别作为 "standard" 来比较其他级别的系数。
如何找到第三级的系数以查看它对模型的影响?
谢谢
您可以lm(y~x-1)
去除截距,在您的情况下截距是因素之一的参考水平。话虽如此,使用其中一个级别作为参考是有统计原因的。
要确定如何提取系数,这里有一个简单的例子:
# load data
data(mtcars)
head(mtcars)
# what are the means of wt given the factor carb?
(means <- with(mtcars, tapply(wt, factor(carb), mean)))
# run the lm
mod <- with(mtcars, lm(wt~factor(carb)))
# extract the coefficients
coef(mod)
# the intercept is the reference level (i.e., carb 1)
coef(mod)[1]
coef(mod)[2:6]
coef(mod)[1] + coef(mod)[2:6]
means
所以你可以看到,在这个简单的例子中,系数只是简单地添加到参考水平(即截距)。但是,如果你有一个协变量,它会变得更复杂
mod2 <- lm(wt ~ factor(carb) + disp, data=mtcars)
summary(mod2)
截距现在是 disp = 0 时的碳水化合物 1。