Предиката () с произвольными коэффициентами в г
У меня есть некоторые коэффициенты для модели логита, установленные не пользователем r. Я хотел бы импортировать эти коэффициенты в r и сгенерировать некоторые оценки пригодности для того же набора данных (ROC и путаница) по сравнению с моей собственной моделью. Моя первая мысль состояла в том, чтобы привести коэффициенты в существующий объект GLM, используя что-то вроде
суммарные (подходящие)$ коэффициенты [,1] <- у
или же
суммарные (подходящие)$ коэффициенты <- x
где y и x - матрицы, содержащие коэффициенты, которые я пытаюсь использовать для прогнозирования и подгонки - это ранее созданный фиктивный объект glm, подходящий для набора данных. Конечно, это дает мне только ошибки.
Есть ли способ передать вектор произвольного коэффициента в функцию предиката () или указать коэффициенты в модели? Можно ли как-то форсировать это, передав вектор в аргумент смещения в GLM? Спасибо
Редактировать: Как уже упоминалось в комментариях, существует не так много статистических основ для использования произвольных коэффициентов. У меня есть деловой партнер, который считает, что он / она "знает" правильные коэффициенты, и я пытаюсь количественно оценить потерю предсказательной силы на основе этих оценок по сравнению с коэффициентами, сгенерированными соответствующей моделью.
Edit2: Согласно ответу BondedDust, я смог привести коэффициенты, но не смог очистить сообщения об ошибках, которые предикат () возвратил из-за принуждения, кажется, что предикат, который вызывается предикатом, также выглядит в ранге коэффициентов, и это вызывает ошибку.
3 ответа
Если вы будете следовать коду через predict.glm
который передает объект predict.lm
, кажется, что узел списка моделей, который должен быть изменен, действительно fit$coefficients
, Однако, изменяя summary()
-объект не будет иметь никакого эффекта. [['coefficients']]
в glm и lm объекты не являются матрицами со столбцами: "Estimate", "Std. Ошибка ', 't value', 'Pr(>|t|)', например, произведенная summary
, а точнее просто вектор коэффициентов.
fit$coefficients <- y
newpred <- predict(fit)
Вы можете сделать копию и работать над ней, если вам потребуется дальнейшее использование fit
,
Это не ответ на ваш опубликованный вопрос - на который ответил BondedDust, - он описывает альтернативный способ расчета прогнозируемых вероятностей самостоятельно, который может помочь в этом случае.
# Use the mtcars dataset for a minimum worked example
data(mtcars)
# Run a logistic regression and get predictions
mod <- glm(vs ~ mpg + factor(gear) + factor(am), mtcars, family="binomial")
p1 <- predict(mod, type="response")
# Calculate predicted probabilities manually
m <- model.matrix(~ mpg + factor(gear) + factor(am), mtcars)[,]
p2 <- coef(mod) %*% t(m)
p2 <- plogis(p2)
all(p1 == p2)
#identical(as.numeric(p1), as.numeric(p2))
Вы можете заменить coef(mod)
с вектором коэффициентов, данных вам. model.matrix
создаст фиктивные переменные, необходимые для расчета - убедитесь, что порядок такой же, как и у вектора коэффициентов.
Или вы можете использовать что-то вроде этого:
подходит <- лм (Y ~ A + B + C, данные = фальшивка)
соответствовать $ коэффициентам <- c (1, 2, 3) # это изменит коэффициенты для A, B, C на 1, 2 и 3 соответственно.
Y_hat_new <- предикат (fit, new_fakedata) # этот Y_hat_new будет рассчитываться как ваш новый прогнозируемый результат с учетом новых коэффициентов и / или new_fakedata.
Результаты должны быть одинаковыми, если вы следуете по маршруту model.matrix.