【问题标题】: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.Lsamples.T 之间进行线性回归,并分别响应变量 le.? (?=1,2,3,4,5),这样我就可以得到 5 个模型?

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

【问题讨论】:

    标签: r apply


    【解决方案1】:

    您可以根据samples.Lsamples.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
      相关资源
      最近更新 更多