Сохраняйте имена случаев в объекте регрессии при построении из Tibble - PullRequest
0 голосов
/ 19 октября 2018

Из справки setNames в R:

x <- 1:20
y <-  setNames(x + (x/4 - 2)^3 + rnorm(20, sd = 3),
           paste("O", x, sep = "."))
ww <- rep(1, 20); ww[13] <- 0
summary(lmxy <- lm(y ~ x + I(x^2)+I(x^3) + I((x-10)^2), weights = ww),
    cor = TRUE)
variable.names(lmxy)
variable.names(lmxy, full = TRUE)  # includes the last
case.names(lmxy)
case.names(lmxy, full = TRUE)      # includes the 0-weight case

Если я строю объект регрессии, используя:

plot(lmxy, 1)

, я вижу названия случаев на графике. Это то, что я хочу .

Однако, если данные хранятся в виде таблицы:

tt = as.tibble(cbind(x, y, ww))

lmxy_tt = lm(y ~ x + I(x^2)+I(x^3) + I((x-10)^2), weights = ww, data = tt)

plot(lmxy_tt, 1)

Имена дел теряются.

Мои данные обычно хранятся в виде таблиц, но я хочу, чтобы в графике сохранялись названия дел.Я знаю, что tibbles не поддерживает имена строк.

Я пробовал:

plot(lm(setNames(y1, paste("O", x1, sep = ".")) ~ x1 + I(x1^2)+I(x1^3) + I((x1-10)^2), weights = ww1, data = tt), 1)

Чтобы прояснить ситуацию, это игрушечный пример, использующий набор данных mtcars того, что я пытаюсьдля достижения:

library(tidyverse)
cars = mtcars
cars$name = row.names(cars)
cars = as.tibble(cars)

cars = cars %>% 
  group_by(cyl) %>% 
  nest() %>% 
  mutate(model = map(data, ~ lm(set_names(wt, name) ~ hp, data = .x)))

Теперь, если я нанесу результат:

 plot(cars$model[[1]], 1)

Я могу видеть названия дел как «1» и «5», но я хочу, чтобы модели автомобилей были помечены.«Mazda RX4» и т. Д. Я хочу каким-то образом сохранить имена дел в регрессионной модели вместо значений по умолчанию «1», «2» и т. Д., Используя «setNames», «set_names» или другой метод.

Надеюсь, это понятнее.

Спасибо

...