Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中使用嵌套的mlogit函数-内存有问题吗?_R - Fatal编程技术网

在R中使用嵌套的mlogit函数-内存有问题吗?

在R中使用嵌套的mlogit函数-内存有问题吗?,r,R,我正在尝试使用mlogit函数在R中建模决策树。该模型的目的是描述海峡岛屿船民的选择。我们想要建立模型的方式是使用两个决策层。首先,个人选择一项活动(如潜水、浮潜或皮划艇)。其次,根据该活动,他们根据该地点对该活动有利的属性(海带覆盖物、无脊椎动物、鱼类等)选择岛屿上的地点进行访问。我们认为这是一个嵌套结构,首先是活动选择,然后是站点选择。该模型有4个不同的活动和31个不同的站点可供选择,总共有124个独特的“活动选择”选项。我们有111个人的数据,他们每个人都根据不同地点的属性做出了特定的决定

我正在尝试使用
mlogit
函数在R中建模决策树。该模型的目的是描述海峡岛屿船民的选择。我们想要建立模型的方式是使用两个决策层。首先,个人选择一项活动(如潜水、浮潜或皮划艇)。其次,根据该活动,他们根据该地点对该活动有利的属性(海带覆盖物、无脊椎动物、鱼类等)选择岛屿上的地点进行访问。我们认为这是一个嵌套结构,首先是活动选择,然后是站点选择。该模型有4个不同的活动和31个不同的站点可供选择,总共有124个独特的“活动选择”选项。我们有111个人的数据,他们每个人都根据不同地点的属性做出了特定的决定

对于R代码,我们首先描述我们的巢穴。接下来,我们使用mlogit.data函数读入并准备数据,最后使用mlogit函数运行模型。但是,在运行代码之后,我们得到以下结果

error: "Error in model.matrix.default(formula, data: allocMatrix: too many elements specified".  
这是内存问题吗?有没有更有效的方法来解决这个问题?还是我们完全错了

这是我们的代码

library(mlogit)
data.raw = read.csv("final_R_rum.csv",header=T)
underwater = c(1.1,2.1,3.1,4.1,5.1,6.1,7.1,8.1,9.1,10.1,11.1,12.1,13.1,14.1,15.1,16.1,17.1,18.1,19.1,20.1,21.1,22.1,23.1,24.1,25.1,26.1,27.1,28.1,29.1,30.1,31.1)
surface = c(1.2,2.2,3.2,4.2,5.2,6.2,7.2,8.2,9.2,10.2,11.2,12.2,13.2,14.2,15.2,16.2,17.2,18.2,19.2,20.2,21.2,22.2,23.2,24.2,25.2,26.2,27.2,28.2,29.2,30.2,31.2)
consumptive = c(1.3,2.3,3.3,4.3,5.3,6.3,7.3,8.3,9.3,10.3,11.3,12.3,13.3,14.3,15.3,16.3,17.3,18.3,19.3,20.3,21.3,22.3,23.3,24.3,25.3,26.3,27.3,28.3,29.3,30.3,31.3)
land = c(1.4,2.4,3.4,4.4,5.4,6.4,7.4,8.4,9.4,10.4,11.4,12.4,13.4,14.4,15.4,16.4,17.4,18.4,19.4,20.4,21.4,22.4,23.4,24.4,25.4,26.4,27.4,28.4,29.4,30.4,31.4)

data.logit = mlogit.data(data.raw,shape="long",choice="choice",alt.var="site_activity")
results=mlogit(formula=choice~fish_abun|total_TC_water_land,nests = list(underwater, surface, consumptive, land), data=data.logit)
summary(results)

如果没有一个可复制的例子,很难判断。原始数据和由
mlogit.data
生成的数据框的尺寸(
dim
)是多少?尺寸是13764 x 28。我知道如果不查看数据并亲自尝试,一定很难完全理解问题,但不幸的是,我们现在无法发布它!我称之为规格问题。您似乎正在将离散数据编码为十进制值,而将其编码为因子则更有意义。我怀疑“nests”参数指定的是一个31^4矩阵。我也有一些疑问,来自111个人的数据是否足以支持嵌套分析,其中有更多的活动选择的可能性。谢谢你的评论。我把巢穴变成了因子,但仍然有同样的问题。至于有更多的活动选择的可能性比个人,我们一直担心这可能是一个问题。是否有一种方法可以引导数据来解决这个问题?很抱歉,您认为我的建议是将这些类别划分为因子,这样可以解决与内存错误相关的nests规范问题。我认为不应该在每个嵌套组件中指定31个级别。