Автоматически распознавать, что переменная была ранее разложена в регрессии в R - PullRequest
1 голос
/ 18 марта 2019

Я хочу написать свою собственную функцию прогнозирования, но столкнулся с некоторыми проблемами при этом.Сначала я написал код для логистической регрессии.Прежде чем вы сможете запустить логистическую регрессию, вы должны вручную факторизовать все переменные, которые должны быть факторизованы.Когда дело доходит до функции предикторов, я хочу, чтобы она автоматически распознавала, что я уже разложил переменную.Это необходимо для правильного вычисления линейного предиктора.

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

newdata = data.frame( gre= 300, gpa = 2, rank = "2")

newdata$rank <- factor(newdata$rank, levels = 1:4)

newdata
newdata$rank

mat <- model.matrix(~ gre + gpa + rank, newdata)
mat

Я уже проверил, являются ли переменные x моего объекта логистической регрессии факторами, но это не так.

Можно ли как-нибудь проверить, была ли переменная ранее разложена?

Заранее спасибо!

1 Ответ

1 голос
/ 18 марта 2019

Как это?

#fit an example model
DF <- mtcars
DF$carb <- factor(DF$carb)
fit <- lm(drat ~ mpg + carb, data = DF)

#classes of the model terms
classes <- attr(terms(fit), "dataClasses")
#     drat       mpg      carb 
#"numeric" "numeric"  "factor" 

new.data <- mtcars
#set variables in new.data to factor if they are factors in the model
new.data[, names(classes)[classes == "factor"]] <- 
  lapply(new.data[, names(classes)[classes == "factor"], drop = FALSE], as.factor)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...