#r #linear-regression
#r #линейная регрессия
Вопрос:
У меня есть следующий код, который отображает некоторые коэффициенты из lm
fit <-lm(Petal.Width ~ Petal.Length, data=iris)
cf <-coef(summary(fit,complete = TRUE))
colnames(cf)[4] <- "pval"
cf<- data.frame(cf)
cf <-cf[cf$pval < 0.05,]
cf <-cf[order(-cf$pval), ]
head(cf)
cf[1,1]
Я хочу извлечь имена в левом столбце, т.е. (перехват) и длину лепестка.
Я думал, что могу использовать cf[1,1], но он показывает оценку
Ответ №1:
Они извлекаются с помощью rownames
:
fit <-lm(Petal.Width ~ Petal.Length, data=iris)
cf <-coef(summary(fit,complete = TRUE))
rownames(cf)
#[1] "(Intercept)" "Petal.Length"
Ответ №2:
tidyverse
Решением было бы использовать broom
:
library(broom)
tidy_fit <- tidy(fit)
Результаты:
# A tibble: 2 x 5
term estimate std.error statistic p.value
<chr> <dbl> <dbl> <dbl> <dbl>
1 (Intercept) -0.363 0.0398 -9.13 4.70e-16
2 Petal.Length 0.416 0.00958 43.4 4.68e-86
Тогда легко извлечь нужные компоненты, и полученный код будет более читаемым, например tidy_fit$term
, для получения списка переменных ( (Intercept)
и Petal.Length
).