Мне нужно оценить дробную (ответ, принимающий значения между 0 и 1) модель с R. Я также хочу объединить стандартные ошибки.Я нашел несколько примеров в SO и других местах, и я построил эту функцию на основе своих выводов:
require(sandwich)
require(lmtest)
clrobustse <- function(fit, cl){
M <- length(unique(cl))
N <- length(cl)
K <- fit$rank
dfc <- (M/(M - 1))*((N - 1)/(N - K))
uj <- apply(estfun(fit), 2, function(x) tapply(x, cl, sum))
vcovCL <- dfc*sandwich(fit, meat = crossprod(uj)/N)
coeftest(fit, vcovCL)
}
Я оцениваю свою модель следующим образом:
fit <- glm(dep ~ exp1 + exp2 + exp3, data = df, fam = quasibinomial("probit"))
clrobustse(fit, df$cluster)
Все отлично работает, и я получаю результаты.Тем не менее, я подозреваю, что что-то не так, как в некластерной версии:
coeftest(fit)
дает точно такие же стандартные ошибки.Я проверил, что Stata сообщает, и что отображаются разные кластерные ошибки.Я подозреваю, что неправильно указал функцию clrobustse
, но я просто не знаю как.Есть идеи о том, что здесь может пойти не так?