Пошаговая процедура запуска вложенной логистической регрессии в R - PullRequest
5 голосов
/ 06 мая 2011

Пожалуйста, предоставьте мне подробные (насколько это возможно) шаги о том, как сделать вложенную логистическую регрессию в R. Я новичок в R, поэтому мне очень поможет, если я смогу получить подробный ответ.

Мы проверили, как решение рыбака о выходе из рыбалки зависит от различных социально-экономических факторов. Зависимая переменная: 0 - остаться; 1 - выход Предикторы: возраст (непрерывный); Образование (категориальное); количество детей (непрерывно) и т. д.

Наши респонденты были из разных городов. Рецензент нашей статьи поручил нам учитывать город, из которого пришел респондент, используя вложенную логистическую регрессию.

Ваша помощь очень ценится. Большое спасибо.

Ответы [ 2 ]

11 голосов
/ 06 мая 2011
install.packages("mlogit")    
library(mlogit)

my.data <- YOUR.DATA    

nested.logit <- mlogit(stay.exit~ age + education + children , my.data,
shape='long', alt.var='town.list', nests=list(town.list))

См. Стр. 19 руководства mlogit для примеров вызовов вложенной модели logit. Вам придется самостоятельно просмотреть документацию, чтобы убедиться, что вы получаете то, что вам нужно с точки зрения параметров. http://cran.r -project.org / веб / пакеты / mlogit / mlogit.pdf

Segue: Мне обычно нравится смотреть на все модели по town.list, прежде чем я смотрю на вложенные модели:

Примечание: если ваши категориальные переменные не учтены, вам придется заключить их в as.factor (переменная) в формуле модели

# Show a little love for plyr
library(plyr)

## RNG
set.seed(123454321)

## Create a list object to store your models
my.models <- list()

## import your data
my.data <- YOUR.DATA

## Create a loop that runs by the list of towns
for(x in 1:length(mydata$town.list) {
## subset data in each step by the town
dat <- subset(my.data, town == town.list[x])
## Save the model to it's own place in the list, identified by town
my.models[[town.list[x]]] <- glm(formula = stay.exit ~ age + education + children, 
family = binomial(link = "logit"), 
data=dat)
}

## View summaries for all models
llply(my.models, summary)

## Access specific models
my.models$<TOWN NAME>
4 голосов
/ 06 мая 2011

Если я правильно понимаю, вам нужна модель с переменным перехватом по городам, то есть иерархическая модель?Если это правильно, просто используйте пакет lme4.

Вот пример.Предполагая, что в вашем фрейме данных есть переменная (фактор), называемая городом, и что ваш фрейм данных называется «рыбой», просто запустите:

library(lme4)
library(arm) # to use the function display, much better than summary
nest.reg <- glmer(decision ~ age + education + children + (1|town), family = binomial, data = fish)
coef(nest.reg) # this will give the estimated coeficients by town (in this case, only the intercepts will vary).
fixef(nest.reg) # this will give the model averaging over all towns.
ranef(nest.reg) # the errors (specificity) at the town level. If you sum fixef with ranef you will get coef results

Finnaly, важно сравнить оценочные данные в пределах и между городамиВариация

display(nest.reg) # this will show you, among other things, the estimated residual variatio at the town and individual level. It's the error terms by town and by individual (Residual). The ratio between them will tell you how much information the is between town and within each town. 

Взгляните на последнее издание книги Гельмана и Хилла для получения дополнительной информации о многоуровневой регрессии с использованием lme4.

Ps .: Можно включить переменный уклон по городу какЧто ж.Если это то, что вам нужно, просто спросите в комментариях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...