문제

나는 그것을 발견했다 mlogit-패키지 다항 혼합 로짓 모델을 추정하기 위한 다항 로짓 모델의 경우.훌륭한 삽화를 읽은 후 나는 설명된 어떤 예에도 내 데이터를 적용할 수 없다는 것을 발견했습니다.

이제 나는 내 문제에 대한 도움을 바라며 글을 쓰고 내 상황을 설명하기 위해 최소한의 예를 만들었습니다.

문제는 다음과 같습니다.어딘가에 'Q' 자음이 붙은 단어가 있어요.이제 이 단어를 듣고 Q, U 또는 기타 자음을 들었는지 말하라는 임무를 받은 사람들을 대상으로 실험이 수행되었습니다.이는 음절 위치나 실제/비실제 단어와 같은 일부 요소에 따라 모델링되어야 합니다.

최소한의 예에서는 음절 위치를 사용하여 4명의 사람과 그들의 답변을 만들었습니다.

library(mlogit)
library(nnet)
set.seed(1234)
data <- data.frame(personID = as.factor(sample(1:4, 40, replace=TRUE)),
               decision = as.factor(sample(c("Q","U", "other"), 40, replace=TRUE)),
               syllable = as.factor(sample(1:4, 40, replace=TRUE)))
summary(data)
 personID  decision  syllable
 1:11     other:10   1:18    
 2:10     Q    :18   2: 9    
 3:10     U    :12   3: 5    
 4: 9                4: 8 

내가 아는 한 nnet'에스 multinom기능은 혼합 모델에는 적용되지 않습니다.

modNnet1 <- multinom(decision ~ syllable, data=data)

먼저 나는 mlogit.data-파일의 모양을 바꾸는 기능입니다.동료와 논의한 후 우리는 Alternative.Specific.variable이 없다는 결론에 도달했습니다.

 dataMod <- mlogit.data(data, shape="wide", choice="decision", id.var="personID")

 mod1 <- mlogit(formula = decision ~ 0|syllable,
           data = dataMod,
           reflevel="Q", rpar=c(personID="n"), panel=TRUE)
  Error in names(sup.coef) <- names.sup.coef : 
    'names' attribute [1] must be the same length as the vector [0]

 mod2 <- mlogit(formula = decision ~ personID|syllable,
           data = dataMod,
           reflevel="Q", rpar=c(personID="n"), panel=TRUE)
  Error in solve.default(H, g[!fixed]) : 
     Lapack routine dgesv: system is exactly singular: U[3,3] = 0

아니요, 어떻게 해야할지 모르겠어서 여기에 도움을 요청합니다.하지만 저는 이런 종류의 문제가 다음과 같은 방법으로 해결될 수 있다고 믿습니다. mlogit 아직은 안보이네요 ;)

도움이 되었습니까?

해결책

그만큼 rpar 인수는 대체 특정 변수만 허용합니다.모델 수식에 개인별 ID를 지정할 필요가 없습니다. 이는 다음을 포함하여 처리됩니다. id.var = something 에서 mlogit.data 명령.예를 들어, 대체 특정 공변량이 있는 경우 acov, 다음에 대해 임의의 경사를 허용할 수 있습니다. acov 패널 전체에서:

N = 200
dat <- data.frame(personID = as.factor(sample(1:4, N, replace=TRUE)),
               decision = as.factor(sample(c("Q","U", "other"), N, replace=TRUE)),
               syllable = as.factor(sample(1:4, N, replace=TRUE)),
               acov.Q = rnorm(N), acov.U = rnorm(N), acov.other = rnorm(N))
dataMod <- mlogit.data(dat, shape="wide", choice="decision", id.var="personID", varying = 4:6)
mlogit(formula = decision ~ acov|syllable, rpar = c(acov = "n"), panel = T, data = dataMod)

각 대안(무작위 경사가 아님)에 대해 무작위, 개인별 절편을 사용하여 모델을 맞추려고 하는 것 같습니다.불행히도, 내 생각엔 당신이 그렇게 할 수 없을 것 같아요 mlogit (그러나 참조 이 게시물).

대체 특정 공변량이 없을 때 무작위 절편을 맞추는 데 작동하는 한 가지 옵션은 다음과 같습니다. MCMCglmm.

library(MCMCglmm)
priors = list(R = list(fix = 1, V = 0.5 * diag(2), n = 2),
              G = list(G1 = list(V = diag(2), n = 2)))
m <- MCMCglmm(decision ~ -1 + trait + syllable,
              random = ~ idh(trait):personID,
              rcov = ~ us(trait):units,
              prior = priors,
              nitt = 30000, thin = 20, burnin = 10000,
              family = "categorical",
              data = dat)

관련된 문제는 사전 선택, 마르코프 체인의 수렴 등입니다.Florian Jaeger의 연구실 블로그에는 다음과 같은 내용이 있습니다. 다항 모델에 대한 짧은 튜토리얼 MCMCglmm 이 외에도 도움이 될 수 있는 MCMCglmm 선적 서류 비치.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top