/ / Como posso operar a regressão linear para cada coluna em um dataframe [duplicado] - r, aplique

Como posso operar a regressão linear para cada coluna em um dataframe [duplicate] - r, apply

Meu dataframe é como:

  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

Agora eu quero operar a regressão linear entre variáveis ​​independentes samples.L e samples.T e, respectivamente, cada uma das variáveis ​​de resposta le.? (? = 1,2,3,4,5), para que eu pudesse obter 5 modelos?

Como eu poderia aplicar a função familiar ou outro método para realizá-la?

Respostas:

0 para resposta № 1

Você pode criar uma função que se ajusta a um modelo linear das outras variáveis ​​em termos de samples.L e samples.T.

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

Você pode então usar lapply() para aplicar esta função a cada uma das colunas desejadas.

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

Além disso, você pode usar o tidyverse pacotes com o broom pacote para simplificar suas saídas.

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())

Melhor ainda, você pode fazer o seguinte.

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)