Оценка с использованием млогита в R
У меня есть статья, в которой автор предлагает D-оптимальный дизайн для модели Nested Multinomial Logit без выбора. Конструкция выглядит следующим образом:
CS 1:
Alt A: 1 2 2 1 2 2
Alt B: 2 2 1 2 1 2
Alt C: 0 0 0 0 0 0
CS 2:
Alt 1: 2 1 1 2 2 2
Alt 2: 2 2 2 2 1 1
Alt 3: 0 0 0 0 0 0
CS 3:
Alt 1: 2 2 1 1 1 2
Alt 2: 1 1 2 2 2 1
Alt 3: 0 0 0 0 0 0
CS 4:
Alt 1: 2 2 1 1 2 1
Alt 2: 1 1 2 2 1 2
Alt 3: 0 0 0 0 0 0
CS 5:
Alt 1: 1 2 1 2 2 1
Alt 2: 2 1 2 1 1 2
Alt 3: 0 0 0 0 0 0
CS 6:
Alt 1: 1 2 1 2 1 2
Alt 2: 2 1 2 1 2 1
Alt 3: 0 0 0 0 0 0
CS 7:
Alt 1: 2 1 1 2 2 1
Alt 2: 1 2 2 1 2 2
Alt 3: 0 0 0 0 0 0
CS 8:
Alt 1: 2 1 2 2 2 1
Alt 2: 1 2 2 1 1 2
Alt 3: 0 0 0 0 0 0
Проект является D-оптимальным дизайном с 8 наборами выбора, и каждый набор имеет 2 варианта (6 двухуровневых атрибутов по альтернативе). Я попытался оценить Nested Multinomial Logit Model в R, используя mlogit и этот дизайн. Таким образом, я сделал смоделированные данные, используя случайный ответ следующим образом:
Индивидуальный -Choiceid- Режим ---- Выбор ---- AA -AB- AC- AD- AE- AF
------ 1 ------------- 1 ---------- ------- ЛОЖЬ ----- 1 ---- -2 ----- ----- 2 ----- 1 ----- 2 2
------ 1 ------------- 1 -----------------B ЛОЖЬ ----- 2 ---- -2 ----- 1 ----- 2 ----- 1 ----- 2
------ 1 ------------- 1 ---------- С -------- значение TRUE ----- 0 --- --0 ----- 0 ----- 0 ----- 0 ----- 0
------ 1 2 ------------- ---------- ------- ЛОЖЬ ----- 2 ---- -1 ----- 1 ----- 2 ----- 2 ----- 2
------ 1 2 ------------- ----------B-------- ИСТИНА ----- 2 --- --2 ----- ----- 2 ----- 2 ----- 1 1
------ 1 2 ------------- ---------- ------- С ЛОЖЬ ----- 0 ---- -0 ----- 0 ----- 0 ----- 0 ----- 0
------ 1 ------------- 3 ---------- ------- ЛОЖЬ ----- 2 ---- -2 ----- 1 ----- 1 ----- 1 ----- 2
------ 1 ------------- 3 -----------------B ЛОЖЬ ----- 1 ---- -1 ----- ----- 2 ----- 2 ----- 1 2
Данные содержат ответы 30 человек, то есть данные содержат 240 вариантов (8 вариантов на человека). Однако, когда я использовал команду
sim = read.csv("sim.csv",header=T)
dat <- mlogit.data(sim, choice = "choice", shape = "long",
alt.var = "mode", chid.var = "choideid",id.var="individual")
nl.dat <- mlogit(choice ~ AA+AB+AC+AD+AE, dat, reflevel="C",
nests = list(OUR = c("A","B") , SQ = c("C")),
unscaled = TRUE)
Я получил ошибку
Ошибка в solve.default(crossprod(attr(x, "отклонение"))[,! Fixed])): система вычислительно единственная: число взаимных условий = 1.13304e-18
У кого-то есть идея, что я делаю не так?