【问题标题】:Regression loops [duplicate]回归循环[重复]
【发布时间】:2019-02-18 12:06:03
【问题描述】:

Ciao,我有几列代表分数。我想估计每个 SCORE 是 STUDYTIME 的函数的模型。所以我想运行与 SCORE 列一样多的模型,所有简单的模型都是 STUDYTIME 的函数。然后我想将 STUDYTIME 的系数存储在一个新列中,该列的行名等于 SCORE 列名。最后,我不确定如何对线性模型进行聚类,因为学生每个人都在数据中两次。

这是我的复制示例。这是我现在拥有的数据:

df <- data.frame(replicate(5, rnorm(10)))
df[1]<-c(1,1,2,2,3,3,4,4,5,5)
colnames(df) <- c('student','studytime', 'score1','score2','score3')

这是我的编码尝试:

for (i in 1:nrow(df)) {
  dfx         <- df[,i]
  lm    <- lm(dfx[,3:5] ~ study_time)
  resdat[,i] = summary(lm)$coefficients[2]
}

【问题讨论】:

    标签: r loops store


    【解决方案1】:

    您可以简单地使用lapplysapply 函数来完成此操作。

    这里是r代码:

    生成数据

    df <- data.frame(replicate(5, rnorm(10)))
    df[1]<-c(1,1,2,2,3,3,4,4,5,5)
    colnames(df) <- c('student','studytime', 'score1','score2','score3')
    

    存储结果

    Results <- lapply(df[, -c(1,2)], FUN = function(x) lm(x ~ df$studytime))
    Coef <- sapply(Results, FUN = coefficients)
    

    【讨论】:

    • Neeraj:这实际上是倒退。我想回归学习时间的 SCORE 变量。
    • 只是交换因变量和自变量。
    • 这很好@Neeraj。最后,如果需要存储 p 值和残差怎么办。我确实尝试了 lm$residual 但这没有用
    • Result 将每个回归的输出存储在列表中。只需使用 lapplysapply 函数子集您需要的内容。
    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多