Преобразование выходных данных линейной регрессии в r

#r

Вопрос:

Мои данные представляют собой список из двух фреймов данных и выглядят следующим образом:

 [[1]]
   Column  strain     N       calc        concentration
1       2  MG         3       1128.727    0.9765625
2       3  MG         3       2577.353    1.9531250
.
.
.

[[2]]
   Column strain    N        calc          concentration
1       2 MG        3        29.14334      0.9765625
2       3 MG        3        65.52667      1.9531250
.
.
.
 

Я провожу линейную регрессию по этому вопросу:

 linear_regression <- 
     lapply(standardcurve_concentration, 
            lm, 
            formula = calc ~ concentration)
 

После этого я хочу получить коэффициент для каждой линейной регрессии.

Я использую простую задачу, чтобы получить коэффициенты:

 linear_regression_sum <- 
  lapply(linear_regression, 
         coef)
 

В результате получается следующее:

 [[1]]
  (Intercept) concentration 
   12194.0968      703.3598 

[[2]]
  (Intercept) concentration 
     49.20808      30.91862 
 

Но я хотел бы иметь два отдельных фрейма данных для этой линейной регрессии:

 [[1]]
    Intercept       concentration 
1   12194.0968      703.3598 

[[2]]
     Intercept      concentration 
1     49.20808      30.91862 
 

Потому что я хочу использовать оба коэффициента в дальнейших расчетах.
Как я могу этого достичь?

Ответ №1:

Я действительно не понимаю эту структуру лапласа с линейной регрессией, но вот некоторый код, который, возможно, указывает в правильном направлении.

 library(broom)


linear_regression_one <- lm(mpg ~ wt, mtcars) 
            
linear_regression_one$coefficients

tidy_linear_regression_one <- tidy(linear_regression_one)

tidy_linear_regression_one_estimate <- tidy_linear_regression_one$estimate


linear_regression_two <- lm(mpg ~ am, mtcars) 
            
linear_regression_two$coefficients

tidy_linear_regression_two <- tidy(linear_regression_two)

tidy_linear_regression_two_estimate <- tidy_linear_regression_two$estimate

regression_estimates <- rbind(tidy_linear_regression_one_estimate, tidy_linear_regression_two_estimate)
 

Ответ №2:

Вы можете сделать это за один lapply вызов, преобразуя числовой вектор из coef в фрейм данных.

 result <- lapply(standardcurve_concentration, function(x) {
  as.data.frame(t(coef(lm(calc ~ concentration, x))))
})