Ошибка при использовании mlogit для смоделированных данных для выбора дискретных - PullRequest
0 голосов
/ 15 октября 2019

Я пытаюсь смоделировать данные и настроить модель для совместного анализа на основе выбора (mlogit). Тем не менее, я получаю сообщение об ошибке (Ошибка в solve.default (H, g [! Исправлено])). Я полагаю, что это потому, что иногда у меня есть несколько вариантов для одного и того же респондента, но я понимаю, что это одна из возможностей этой модели, и поэтому я не мог найти решение, кто-то, кто работал с дискретным выбором и использовал mlogitпакет может мне помочь? Ниже мой код:

rm(list = ls())
cat("\014")
library(dplyr)
library(conjoint)
set.seed(0)
n <- 1000
#- create dummy data
data = expand.grid(Cor = c("black", "white"),
                   Brand = c("X", "Y"),
                   Price = c("low", "high"))
levn <- rbind("black", "white","X", "Y", "low", "high")
data$trat <- c("A", "B", "C", "D", "E", "F", "G", "H")
UA <- 7
UB <- 6.5
UC <- 6
UD <- 5.5
UE <- 5
UF <- 4.5
UG <- 4
UH <- 3.5
data$utility <- c(UA, UB, UC, UD, UE, UF, UG, UH)
data <- bind_rows(replicate(n, data, simplify = FALSE))
erro <- rnorm(n)
data$erro <- erro
data$determinist <- floor(rowSums(data[,5:6]))
data$id <- rep(1:n, each = 8)
data <- data %>% group_by(id) %>% mutate(determinist = (determinist == max(determinist)))
data$choice <- ifelse(data$determinist=="TRUE",1,0)
library(mlogit)
cbc.mlogit <- mlogit.data(data=data, choice="choice", shape="long", varying=1:3, alt.levels=paste("pos", 1:8), id.var="id")
cbc.ml <- mlogit(choice ~ 0 + Cor + Brand + Price, data = cbc.mlogit)

Используя nnet package, я получил решение, однако я не думаю, что оно правильное, потому что в совместном анализе на основе выбора перехват равен нулю.

library("nnet")
model <- multinom(choice ~ Cor + Brand + Price, data = cbc.mlogit)
summary(model)

Уже исследовал другие посты и не смог решить, любая помощь приветствуется!

...