Logisti c ошибка регрессии с использованием фактора в качестве зависимой переменной в robustbase glmrob - PullRequest
0 голосов
/ 14 января 2020

Я пытаюсь запустить регрессию c с использованием функции robustbase glmrob в R, но похоже, что она не будет работать с использованием факторной переменной, когда выбран метод BY или WBY (оценщик Bianco-Yohai). Воспроизводимый и простой пример:

library(robustbase)
y<-factor(rep(c(1,0,1),10))
x<-rnorm(30)
z<-glmrob(y ~ x, family="binomial", method="BY")

Error in eval(family$initialize) : y values must be 0 <= y <= 1

Трассировка:

7: stop("y values must be 0 <= y <= 1")
6: eval(family$initialize)
5: eval(family$initialize)
4: glm.fit(x, y, family = family)
3: BYlogreg(x0 = X, y = y, initwml = (method == "WBY"), addIntercept = !intercept, 
       const = const, kmax = kmax, maxhalf = maxhalf, trace.lev = trace.lev)
2: glmrobBY(X = X, y = Y, weights = weights, start = start, method = method, 
       weights.on.x = weights.on.x, control = control, intercept = attr(mt, 
           "intercept") > 0, trace.lev = trace.lev)
1: glmrob(y ~ x, family = "binomial", method = "BY")

Похоже, что это можно решить, приведя коэффициент к цифре c (или используя стандартную оценку Mqle, которую я предполагает, что это преобразование внутренне?):

z<-glmrob(as.numeric(levels(y)[y]) ~ x, family="binomial", method="BY")
Convergence Achieved
z<-glmrob(y ~ x, family="binomial")

Редактировать: Дополнительная информация - это не разрешается прямым преобразованием коэффициента в число c, что дает исходную ошибку:

z<-glmrob(as.numeric(y) ~ x, family="binomial", method="BY")
Error in eval(family$initialize) : y values must be 0 <= y <= 1

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...