Как применить биномиальный GLMM (glmer) к процентам, а не к счетам да-нет?

21

У меня есть эксперимент с повторными измерениями, где зависимая переменная представляет собой процент, и у меня есть несколько факторов в качестве независимых переменных. Я хотел бы использовать glmerиз пакета R, lme4чтобы рассматривать его как проблему логистической регрессии (путем указания family=binomial), так как он, кажется, приспосабливает эту настройку напрямую.

Мои данные выглядят так:

 > 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

и вот команда R, на которую я надеялся, подойдет:

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

Проблема в том, что команда жалуется на то, что моя зависимая переменная не является целым числом:

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

и анализ этих (пилотных) данных дает странные ответы в результате.

Я понимаю, почему binomialсемья ожидает целых чисел (да-нет), но, похоже, все в порядке, чтобы напрямую регрессировать процентные данные. Как это сделать?

Дэн Стоуэлл
источник
1
Мне это не кажется нормальным, так как 5 из 10 - это не та же информация, что 500 из 1000. Выразите ответ одним счетом «нет». "успехи" и один счет нет. «провалы».
Scortchi - Восстановить Монику
@ Scortchi спасибо, я думаю, ты прав. Я частично размышлял о непрерывности моего процента (полученного из вероятностных решений), подобного этому вопросу: stats.stackexchange.com/questions/77376/… но я считаю, что могу выразить свои данные посредством значимого преобразования в целочисленные значения.
Дэн Стоуэлл

Ответы:

22

Чтобы использовать вектор пропорций в качестве переменной ответа с glmer(., family = binomial), вам нужно установить количество испытаний, которые привели к каждой пропорции, используя weightsаргумент. Например, используя cbppданные из lme4пакета:

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

Если вы не знаете общее количество испытаний, тогда биноминальная модель не подходит, как указано в сообщении об ошибке.

Стив Уокер
источник
Я не могу сказать, работает ли вес для этого или нет. Но вы, безусловно, можете ввести данные в виде двухколоночной матрицы (успехи / неудачи) в левой части формулы.
ndoogan
Но @ndoogan, оригинальный вопрос был о пропорциях, а не успехах / неудачах. И приведенный выше код работает, как я взял его со cbppстраницы справки.
Стив Уокер,
Справедливо. Хотя я хотел сказать, что успехи / неудачи ( не предназначенные для разделения) - вот откуда берутся пропорции для биномиальной модели.
ndoogan
+1, но читатели могут захотеть увидеть ответ @ BenBolker здесь stats.stackexchange.com/questions/189115 о возможных способах борьбы с избыточной дисперсией.
говорит амеба, восстанови монику
9

(0,1)

М. Берк
источник
2
Биноминальная модель - это модель пропорций. Хотя это уместно только тогда, когда вы знаете количество испытаний. Если все, что у вас есть, это процент без указания количества испытаний, то я считаю, что вы правы в том, что бета-регрессия подходит.
ndoogan
(0,1)
Спасибо, это хороший момент. Я принимаю другой ответ, потому что он отвечает на вопрос, как написано, но вопрос о бета-регрессии хорошо сформулирован, поэтому я проголосовал за него.
Дэн Стоуэлл