【发布时间】:2014-08-09 21:54:50
【问题描述】:
对于这个愚蠢的问题,我深表歉意……但我似乎找不到简单的解决方案
我想从拟合的线性模型中提取标准化系数(在 R 中) 必须有一种简单的方法或功能可以做到这一点。你能告诉我这是什么吗?
编辑(遵循下面的一些 cmets): 我可能应该提供有关我的问题的更多上下文信息。我正在为一群心理学家教授一个介绍性的 R 研讨会。对他们来说,一个无法获得标准化系数的线性模型就好像你根本没有运行这个模型(好吧,这有点夸张,但你明白了)。当我们做了一些回归时,这是他们的第一个问题,这(我的错)我没有预料到(我不是心理学家)。当然我可以自己编程,当然我可以寻找为我做这件事的包。但同时,我确实认为这是线性模型的一种基本且常见的必需功能,当场我认为应该有一个基本功能可以做到这一点,而无需安装越来越多的包(这被认为是初学者的困难)。所以我问了(这也是向他们展示如何在需要帮助时获得帮助的机会)。
对于那些认为我问了一个愚蠢的问题的人,我深表歉意,非常感谢那些花时间回答它的人。
【问题讨论】:
-
试试这个函数
stdcoeff <- function (MOD) {b <- summary(MOD)$coef[-1, 1] ; sx <- sd(MOD$model[-1]); sy <- sd(MOD$model[1]); beta <- b * sx/sy ; return(beta) },其中MOD是你的模型,由lm函数生成,所以你将它用作stdcoeff(lm(...))(我没有写,只是在网络,所以不作为答案发布) -
我喜欢this approach。它将输入变量重新调整为标准偏差的两倍,以便于解释。它的
standardize函数可以在arm包中找到。 -
@CarlWitthoft,您在帮助文件中哪里可以看到这个问题的解决方案? @DavidArenburg 的评论或下面的
QuantPsyc::lm.beta答案是否正确取决于 OP 所指的“标准化”(他们没有具体说明) -
哎呀,我对“几个定义”实际上是错误的——抱歉。我太快地阅读了@DavidArenburg 的评论(并且不记得
lm将模型框架存储在那里);他的注释与QuantPsyc::lm.beta中的内部代码相同 -
whut evvarrr.. 抱歉在这里发牢骚。
标签: r regression lm beta standardized