Извлечь корень фиктивной переменной в сводку соответствия модели - PullRequest
0 голосов
/ 01 апреля 2019

В следующем примере gender кодируется как фиктивные переменные, соответствующие категориям.

fit <- lm(mass ~ height + gender, data=dplyr::starwars)
summary(fit)

# Call:
#   lm(formula = mass ~ height + gender, data = dplyr::starwars)
# 
# Residuals:
#   Min      1Q  Median      3Q     Max 
# -41.908  -6.536  -1.585   1.302  55.481 
# 
# Coefficients:
#   Estimate Std. Error t value Pr(>|t|)    
# (Intercept)          -46.69901   12.67896  -3.683 0.000557 ***
#   height                 0.59177    0.06784   8.723  1.1e-11 ***
#   genderhermaphrodite 1301.13951   17.37871  74.870  < 2e-16 ***
#   gendermale            22.39565    5.82763   3.843 0.000338 ***
#   gendernone            68.34530   17.49287   3.907 0.000276 ***
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 16.57 on 51 degrees of freedom
# (31 observations deleted due to missingness)
# Multiple R-squared:  0.9915,  Adjusted R-squared:  0.9909 
# F-statistic:  1496 on 4 and 51 DF,  p-value: < 2.2e-16

Есть ли способ извлечь корень из фиктивной переменной? Например, для gendernone, gendermale и genderhermaphrodite корнем будет gender, что соответствует исходному имени столбца в данных dplyr::starwars.

1 Ответ

0 голосов
/ 01 апреля 2019

Получить имена переменных из формулы и проверить, какая из них соответствует входным данным:

input <- c("gendermale", "height")

v <- all.vars(formula(fit))
v[sapply(input, function(x) which(pmatch(v, x) == 1))]
## [1] "gender" "height"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...