问题标签 [mlogit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R 的 mlogit 是否处理多尺寸的独特替代方案?
客户面临一系列独特的选择。例如:
客户 1 在备选方案 A1、A2、A3、A4 之间进行选择;客户 1 在选项 B1、B2 之间进行选择;客户 2 在备选方案 C1、C2、C3 之间进行选择;客户 2 在备选方案 D1、D2、D3 等之间进行选择
任何 R 包都可以处理它吗?
例如.csv
mlogit失败
而对于 example1.csv,其中的替代品数量是恒定的
一切都很好。
r - 使用 mnlogit R 包时产生的 NaN 和系统完全是奇异错误
我目前正在从事一个涉及估计多项 logit 模型的行为建模项目。在互联网上搜索后,我发现了 mnlogit 包,它似乎非常适合我。
我试图建模的问题可以描述如下:向客户提供 5 种产品,他要从中选择 1 种或决定不选择任何一种。这些产品因价格和交货时间而异。这些产品的价格和交货时间在所有客户中都是固定的。因此,客户可以从 1、2、3、4、5 和 0 6 个选项中进行选择。选项 1 代表产品 1,而选项 0 代表不选择任何产品的选项。产品 1 和 2 的价格为 1 美元,产品 3 和 4 的价格为 2 美元,产品 5 的价格也为 1 美元。另一方面,备选方案 0 的成本为 0。
为了模拟客户的决定,我自己生成了 7 个参数。我将“价格”定义为替代自变量,这意味着所有替代品的价格对产品效用的权重相同。此外,我将“替代”定义为替代特定变量,它产生另外 6 个参数。我的目标是模拟产品由于交付时间而产生的吸引力,因为每个替代品都有固定的交付时间。我使用以下表达式计算了产品的效用:
product_utility = ( B_alternative [ alternativeNum ] * alternativeNum) + ( B_price * productPrice)
其中 B_alternative 是我的替代参数的向量:[0, 0.6, 0.5, 0.45, 0.3, 0.3],该向量的每个索引代表一个替代数字(B_alternative[0] :替代 0 的参数);B_price 是我的价格参数:-0.5。
所以,我为每个产品计算的效用是:0.00;0.10;0.50;0.35;0.20;1.00 ,是替代 0 的实用程序的第一个数字,产品 5 的最后一个数字。
在计算了这些效用后,我用以下表达式计算了客户选择第 n 个产品的概率:
Pn = exp(Un) / sum(exp(U))
其中 'sum(U)' 是所有实用程序的总和
计算出的概率(加起来为 1)为:0.1097376;0.1212788;0.1809268;0.1557251;0.1340338;0.2982978 ,对于从 0 到 5 的每个相应产品。
使用这些概率和随机函数,我在表中生成了一个“模式”列,代表客户的选择:
最后,按照我在 CRAN 上找到的文档,我编写了这段代码来估计模型:
但是,无论我设置什么参数,我总是会收到以下两条错误消息:
solve.default(hessian, gradient, tol = 1e-24) 中的错误:Lapack 例程 dgesv:系统完全是奇异的:U[7,7] = 0
或者
在 sqrt(diag(vcov(object))) 中:产生了 NaN
r - R mlogit 在solve.default(H,g [!fixed])中抛出错误:系统在计算上是奇异的:倒数条件数
我正在尝试对以下数据进行离散选择建模。基本上,30 位顾客有 16 种不同的披萨选择。他们可以选择一种以上的比萨饼,他们选择的比萨饼由选择变量表示。
当我使用以下命令转换我的数据时。我尝试在这里进行一些更改,例如添加chid.var = "chid"
和alt.levels=c(1:16)
. 如果我同时使用两者alt.levels
,alt.var
它会给我一个错误,说披萨已经存在并将被替换。但是,如果我使用它们中的任何一个,我都不会出错。
最后,当我使用 mlgit 命令时,我得到了这个错误。
这是我在 stackoverflow 上的第一篇文章。我经常访问这个网站,到目前为止,我已经找到了解决方案,因此不需要发帖。我浏览了几乎所有类似的帖子,但都是徒劳的。我是离散选择建模的新手,所以我不知道我是否在这里犯了任何基本错误。
另外,我不确定是什么chid.var
。
r - R中的mlogit包:拦截和替代特定的单个变量
我正在尝试处理 R 中的 mlogit 包以建立运输模式选择模型。我搜索了类似的问题,但我没有找到任何东西。
我在 logit 模型中有一组 3 个备选方案(步行、汽车、运输),具有备选特定变量(不同备选方案的相同参数)和单独备选特定变量(例如:0(如果否)/1(如果是)家-目的地旅行,仅适用于步行模式)。
我只想在其中一种替代方案(自动)中进行拦截,但我无法做到这一点。使用 reflevel,它只指一种选择,我得到两个截距。
这不像我希望的那样工作。
此外,我想设置替代的特定变量,如我之前所说。将它们插入 mlogit 公式的第 2 部分需要我两个参数值,但我只想有一个参数,用于上述替代方案。
有人可以帮我吗?
r - R mlogit 模型,需要 TRUE/FALSE 的缺失值,20 个无效因子级别警告
我正在尝试使用 R 中的 mlogit 包运行多项逻辑回归。我已在此处上传数据https://drive.google.com/file/d/0B_o3xTWAYdbuRGw0dzNFRzd2NEk/view?usp=sharing。
数据包含两个不同的选择变量,我想在它们上运行相同的模型。我像这样运行第一个模型:
该模型运行没有问题。然后我在另一个选择变量上运行相同的模型:
我收到以下错误:
并且该警告消息重复 20 次。
我不确定这些错误中的任何一个在我的模型中意味着什么。上一篇文章(mlogit:需要 TRUE/FALSE 的缺失值)表明我的第一个错误发生是因为我的数据不是宽格式,或者因为有些人没有选择任何替代方案。就我而言,这些解释都不是正确的。我所看到的警告消息表明 mlogit 对变量是因子或数字的反应很糟糕。但我不太明白为什么这在多项回归环境中很重要,或者问题如何在如此大的数据集中只发生了 20 次。
任何建议将不胜感激!
r - mlogit 中的持久计算奇点
在尝试使用 mlogit 包时,我的问题与持久计算奇点有关。
首先,稍微介绍一下我的数据:
我的数据涉及在体育选秀的背景下预测选择。每支球队从同一个球员池中进行有序选择,具有球队和球员的属性。因此,在 mlogit 的语言中,每个“团队”都是一个个体,每个“玩家”都是一个替代品。举一个过于简单的例子,假设五支球队各选择一名球员。
我正在尝试使用 mlgit 包。我首先使用 mlogit.data 重新格式化我的数据。
结果看起来像:
显然,我有更多的球员和变量,但这是基本结构。
然后我尝试运行条件 logit 回归:
我反复遇到以下错误:
我在其他地方看到的一个解决方案建议尝试通过删除高度相关的变量来消除不可逆性。但是,这似乎并不能解决我的问题。即使在简单的二变量模型中,例如具有低相关性的示例数据(显然,具有不同的数字),该问题仍然存在,具有不同的确切数字。事实上,它甚至发生在单个回归器中!
我正在尝试做的简化版本:
也许这只是一个容忍问题,但鉴于这些变量并不是特别相关,这将是令人惊讶的。这似乎是比变量相关性更微妙的东西是错误的。我还检查并提供了单独的个人/替代特定变量。例如,添加特定于团队的变量(例如“Team_MSA_Size”)不会改变任何内容:
我的数据结构是否有问题,或者没有正确使用 mlogit 语法会导致这种情况?我将如何解决它?
我确实找到了这个看似相似的主题,但在没有相关数据的情况下,我确实很难遵循它。接受的答案是否表明每个选择必须始终具有相同的确切选择?如果是这样,那对我来说将是非常不幸的,因为显然每支球队都会看到不同的名单,因为球员被选拔了。如果这是问题所在,这里是否有一个简单的解决方案,或者是否将其置于您自己的代码估算器领域?
如果有帮助,我很乐意提供更多数据或其他详细信息。
编辑:有人要求提供玩具数据。这是一个带有玩具数据的 csv,下面是产生错误的代码。
r - 与R中的序数数据进行联合分析
我想将我用正交设计创建的实验的 R 联合分析。我为联合分析找到的代码在每个选项的属性旁边都有一个评级列。这是我用来实现联合的代码。
但是,我的实验是让申请人根据其属性重新排序 a、b、c、d、e、f、g、h,而不是按照上面代码中使用的方式对它们进行评级。
我想知道是否可以在 R 中应用基于序数的联合分析。
r - R mlogit() 函数:if (abs(x - oldx) < ftol) { 中的错误:需要 TRUE/FALSE 的缺失值
我在使用 mlogit() 函数时遇到问题。我试图预测给定集合中的哪些变量是参加我们调查的人最喜欢的。我试图预测变量的最佳组合以创建最首选的选项。基本上,我们测量的是“名称”、“徽标大小”、“设计”、“主题”、“风味”和“颜色”。
为此,我们有一个庞大的数据集,并试图通过 mlogit.data() 和 mlogit() 运行它,尽管我们不断收到相同的错误:
if (abs(x - oldx) < ftol) { 中的错误:需要 TRUE/FALSE 的缺失值
我的数据都不是负面的或缺失的,所以这很令人困惑。我的语法是:
看起来我的语法有问题,还是我的数据有问题?
r - mlogit 包中的错误:系统在计算上是奇异的:倒数条件数 = 8.87901e-37
我有一个根据 mlogit 标准在 Rstudio 中使用 mlogit.data 命令格式化的数据集。
在创建了一些变量(我没有在此处包含以使问题简短)之后,我使用下面的代码运行了一个多项式 logit 模型,它运行良好。
但是,当我在代码中定义嵌套(如下所示)以执行嵌套 logit 模型时,出现错误:
solve.default(crossprod(attr(x, "gradi")[, !fixed])) 中的错误:系统在计算上是奇异的:倒数条件数 = 8.87901e-37
是什么导致了这个问题?我该如何解决这个问题?
statistics - 估计边际效应时出错
我在检索Stata 15中拟合逻辑回归模型的边际效应时遇到问题。结果变量mathtsbv
是二元的,性别变量sex
也是虚拟的,记录的种族eth
变量是分类的,值范围为0到5。所有缺失值已被排除.
这是我的do-file的摘录:
这是我在 Stata 的日志中得到的错误:
我花了一个多小时在谷歌上搜索和试验:sex
从模型中删除并只保留eth
,并将一个连续变量添加到预测变量列表中。不幸的是,这些都没有解决问题。