使用非“选择”(土地覆盖)数据实施mlogit

时间:2020-08-12 23:13:05

标签: r mlogit nnet

我正在尝试使用mlogit和土地覆盖变化数据来实现多项式逻辑回归。但是,由于mlogit似乎是围绕“选择”数据构建的,并且示例仅限于此类数据,因此我很难确定使用此R软件包进行分析的可行性。我相信多项式逻辑回归是适合我要解决的数据集和问题的统计方法,只是不确定mlogit是否具有处理数据的能力。

让我们以这个土地覆被变化数据集为例,其结构与我自己的类似:

dat.url<-'http://www.css.cornell.edu/faculty/dgr2/_static/files/R_ds/lcc.csv'
data<-read.csv(dat.url)
head(data)
  cov     dr   ds  t lspos text
1  CC 2924.3 4853 Nt     A   LC
2  CC 2535.2 5242 Nt     A   LC
3  CO 2146.1 4957 Ci     A   LC
4  NO 2442.3 4690 Ci     A   LC
5  NC 2831.4 5079 Ci     A   LC
6  OO 1576.9 4283 Nt     A   LC

cov变量是一个复合代码,表示在两个时间段内土地覆被的变化方式:第一个字符是初始测量时的土地覆被类别,第二个字符是测地时的土地覆被类别。时间结束。例如,CC代表一个样点,在该样点上,土地覆被没有改变–在两个时期内都是封闭的冠层森林。备选地,CO表示地表从初始时间段的封闭式林冠转变为结束时间的开放式林冠的点。其余变量是土地覆被变化的预测因子:dr –距道路的距离,ds –距定居点的距离,t –土地保有权类别,lspos –景观位置类别,{ {1}} –土壤质地分类。

我对text感到担心的是,这并不是大多数示例所能选择的数据。因此,如果我尝试遵循this exercise published by Train & Croissant,则将数据转换为mlogit的长格式会导致以下结果:

mlogit

因此,对于每个采样点,所有dat.mlog<-dfidx(data, varying=NULL, shape="wide", choice="cov") head(dat.mlog) ~~~~~~~ first 10 observations out of 9576 ~~~~~~~ cov dr ds t lspos text idx 1 TRUE 2924.3 4853 Nt A LC 1:CC 2 FALSE 2924.3 4853 Nt A LC 1:CN 3 FALSE 2924.3 4853 Nt A LC 1:CO 4 FALSE 2924.3 4853 Nt A LC 1:NC 5 FALSE 2924.3 4853 Nt A LC 1:NN 6 FALSE 2924.3 4853 Nt A LC 1:NO 7 FALSE 2924.3 4853 Nt A LC 1:OC 8 FALSE 2924.3 4853 Nt A LC 1:ON 9 FALSE 2924.3 4853 Nt A LC 1:OO 10 TRUE 2535.2 5242 Nt A LC 2:CC ~~~ indexes ~~~~ id1 id2 1 1 CC 2 1 CN 3 1 CO 4 1 NC 5 1 NN 6 1 NO 7 1 OC 8 1 ON 9 1 OO 10 2 CC indexes: 1, 2 类别中的预测变量的值都相同–用idx格式化的方式,我的解释是,对于每个单独的点,我的预测变量的结果对于每个土地覆被过渡都是相同的。这似乎在将问题引入此数据的分析中。尽管我无法在此示例数据集上运行dfidx()模型本身(另一个单独的问题),但是当我在自己的数据上运行该模型时,每个预测变量的p值= 1 –似乎有点可疑。对于这种类型的土地覆盖数据,是否有人真的mlogit()mlogit的正确实现?

请注意,有几篇已发表的论文将dfidx()与Landcover数据结合使用(尽管我没有找到任何支持代码来查看其实现方式),尽管我可以使用mlogit运行这些模型/ nnet,我希望能够使用multinom,以便将随机效应项合并到模型中。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:3)

mlogit可以处理此类数据。我认为这应该是关于如何为mlogit编写公式的问题。

