Сохранить R-квадрат из итогового отчета в качестве информационного кадра - PullRequest
1 голос
/ 02 апреля 2019

Я хочу сохранить результат модели lm в кадре данных. Я сгенерировал пустой фрейм данных (Startframe), где я хочу сохранить результаты.

В этом случае мой dataframe, содержащий данные, называется testdata. Он содержит дату в первом столбце, а затем несколько станций в остальных столбцах.

Пока этот код работает, чтобы получить оценку, Std. Ошибка, значение t и Pr (> | t |).

for(i in 2:ncol(testdata)) {
  x <- testdata[,1]
  y <- testdata[,i]
  mod <- lm(y ~ x)
  summary(mod)

  Startframe[i,] <- c(i,
                 summary(mod)[['coefficients']]['(Intercept)','Estimate'],
                 summary(mod)[['coefficients']]['x','Estimate'],
                 summary(mod)[['coefficients']]['x','Std. Error'],
                 summary(mod)[['coefficients']]['x','t value'],
                 summary(mod)[['coefficients']]['x','Pr(>|t|)'])

Но как мне также извлечь r.squared?

Я пытался добавить сводку (мод) [['r.squared']] в список, но это дает мне неправильные номера.

Я знаю, что str (summary (mod)) дает мне обзор, но я не могу понять, как добавить его в мой цикл.

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 02 апреля 2019

Хороший способ работы с одной и той же моделью на разных наборах данных - это использование подхода tidyverse с использованием пакета broom.

В этом примере я использую набор данных diamonds, чтобы проверить, как карат и глубина влияют на цену алмазов при различных сокращениях алмазов.

require(tidyverse)
require(broom)

diamonds %>% 
  nest(-cut) %>% 
  mutate(model = purrr::map(data, function(x) { 
    lm(price ~ carat + depth, data = x)}), 
    values = purrr::map(model, glance), 
    r.squared = purrr::map_dbl(values, "r.squared"), 
    pvalue = purrr::map_dbl(values, "p.value")) %>% 
  select(-data, -model, -values)

 cut       r.squared pvalue
  <ord>         <dbl>  <dbl>
1 Ideal         0.867      0
2 Premium       0.856      0
3 Good          0.851      0
4 Very Good     0.859      0
5 Fair          0.746      0
...