Расчет оценок Бриера для биномиального GLMM с комбинированным подсчетом успеха / неудачи - PullRequest
0 голосов
/ 01 марта 2019

Как рассчитать оценки Бриера для обобщенной линейной модели смешанных эффектов с биномиальными ошибками, когда моя переменная ответа составляет cbind успеха / неудач?

Я пробовал DescTools и scoringпакеты, но у меня возникают проблемы с пониманием файлов справки для функций BrierScore и brierscore ...

Вот что я сделал с некоторыми примерами данных.

    #Data    
    df <- structure(list(Dose = c(20, 14, 14, 20, 0, 0, 14, 14, 14, 16, 
10, 20, 20, 20, 16, 10, 10, 0, 16, 16, 16, 10, 0, 12, 10, 12, 
12, 0, 0, 20, 12, 16, 10, 12, 12, 0, 14, 14, 16, 0, 14, 20, 16, 
20, 14, 12, 12, 20, 20, 0, 0, 14, 12, 10, 10, 20, 16, 16, 14, 
10, 10, 10, 20, 16, 10, 0, 12, 12, 0, 12, 16, 14, 16, 14, 0, 
0, 12, 20, 0, 12, 14, 14, 0, 0, 20, 20, 20, 14, 14, 10, 10, 20, 
16, 16, 0, 12, 10, 10, 10, 16, 16, 12, 20, 10, 12, 12, 16, 14, 
0, 16, 20, 12, 14, 10, 10, 0, 0, 12, 12, 10, 10, 0, 0, 0, 14, 
12, 12, 20, 20, 14, 14, 14, 12, 20, 20, 20, 16, 16, 14, 10, 10, 
16, 16, 16), Success = c(100, 91, 87, 100, 0, 0, 91, 96, 89, 
96, 82, 99, 99, 99, 92, 59, 45, 0, 100, 95, 100, 83, 8, 82, 63, 
98, 74, 9, 0, 99, 78, 98, 53, 96, 52, 0, 62, 85, 98, 4, 89, 99, 
99, 97, 82, 80, 91, 99, 96, 0, 0, 95, 80, 68, 74, 100, 97, 93, 
87, 34, 32, 47, 99, 96, 86, 15, 93, 86, 0, 77, 89, 80, 98, 96, 
31, 0, 61, 100, 0, 84, 88, 97, 0, 0, 99, 100, 100, 92, 88, 46, 
51, 99, 97, 100, 0, 93, 61, 91, 57, 76, 95, 50, 98, 16, 87, 93, 
87, 88, 11, 92, 98, 60, 96, 0, 64, 72, 0, 74, 77, 0, 62, 0, 0, 
0, 84, 47, 69, 98, 100, 61, 90, 79, 11, 100, 98, 100, 98, 93, 
91, 58, 58, 93, 78, 69), Failure = c(0, 9, 13, 0, 100, 100, 9, 
4, 11, 4, 18, 1, 1, 1, 8, 41, 55, 100, 0, 5, 0, 17, 92, 18, 37, 
2, 26, 91, 100, 1, 22, 2, 47, 4, 48, 100, 38, 15, 2, 96, 11, 
1, 1, 3, 18, 20, 9, 1, 4, 100, 100, 5, 20, 32, 26, 0, 3, 7, 13, 
66, 68, 53, 1, 4, 14, 85, 7, 14, 100, 23, 11, 20, 2, 4, 69, 100, 
39, 0, 100, 16, 12, 3, 100, 100, 1, 0, 0, 8, 12, 54, 49, 1, 3, 
0, 100, 7, 39, 9, 43, 24, 5, 50, 2, 84, 13, 7, 13, 12, 89, 8, 
2, 40, 4, 100, 36, 28, 100, 26, 23, 100, 38, 100, 100, 100, 16, 
53, 31, 2, 0, 39, 10, 21, 89, 0, 2, 0, 2, 7, 9, 42, 42, 7, 22, 
31), Rep = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L)), row.names = 433:576, class = "data.frame")

#Model fitting
fit <- lme4::glmer(cbind(Success, Failure) ~ Dose + (1|factor(Rep)), family = binomial, data = df)

#Brier scores

DescTools::BrierScore(fit)
#Returns following error
#Error in mean(resp * (1 - pred)^2 + (1 - resp) * pred^2)

scoring::brierscore(fit)
#Returns following error
#argument "pred" is missing, with no default

Можно ли рассчитать оценки Бриера для модели смешанных эффектов?Если да, то как?

1 Ответ

0 голосов
/ 01 марта 2019

Полагаю, вы можете просто избавиться от конструкции cbind, получить длинный формат данных и использовать интерфейс прогнозирования / ответа DescTools :: BrierScore ().

Что-то подобное может работать:

 library(DescTools)
 tt <- aggregate(df[, c("Success", "Failure")], by=as.list(df[, c("Dose", "Rep")]), FUN = sum)
 d.frm <- Untable(reshape(tt, idvar=c("Dose","Rep"), varying = c("Success", "Failure"), 
                  direction = "long", 
                  timevar="Success", v.names="Freq", times=c(1, 0)))

 fit <- lme4::glmer(Success ~ Dose + (1|Rep), family = binomial, data = d.frm)

 BrierScore(pred=predict(fit, type="response"), resp = d.frm$Success)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...