如何为数据框中的每列操作线性回归

时间:2018-03-19 01:56:14

标签: r apply

我的数据框如下:

  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函数或其他方法来实现它?

1 个答案:

答案 0 :(得分:0)

您可以根据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)