【问题标题】:How can I operate linear regression for each column in a dataframe [duplicate]如何对数据框中的每一列进行线性回归 [重复]
【发布时间】:2018-03-19 01:56:14
【问题描述】:

我的数据框是这样的:

  samples.L samples.T      le.1      le.2      le.3      le.4      le.5
         10       1.0  9.683726  9.691982  9.704387  9.719390  9.735400
         10       3.5  9.828530  9.829962  9.832273  9.835296  9.838709
         25       1.0 24.675467 24.677010 24.679439 24.682560 24.685718
         25       3.5 24.822328 24.822601 24.823026 24.823410 24.823209

现在我想在自变量 samples.L 和 samples.T 之间进行线性回归,并分别响应变量 le.? (?=1,2,3,4,5),这样我就可以得到 5 个模型?

如何使用apply family函数或者其他方法来实现呢?

【问题讨论】:

    标签: r apply


    【解决方案1】:

    您可以根据samples.L 和samples.T 创建一个拟合其他变量的线性模型的函​​数。

    lm_func <- function(y) lm(y ~ samples.L + samples.T, data = data)
    

    然后您可以使用lapply() 将此函数应用于每个所需的列。

    lapply(data[,3:6], lm_func)
    

    此外,您可以使用tidyverse 包和broom 包来简化您的输出。

    library(tidyverse)
    library(broom)
    map_dfr(data[,3:6], function(x) summary(lm_func(x)) %>% glance()) 
    map_dfr(data[,3:6], function(x) summary(lm_func(x)) %>% tidy())
    

    更好的是,您可以执行以下操作。

    fit <- lm(cbind(le.1, le.2, le.3, le.4) ~ samples.L + samples.T, data = data)
    summary(fit) %>% map_dfr(glance)
    summary(fit) %>% map_dfr(tidy)
    

    【讨论】:

      猜你喜欢
      • 2020-06-11
      • 2022-01-24
      • 2013-10-23
      • 2020-10-31
      • 2015-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      相关资源
      最近更新 更多