如何使用R中的分类变量获取标准化的Beta进行回归

问题描述

我想使用lm.beta函数获得标准化的回归系数。但是,当我运行代码时,它给了我一个错误

var(if(is.vector(x)|| is.factor(x))x else as double(x),na.rm = na.rm)中的错误调用因子x上的var(x)已失效。 使用“ all(duplicated(x)[-1L])”之类的东西来测试常数向量。

我认为这是由于模型中的分类变量所致。然后我查看了软件包lm.beta 1的R文档,当我运行示例时,仍然遇到相同的错误代码如下:

## Annette dobson (1990) "An Introduction to Generalized Linear Models". 
## Page 9: Plant Weight Data.
ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20,labels = c("Ctl","Trt"))
weight <- c(ctl,trt)
lm.D9 <- lm(weight ~ group)
# standardize
lm.D9.beta <- lm.beta(lm.D9)
print(lm.D9.beta)
summary(lm.D9.beta)
coef(lm.D9.beta)

我有两个问题:

  1. 可以在lm.beta函数中使用分类变量吗?
  2. 如何避免此错误

感谢任何建议!

解决方法

我遇到了同样的问题,这是因为您的回归模型中有一个变量是分类的。

我认为如果在应用 as.numeric(x) 之前添加 x - lmlm.beta 方程中的一个因子 - 应该可以正常工作。