簡體   English   中英

R mlogit在solve.default(H,g [!fixed])中引發錯誤:系統在計算上是單數的:倒數條件數

[英]R mlogit throws Error in solve.default(H, g[!fixed]):system is computationally singular: reciprocal condition number

我正在嘗試對以下數據進行離散選擇建模。 基本上,有30位顧客有16種不同的披薩選擇。 他們可以選擇一種以上的披薩,並且選擇的披薩由選擇變量指示。

pizza   cust choice pan thin pineapple veggie sausage romano mozarella oz
1      1  Cust1      0   1    0         1      0       0      1         0  1
2      2  Cust1      1   0    1         1      0       0      0         0  0
3      3  Cust1      0   0    0         1      0       0      0         1  1
4      4  Cust1      1   0    1         1      0       0      0         0  0
5      5  Cust1      1   1    0         0      1       0      0         0  1
6      6  Cust1      0   0    1         0      1       0      1         0  0
7      7  Cust1      0   0    0         0      1       0      0         0  1
8      8  Cust1      1   0    1         0      1       0      0         1  0
9      9  Cust1      0   1    0         0      0       1      0         1  0
10    10  Cust1      1   0    1         0      0       1      0         0  1
11    11  Cust1      0   0    0         0      0       1      1         0  0
12    12  Cust1      0   0    1         0      0       1      0         0  1
13    13  Cust1      0   1    0         0      0       0      0         0  0
14    14  Cust1      1   0    1         0      0       0      0         1  1
15    15  Cust1      0   0    0         0      0       0      0         0  0
16    16  Cust1      0   0    1         0      0       0      1         0  1
17     1 Cust10      0   1    0         1      0       0      1         0  1
18     2 Cust10      0   0    1         1      0       0      0         0  0
19     3 Cust10      0   0    0         1      0       0      0         1  1
20     4 Cust10      0   0    1         1      0       0      0         0  0

當我使用以下命令來轉換我的數據時。 我嘗試在此處進行一些更改,例如添加chid.var = "chid" alt.levels=c(1:16) chid.var = "chid"alt.levels=c(1:16) 如果同時使用alt.levelsalt.var則會給我一個錯誤,指出披薩已經存在並將被替換。 但是,如果我使用它們中的任何一個,我都不會出錯。

pz <- mlogit.data(pizza,shape = "long",choice = "choice",
                  varying = 4:8, id = "cust", alt.var =  "pizza")

最后,當我使用mlogit命令時,出現此錯誤。

mlogit(choice ~ pan + thin + pineapple + veggie + sausage + romano + mozarella + oz, pz)

Error in solve.default(H, g[!fixed]) : 
  system is computationally singular: reciprocal condition number = 8.23306e-19

這是我關於stackoverflow的第一篇文章。 我經常訪問該網站,到目前為止,由於我已經找到解決方案,所以無需發布。 我通過像幾乎所有類似的帖子就一個,但徒勞無功。 我是離散選擇建模的新手,所以我不知道自己是否在犯任何基本錯誤。

另外,我不太確定chid.var做什么。

無法解決此問題。 雖然可以從nnet包中使用multinom函數。 它似乎有效。 驗證答案。

數據集與問題中顯示的相同,因此無需任何轉換

library("nnet")
pizza_model <- multinom(choice ~ Price + IsThin + IsPan ,data=pizza_all)
summary(pizza_model)

其中,choice是要預測的因果分類變量。 Price,IsThin和IsPan是自變量。 下面是輸出

Call:
multinom(formula = choice ~ Price + I_cPan + I_cThin, data = pizza_all)

Coefficients:
                  Values Std. Err.
(Intercept)  0.007192623 1.3298018
Price       -0.149665357 0.1464976
I_cPan       0.098438084 0.3138538
I_cThin      0.624447867 0.2637110

Residual Deviance: 553.8519 
AIC: 561.8519

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM