【问题标题】:How to get standardized betas for regression, with categorical variables in R如何使用 R 中的分类变量获得回归的标准化 beta
【发布时间】:2020-09-02 02:51:43
【问题描述】:

我想使用 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])' 的东西来测试一个常数向量。

我认为这是由于我的模型中的一个分类变量。然后我查看了 Package ‘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. 如何避免这个错误?

感谢您的任何建议!

【问题讨论】:

  • 我无法重现此错误。该代码可以在我的电脑上运行,您可以尝试更新 R 和已安装的软件包。

标签: r regression


【解决方案1】:

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

我认为,如果您在应用lm.beta 之前添加as.numeric(x)xlm 等式中的一个因素),它应该可以正常工作。

【讨论】:

    猜你喜欢
    • 2021-01-20
    • 2018-11-23
    • 2022-11-29
    • 2017-03-31
    • 2020-10-24
    • 2016-02-28
    • 2020-01-12
    • 2020-08-02
    • 2013-10-09
    相关资源
    最近更新 更多