【问题标题】:Perform same linear regression on different factors within same data frame对同一数据框中的不同因素执行相同的线性回归
【发布时间】:2016-04-17 08:03:02
【问题描述】:

我正在处理一个非常大的数据集,并在下面列出了一个简单的版本

group <- c(rep("A", 3), rep("B", 3), rep("C", 3))
X <- c(0, 1, 2, 0, 1, 2, 0, 1, 2)
Y <- c(0, 2, 4, 0, 3, 6, 0, 4, 8)   
df <- data.frame(group, X, Y)

我试图通过线性回归获得对应于 A、B 和 C 组(因子变量)的三行的系数......从下面的代码中运气不佳......

我遇到了一些 R 代码,其中建议在自变量上使用“*”符号来(在此示例中)计算线 A、B 和 C 的斜率。A、B 和C 是一个因子变量。

lin.reg <- lm(Y ~ X*group, data = df)
coefficients_for_ABC <- summary(lin.reg)

我认为我遇到的这段代码不正确,我需要应用 by 函数或类似代码。

【问题讨论】:

标签: r linear-regression


【解决方案1】:

这应该可行。在函数内部做你想做的事情!

lapply(split(df,df$group),function(x){lm( x$Y ~ x$X )})

【讨论】:

  • 感谢@ChirayuChamoli,这对这里的示例数据很有效。当我将它应用于我的大型数据集时,我收到以下错误: lm.fit(x, y, offset = offset,singular.ok = single.ok, ...) 中的错误:0 (non-NA) cases Do你知道为什么这可能是或者这是另一个线程的问题吗?我已经使用 sapply(newdf, function(x) sum(is.na(x))) 检查了数据框中是否存在 NA 和零。
  • @Ben 这似乎也适用于 NA。无论如何,如果使用 NA,请在 lm 中添加 na.action=na.omit。
猜你喜欢
  • 2014-07-20
  • 1970-01-01
  • 2021-04-22
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-11
  • 1970-01-01
相关资源
最近更新 更多