公式写成outcome ~ choice specific vars | chooser specific vars 您需要文档所说的纯“多项式模型”,它可以通过以下调用来实现:summary(mlogit(mode ~ 0 | income, data = Fish))(在?mlogit中)。

> summary(mlogit(cov ~ 0| dr + ds, dat.mlog))

Call:
mlogit(formula = cov ~ 0 | dr + ds, data = dat.mlog, method = "nr")

Frequencies of alternatives:choice
      CC       CN       CO       NC       NN       NO       OC       ON       OO 
0.334586 0.262218 0.206767 0.015977 0.080827 0.042293 0.012218 0.014098 0.031015 

nr method
6 iterations, 0h:0m:1s 
g'(-H)^-1g = 0.000677 
successive function values within tolerance limits 

Coefficients :
                  Estimate  Std. Error z-value  Pr(>|z|)    
(Intercept):CN  6.0043e-01  1.5913e-01  3.7731 0.0001612 ***
(Intercept):CO -4.0284e-02  1.6288e-01 -0.2473 0.8046562    
(Intercept):NC -3.4319e+00  4.7527e-01 -7.2210 5.163e-13 ***
(Intercept):NN -1.1944e+00  2.2550e-01 -5.2969 1.178e-07 ***
(Intercept):NO -2.4593e+00  3.0252e-01 -8.1293 4.441e-16 ***
(Intercept):OC -4.5496e+00  5.9764e-01 -7.6127 2.687e-14 ***
(Intercept):ON -2.5914e+00  4.9472e-01 -5.2381 1.622e-07 ***
(Intercept):OO -2.4502e+00  3.4192e-01 -7.1660 7.723e-13 ***
dr:CN          -4.2871e-04  1.0852e-04 -3.9504 7.802e-05 ***
dr:CO          -7.1969e-05  6.4000e-05 -1.1245 0.2607944    
dr:NC          -9.9542e-07  1.4613e-04 -0.0068 0.9945650    
dr:NN           8.1395e-06  7.5500e-05  0.1078 0.9141481    
dr:NO           4.8619e-05  8.3781e-05  0.5803 0.5617037    
dr:OC           1.4399e-04  1.0952e-04  1.3147 0.1886161    
dr:ON           1.5983e-04  1.1730e-04  1.3626 0.1730170    
dr:OO           7.3787e-05  9.3620e-05  0.7882 0.4306060    
ds:CN          -3.0704e-04  1.1484e-04 -2.6735 0.0075059 ** 
ds:CO          -2.3050e-04  1.0504e-04 -2.1944 0.0282063 *  
ds:NC           2.1811e-04  2.4650e-04  0.8848 0.3762581    
ds:NN          -1.4912e-04  1.3878e-04 -1.0745 0.2825894    
ds:NO           1.7379e-04  1.5609e-04  1.1134 0.2655345    
ds:OC           4.5264e-04  2.3766e-04  1.9046 0.0568347 .  
ds:ON          -5.5640e-04  3.4013e-04 -1.6358 0.1018749    
ds:OO          -2.6007e-05  1.9131e-04 -0.1359 0.8918706    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Log-Likelihood: -1726.7
McFadden R^2:  0.027107 
Likelihood ratio test : chisq = 96.218 (p.value = 1.7634e-13)

否则,您将获得1的p值和0的系数。

summary(mlogit(cov ~ dr + ds| 0, dat.mlog))

Call:
mlogit(formula = cov ~ dr + ds | 0, data = dat.mlog, method = "nr")

Frequencies of alternatives:choice
      CC       CN       CO       NC       NN       NO       OC       ON       OO 
0.334586 0.262218 0.206767 0.015977 0.080827 0.042293 0.012218 0.014098 0.031015 

nr method
1 iterations, 0h:0m:0s 
g'(-H)^-1g = 1E+10 
last step couldn't find higher value 

Coefficients :
     Estimate Std. Error z-value Pr(>|z|)
dr 0.0000e+00 9.9283e+10       0        1
ds 0.0000e+00 1.1212e+11       0        1

Log-Likelihood: -2337.8