Я пытаюсь запустить регрессию 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 является непрерывной, и поэтому изменяют результаты.