【问题标题】:How to use lm.fit instead on lm [closed]如何在 lm 上使用 lm.fit [关闭]
【发布时间】:2013-05-16 13:13:59
【问题描述】:

我想使用 lm.fit 来提高速度,但第二个版本提供了 NAs

 sum <-   summary(lm(y~x))
 slope <-  sum$coefficients[2]

 sum <-   lm.fit(as.matrix(x,ncol=1),y)
 slope <-  sum$coefficients[2]

编辑 1

我现在看到 sum$coefficients 只有 1 个值。为什么会这样,它是什么?帮助没有解释这一点

【问题讨论】:

  • 你给了它一个只有一列的设计矩阵。一列 -> 一个系数。
  • 不要采取这种错误的方式,但lm.fit 的文档警告“通常不应直接使用,除非有经验的用户”,而且您似乎对设计矩阵的工作方式感到非常困惑,我建议在尝试使用此功能之前阅读一些线性模型理论。
  • 因此我寻求帮助 -Joran。我现在有了解决方案 - 感谢大家

标签: r lm


【解决方案1】:

提供可重现的示例会更容易。

但是,我的猜测是您在第二种情况下错过了拦截。试试lm.fit(cbind(1,x),y),看看它是否能提供您正在寻找的比较。

其他差异可能是由于lm 在调用lm.fit 之前进行的其他预处理,但如果没有看到x,我们不知道那是什么。诸如删除缺失值、将因子扩展为虚拟变量之类的事情也可能导致差异。

【讨论】:

  • 谢谢格雷格。我尝试了 sum$coefficients[1] ,这似乎给了我一些看起来像斜率的东西。希望是!
  • @ManInMoon,你应该非常小心。我猜你从sum$coefficients[1] 得到的是通过原点拟合的回归斜率,这可能不是你想要的。 (这隐含在格雷格的回答中。)
  • @BenBolker 如果我使用 Greg 的建议。如何找到斜率?是 sum$coefficients[1 OR 2] 吗?
  • @ManInMoon,第一个系数是截距,第二个是斜率,就像lm
猜你喜欢
  • 2020-09-09
  • 2023-01-03
  • 2014-03-02
  • 2018-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
相关资源
最近更新 更多