【问题标题】:lapply produce an error for a repeated regression [duplicate]lapply 为重复回归产生错误[重复]
【发布时间】:2018-05-14 01:08:51
【问题描述】:

我有 677 个因变量和 1 个自变量,如下所示。我想对自变量的每个 677 列进行回归。之前有人问过它,但在我的情况下它不起作用。另外,我想收集一个向量中的系数,然后再回归到其他变量。

'data.frame':   240 obs. of  678 variables:
 $ X1998.01.12  : num  -0.0006958 -0.0019206 -0.0025667 -0.0031404 -0.0000429 ...
 $ X1998.02.12  : num  0.0032112 -0.0002508 0.0010668 -0.0000417 0.0036056 ..

我运行以下代码:

pred = df[,c(1:677)]; 
pred=as.matrix(pred)
y=df[,c(678)]
my_lms <- lapply(de, function(x) lm(pred~y))

但是,我遇到了一个错误:

model.frame.default 中的错误(公式 = pred ~ y,drop.unused.levels = TRUE):
变量“pred”的类型(列表)无效

感谢任何帮助!

注意:在 cmets 之后添加。

list_out <- lapply(colnames(de)[1:677], function(i)
tidy(lm(as.formula(paste(x ~ de$X678,i)), data = de)))

错误信息是

Error in parse(text = x, keep.source = FALSE) : 
  <text>:2:3: unexpected symbol
1: ~ X1
2: x X1
     ^ 

【问题讨论】:

  • 这应该会给出预期的结果:my_lms &lt;- lapply(df, function(x) lm(x~y))
  • 您确定这不仅仅是df 的拼写错误吗?而且由于简单的线性回归在统计上等同于配对 t 检验,因此您应该能够找到可以回答这个问题的重复项。我希望您找到的重复项也会对此类工作中的统计缺陷提出警告。
  • @42 de 是文件名。很抱歉的错误。现在解决了,但我坚持如何在一列中收集系数估计值,以便将其用于以后的回归。任何想法?只是尝试了所有的 cmets,但没有成功。

标签: r regression


【解决方案1】:

您不需要将pred 转换为矩阵。 data.frame 更容易。您可以在下面看到这两种方法。

# data.frame
pred <- df[, c(1:677)]
y <- df[, c(678)]
my_lms <- lapply(pred, function(x) lm(x ~ y))

# matrix
pred <- as.matrix(pred)
my_lms <- lapply(1 : ncol(pred), function(x) lm(pred[, x] ~ y))

另外,检查您是否有正确的因变量和自变量。

编辑整理

library(broom)
my_lms <- lapply(1 : ncol(pred), function(x) tidy(lm(pred[, x] ~ y)))
my_df <- do.call(rbind, my_lms)

【讨论】:

  • 我猜最后一句话是由 teh ratehr 奇怪的请求提示的,这表明独立存在预测变量(在公式的 RHS 上)和因变量(在公式的 LHS。)
  • 是的。现在我看到OP在一开始就提到了。也许我应该删除最后一行。
  • 非常棒!有用。如何收集估计值、系数和 adjR2。我想以矩阵格式堆叠它们。 sapply(my_lms, coef) 尝试过,但列表很多。我想要一个更简单的形式。 @苏
  • @balsano 看看this 是否有帮助。
  • @Suren 在我的情况下它不起作用。说 > library(broom) > tidy(my_lms) tidy.list(my_lms) 中的错误:没有识别此列表的整理方法
猜你喜欢
  • 2018-12-29
  • 1970-01-01
  • 1970-01-01
  • 2021-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多