Як зробити узагальнену лінійну модель з декількома залежними змінними в R?


17

У мене є шість залежних змінних (кількість даних) та кілька незалежних змінних, я бачу, що в MMR сценарій йде так:

my.model <- lm(cbind(DV1,DV2,DV3,DV4,DV5,DV6) ~ IV1 + IV2 + ... + IVn)

Але, оскільки мої дані налічуються, я хочу використовувати узагальнену лінійну модель, і я спробував це:

my.model <- glm(cbind(DV1,DV2,DV3,DV4,DV5,DV6) ~ IV1 + IV2 + ... + IVn, family="poisson")

І з'являється це повідомлення про помилку:

Error in glm.fit(x = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,  : 
  (subscript) logical subscript too long`

Чи може хто-небудь пояснити мені це повідомлення про помилку чи спосіб вирішити мою проблему?


Слідкуючи за відповіддю @Giorgio Spedicato: чи варто вважати, що ви хочете отримати набір моделей, які розглядають кожну залежну змінну окремо, як lmце робиться, коли ви даєте їй матрицю?
кон'югатпріор

Я пропускаю другу частину аналізу. У MMR (Багатоваріантна множинна регресія) після: lm(cbind(DV1,DV2,DV3,DV4,DV5,DV6) ~ IV1 + IV2 + ... + IVn) Я повинен
Хуан

Я, можливо , щойно підкоригував свою відповідь, щоб відповісти на це питання. Також пам’ятайте, що не натискайте на відповідь у коментарях :-)
кон'югатпріор

Я пропускаю другу частину аналізу. У MMR (Багатоваріантна lm(cbind(DV1,DV2,DV3,DV4,DV5,DV6) ~ IV1 + IV2 + ... + IVn) множинна регресія) після: я повинен використовувати команду manova (), як це: summary(manova(my.model)) зробити багатоваріантний аналіз дисперсії та побачити значення кожної незалежної змінної. Це кінцева мета.
Хуан

Ні манова, ні анова не визначаються для такого роду даних, отже, вони не пропонуються. Але якщо ви хочете побачити вплив кожного IV, то подана таблиця регресії summaryнадасть їх вам для кожного DV.
кон'югатприор

Відповіді:


11

Коротка відповідь - glmце не так. lmСтворюватиме mlmоб'єкти , якщо ви даєте йому матрицю, але це не так широко підтримується в дженериків і в будь-якому випадку не може легко узагальнюється , glmтому що користувачі повинні мати можливість вказати подвійний стовпець залежних змінних для моделей логістичної регресії.

Рішення - окремо підходити до моделей. Припустимо, що ваші ІV та відеомагнітофони живуть у data.frame, який називається ddта позначений так, як вони є у вашому запитанні. У наступному коді складається список встановлених моделей, індексований іменем залежної змінної, яку вони використовують:

models <- list()
dvnames <- paste("DV", 1:6, sep='')
ivnames <- paste("IV", 1:n, sep='') ## for some value of n

for (y in dvnames){
  form <- formula(paste(y, "~", ivnames))
  models[[y]] <- glm(form, data=dd, family='poisson') 
}

Щоб вивчити результати, просто перегорніть свої звичайні функції у такий lapplyваріант:

lapply(models, summary) ## summarize each model

Немає сумнівів, що більш елегантні способи зробити це в R, але це має спрацювати.


6

Мені сказали, що існує багатоваріантна узагальнена лінійна (змішана) модель, яка вирішує вашу проблему. Я не є експертом з цього приводу, але я б ознайомився з документацією SABER і цією книгою про багатовимірні GLM. Можливо, вони допомагають ...


2
Ви піднімаєте цікавий момент (+1). Мультиваріантні ГЛМ, безумовно, існують. З іншого боку, надання lmматриці залежної змінної, мабуть, слід сприймати більше як синтаксичний цукор, ніж як вираження багатоваріантної моделі: якби це була багатоваріантна (нормальна) модель, вона була б такою, де помилки є ' сферичний ', тобто такий, де ви могли виконати окремі регресії на кожному елементі залежної змінної і отримали ту саму відповідь.
кон'югатпріор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.