#r #regression #dummy-variable
#r #регрессия #фиктивная переменная
Вопрос:
В следующем примере 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. Попробуйте
attr(fit$terms, "term.labels")
, это вернет символьный вектор всех регрессоров, используемых в формуле.
Ответ №1:
Получите имена переменных из формулы и проверьте, какое из них соответствует входным данным:
input <- c("gendermale", "height")
v <- all.vars(formula(fit))
v[sapply(input, function(x) which(pmatch(v, x) == 1))]
## [1] "gender" "height"