Como aplicar GLMM binomial (glmer) a porcentagens em vez de contagens sim-não?

21

Tenho um experimento de medidas repetidas em que a variável dependente é uma porcentagem e tenho vários fatores como variáveis ​​independentes. Eu gostaria de usar glmero pacote R lme4para tratá-lo como um problema de regressão logística (especificando family=binomial), pois parece acomodar essa configuração diretamente.

Meus dados são assim:

 > head(data.xvsy)
   foldnum      featureset noisered pooldur dpoolmode       auc
 1       0         mfcc-ms      nr0       1      mean 0.6760438
 2       1         mfcc-ms      nr0       1      mean 0.6739482
 3       0    melspec-maxp    nr075       1       max 0.8141421
 4       1    melspec-maxp    nr075       1       max 0.7822994
 5       0 chrmpeak-tpor1d    nr075       1       max 0.6547476
 6       1 chrmpeak-tpor1d    nr075       1       max 0.6699825

e aqui está o comando R que eu esperava que fosse apropriado:

 glmer(auc~1+featureset*noisered*pooldur*dpoolmode+(1|foldnum), data.xvsy, family=binomial)

O problema com isso é que o comando reclama da minha variável dependente não ser números inteiros:

In eval(expr, envir, enclos) : non-integer #successes in a binomial glm!

e a análise desses dados (piloto) fornece respostas estranhas como resultado.

Entendo por que a binomialfamília espera números inteiros (sim-não conta), mas parece que não há problema em regredir dados percentuais diretamente. Como fazer isso?

Dan Stowell
fonte
1
Não me parece bom, pois 5 em 10 não são as mesmas informações que 500 em 1000. Expresse a resposta como uma contagem do não. "sucessos" e uma contagem do não. "falhas".
Scortchi - Restabelece Monica
@ Scortchi obrigado, acho que você pode estar certo. Eu estava pensando em parte sobre a natureza contínua de minhas porcentagens (derivadas de decisões probabilísticas) semelhantes a esta pergunta: stats.stackexchange.com/questions/77376/…, mas acredito que posso expressar meus dados por meio de uma conversão significativa em contagens de números inteiros.
Dan Stowell

Respostas:

22

Para usar um vetor de proporções como a variável de resposta glmer(., family = binomial), é necessário definir o número de tentativas que levaram a cada proporção usando o weightsargumento Por exemplo, usando os cbppdados do lme4pacote:

glmer(incidence / size ~ period + (1 | herd), weights = size,
   family = binomial, data = cbpp)

Se você não souber o número total de tentativas, um modelo binomial não é apropriado, conforme indicado na mensagem de erro.

Steve Walker
fonte
Não sei dizer se o uso de pesos para isso funciona ou não. Mas você certamente pode inserir os dados como uma matriz de duas colunas (sucessos / falhas) no lado esquerdo da fórmula.
Ndoogan
Mas @ndoogan, a pergunta original era sobre proporções, não sucessos / fracassos. E o código acima funciona, como peguei na cbpppágina de ajuda.
Steve Walker
Justo. No entanto, pretendia significar sucessos / fracassos ( não destinados a ser divisão) é de onde vêm as proporções para um modelo binomial.
Ndoogan 27/02
+1, mas os leitores podem querer ver a resposta de @ BenBolker aqui stats.stackexchange.com/questions/189115 sobre possíveis maneiras de lidar com a super-dispersão.
Ameba diz Reinstate Monica
9

(0 0,1)

M. Berk
fonte
2
Um modelo binomial é um modelo de proporções. No entanto, só é apropriado quando você sabe o número de tentativas. Se tudo o que você tem é um percentual, sem indicação do número de tentativas, acredito que você está certo de que a regressão beta é apropriada.
Ndoogan 27/02
@ndoogan Para esclarecer, meu conselho não é "use regressão beta quando sua resposta for proporcional", mas "se sua resposta puder apenas receber valores em (0 0,1) , como proporções / porcentagens, então a regressão beta é típica"
M. Berk
Obrigado, este é um bom ponto. Estou aceitando a outra resposta porque ela responde à pergunta como está escrita, mas o argumento sobre a regressão beta é bem fundamentado, então eu a votei de forma positiva.
Dan Stowell