问题
I want to estimate a nested logit model using the language R. As standard packages for such problems I am using "mlogit". Now I would like to estimate a model, with more than just one stage. The problem is as follows:
- Stage: People decide, if they want to migrate to the US or not.
- Stage: For all people decided to migrate, they have to decide in which region of the US they want to go (US devided in 6 regions)
- Stage: Within the region, they decide in what kind of area they want to live; urba vs. rural
I already transformed my data using mlogit.data().
data <- mlogit.data(data = usa_canada_uk, choice = "migrant"))
This is how "data" looks:
sex marst numperhh_cat age_cat famsize nchlt5 labour_code sample nchlt10
3888.no female married 1-5 16+ 1 no chiled aged 5 or younger not working 8262 no chiled aged 10 or younger
12874.no female married 1-5 16+ 2 or more at least one child aged 5 or younger ancillary 8262 at least one child aged 10 or younger
13084.no female married 1-5 16+ 2 or more at least one child aged 5 or younger ancillary 8262 at least one child aged 10 or younger
9359.yes female married 1-5 16+ 1 no chiled aged 5 or younger service 8262 no chiled aged 10 or younger
7569.no female married 1-5 16+ 1 no chiled aged 5 or younger service 8262 no chiled aged 10 or younger
5778.no female married 1-5 16+ 1 no chiled aged 5 or younger not working 8262 no chiled aged 10 or younger
perwt labforce age migrant country_of_birth region citypop urban work.prob.home work.prob.abroad migration.prob stay.prob chid
3888.no 1 in labforce 26 TRUE United Kingdom home_country NA urban NA NA NA NA 3888
12874.no 1 in labforce 47 TRUE United Kingdom home_country NA rural NA NA NA NA 12874
13084.no 1 in labforce 22 TRUE United Kingdom home_country NA urban NA NA NA NA 13084
9359.yes 1 in labforce 28 FALSE United Kingdom home_country NA urban NA NA NA NA 9359
7569.no 1 in labforce 32 TRUE United Kingdom home_country NA urban NA NA NA NA 7569
5778.no 1 not in labforce 38 TRUE United Kingdom home_country NA rural NA NA NA NA 5778
alt
3888.no no
12874.no no
13084.no no
9359.yes yes
7569.no no
5778.no no
Here is my idea, how I want to code it, but it is not working:
mlog <- mlogit(migrant ~ 1 | age + numperhh_cat + sex + famsize + work.prob.home,
nests = list(home = c("home_country"),
foreign = c(region_1 = c("rural", "urban"),
region_2 = c("rural", "urban"),
region_3 = c("rural", "urban"),
region_4 = c("rural", "urban"),
region_5 = c("rural", "urban"),
region_6 = c("rural", "urban"))
),
reflevel = "yes",
weights = perwt,
data = data)
As you can see, one nest on the first stage (deciding not to migrate = "home_country") is degenerated.
If someone could help me, that would be awesome.
Best wishes,
Chris
来源:https://stackoverflow.com/questions/31231505/multistage-nested-logit-r