Добавьте столбцы стандартизированных остатков из разных моделей, используя одни и те же IV, но разные DV. - PullRequest
1 голос
/ 26 мая 2020

Мне нужен подход Tidyverse к решению следующей проблемы ...

Я использую набор данных diamonds (из ggplot2) в качестве примера.

structure(list(carat = c(0.23, 0.21, 0.23, 0.29, 0.31), cut = structure(c(5L, 
4L, 2L, 4L, 2L), .Label = c("Fair", "Good", "Very Good", "Premium", 
"Ideal"), class = c("ordered", "factor")), color = structure(c(2L, 
2L, 2L, 6L, 7L), .Label = c("D", "E", "F", "G", "H", "I", "J"
), class = c("ordered", "factor")), clarity = structure(c(2L, 
3L, 5L, 4L, 2L), .Label = c("I1", "SI2", "SI1", "VS2", "VS1", 
"VVS2", "VVS1", "IF"), class = c("ordered", "factor")), depth = c(61.5, 
59.8, 56.9, 62.4, 63.3), table = c(55, 61, 65, 58, 58), price = c(326L, 
326L, 327L, 334L, 335L), x = c(3.95, 3.89, 4.05, 4.2, 4.34), 
    y = c(3.98, 3.84, 4.07, 4.23, 4.35), z = c(2.43, 2.31, 2.31, 
    2.63, 2.75)), row.names = c(NA, -5L), class = c("tbl_df", 
"tbl", "data.frame"))

Я хочу запустить 3 отдельные линейные регрессии, где DV различается, но IV остаются неизменными, например:

  • x ~ глубина + цена
  • y ~ глубина + цена
  • z ~ глубина + цена

И я хотел бы добавить новый столбец в исходный фрейм данных, который включает стандартные остатки от каждой модели для каждого наблюдение (т.е. x_stdresiduals, y_stdresiduals, z_stdresiduals).

1 Ответ

1 голос
/ 26 мая 2020

Один метод грубой силы:

diamonds %>% 
  mutate(
    x_stdresiduals = lm(x ~ depth + price)$residuals,
    y_stdresiduals = lm(y ~ depth + price)$residuals,
    z_stdresiduals = lm(z ~ depth + price)$residuals
  )
...