问题标签 [multinomial]
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 中使用多项式函数进行多项式回归
我正在考虑在 Cross-Validated 中发布我的问题,但决定来这里。我正在使用 nnet 包中的 multinom() 函数来估计受年龄和教育程度影响的就业、失业或失业的几率。我需要一些翻译方面的帮助。
我有以下数据集,其中包含一个因分类变量就业状况(EmpSt)和两个独立分类变量:年龄(Age)和教育水平(教育)。
以下是级别的摘要:
- 一、什么是估计方程(模型)
我想确定调用的估计方程(模型)是什么
df$EmpSt<-relevel(df$EmpSt,ref="Employed")
multinom(EmpSt ~ Age + Education,data=df)
所以我可以把它写在我的研究论文中。据我了解, Employed 是基本级别,此调用的 logit 模型是:
其中 i 和 n 分别是变量年龄和教育的类别(对不起,符号混乱)。如果我对 multinom() 产生的逻辑模型的理解不正确,请纠正我。我不打算包含测试的摘要,因为它有很多输出,所以下面我只包含 call 的输出>test
:
鉴于我对 multinom() 生成的 logit 模型的理解是正确的,因此系数是使用基本级别的记录几率。为了得到实际的赔率,我通过电话来反对,exp(coef(test))
这给了我实际的赔率:
这让我想到了下一个问题。
- 二、概率
我想知道是否有一种方法可以根据年龄和教育程度来获得失业与就业的实际概率,例如,如果我 22 岁并且拥有高中文凭,那么失业的概率是多少。很抱歉这个冗长的问题。谢谢你的帮助。让我知道是否需要进一步澄清。
r - 以计数矩阵作为响应的多项式
根据multinom
, package的帮助nnet
,“响应应该是具有 K 列的因子或矩阵,这将被解释为每个 K 类的计数。” 我尝试在第二种情况下使用这个函数,得到一个错误。
这是我所做的示例代码:
在这里我得到:
我怎么解决这个问题?
额外的问题:我还注意到我们可以使用带有因子预测器的多项式,例如predictor <- factor(c(1,2,2,3,1,2,3,3,1,2))
. 我无法理解这在数学上是如何可能的,因为多项式线性 logit 回归应该只适用于连续或二分预测变量。
matlab - 多项式系数的高效 Matlab 实现
我想计算多项式系数:
满意的地方n=n0+n1+n2
这个算子的Matlab实现可以很容易的在函数中完成:
但是,当索引大于 170 时,阶乘将是无限的,这NaN
在某些情况下会生成,例如180!/(175! 3! 2!) -> Inf/Inf-> NaN
.
- 在 C 的情况下:“你可以把所有的阶乘组成列表,然后找到列表中所有数字的素因数分解,然后将顶部的所有数字与底部的数字相消,直到数字完全减少”。
- 在 Python 的情况下:“利用阶乘(n)= gamma(n+1)这一事实,使用 gamma 函数的对数并使用加法而不是乘法,减法而不是除法”。
第一个解决方案似乎非常慢,所以我尝试了第二个选项:
我将原始和 log_gamma 实现与以下代码进行比较:
但是,某些情况下的结果略有不同,如下面的直方图所示。
因此,我应该假设我的实现是正确的还是数字错误不能证明数字分歧是合理的?
r - R:每个变量的回归取决于所有其他变量
在R
中,我有以下内容data.frame
:
我想multinom
为每个变量相对于其他变量拟合一个回归函数,例如 ,而不明确使用变量名称。换句话说,我想得到这个结果:
但是在 for 循环中,不使用变量名(这样我就可以对 any 使用相同的代码data.frame
)。与此类似的东西:
(此代码不起作用。)
也许我的问题是微不足道的,但我不知道如何进行。
谢谢!
r - 多项式 logit 模型和嵌套 logit 模型
我在程序 R 中使用 mlogit 包。我已将数据从原始宽格式转换为长格式。这是转换后的 data.frame 的示例,我将其称为“long_perp”。所有的自变量都是个体特定的。我在数据集中有 4258 个独特的观察结果。
“act2”是因变量,包括漂浮在水面上的鸟在靠近船时可能做出的选择;飞行、潜水或无。我对这些概率如何与 data.frame 中的剩余自变量相关感兴趣,即与船舶路径 (pdist) 的垂直距离海况 (sea)、速度 (avgknots)、到岸边的距离 (shore) 等。变量由二分变量、因子变量和连续变量组成。
我运行了两个多项式 logit 模型,一个包括所有选择选项,另一个只包括一个子集。然后,我将这些模型与 hmftest() 函数进行了比较,以测试 IIA 假设。至少可以说,结果令人困惑。我将包含两个模型的代码和测试输出(以防我在代码中未指定模型)。
如您所见,卡方统计量为负!我假设我要么 1. 做错了事,要么 2. 违反了 IIA。这个结果适用于选择子集(飞行,潜水),但是选择子集(无,潜水)支持 IIA 假设?这让我很困惑。
接下来,我尝试制定一个嵌套模型来放松 IIA 假设。我将选项嵌套为nest1 = none,nest2 = fly,dive。这对我来说很有意义,因为这似乎是一个合乎逻辑的中断,鸟决定做出反应或不做出反应,然后决定做出哪种反应。
我不清楚如何运行嵌套的 logit 模型(即使在阅读了 mlogit、Croissant vignette和Train vignette的两个小插图之后)。
当我按照羊角面包小插图中的示例运行分析时,我收到以下错误。
我已经阅读了一些有关此错误消息的信息,它可能由于完全分离而发生。我查看了一些数据表,但不相信这种情况正在发生,因为我有 4,000 多个观察值,并且只有一个因子变量具有 2 个以上的水平(它有 3 个)。
非常感谢您对这些特定问题的帮助,但我也愿意接受可以用来回答我的问题的替代分析。我主要对飞行概率作为与船舶路径垂直距离的函数感兴趣。
谢谢,蒂姆
r - 使用 nnet 包评估 R 中多项式 logit 的拟合优度
我使用multinom()
nnet 包中的函数在 R 中运行多项逻辑回归。nnet 包不包括 p 值计算和 t 统计量计算。我找到了一种使用此页面中的两个有尾 z 检验来计算 p 值的方法。举一个计算多项式 logit 的测试统计量的示例(不是真正的 t-stat,而是等效的),我计算了 Wald 的统计量:
我取系数的平方并除以系数的标准误差的平方。然而,似然比检验是逻辑回归拟合优度的优选度量。由于对似然函数的理解不完整,我不知道如何编写代码来计算每个系数的似然比统计量。使用函数的输出计算每个系数的似然比统计量的方法是multinom()
什么?谢谢你的帮助。
r - 样本大小和概率变化时的高效多项式抽样
这个问题涉及从具有不同样本大小和概率的多项分布中进行有效抽样。下面我描述了我使用的方法,但想知道是否可以通过一些智能矢量化来改进它。
我正在模拟生物体在多个种群中的扩散。人口中的个体以概率j
分散到人口中。给定种群 1 的初始丰度为 10,以及分别扩散到种群 1、2 和 3 的概率,我们可以用 模拟扩散过程:i
p[i, j]
c(0.1, 0.3, 0.6)
rmultinom
我们可以将其扩展到考虑n
源人群:
上面,p
是从一个人口(列)移动到另一个人口(行)的概率矩阵,X
是初始人口规模的向量。现在可以使用以下方法模拟分散在每对种群(以及留在原地的个体)的个体数量:
i
其中第 th 行第 th 列元素的值是从一个人口移动到另一个人口j
的个体数量。这个矩阵的 给出了新的人口规模。j
i
rowSums
我想重复多次,使用恒定的概率矩阵,但具有不同的(预定义的)初始丰度。下面的小例子实现了这一点,但对于较大的问题效率低下。得到的矩阵给出了 5 个模拟中每个种群中三个种群中每个种群的扩散后丰度,其中种群具有不同的初始丰度。
有没有办法更好地矢量化这个问题?
r - 为什么 multinom() 为每个级别的结果预测很多行概率?
我有一个多项式逻辑回归,结果变量有 6 个级别:10、20、60、70、80、90
我想预测每组给定输入值与 y 的每个级别相关联的概率。所以我运行这个:
但是我没有得到 6 个概率(每个级别的结果一个),而是得到了很多行的概率。每行有 6 个概率(总和为 1),但我不知道为什么我会得到很多行以及我应该信任哪一行。
我在编码中遗漏了什么还是需要设置任何参数?
r - 使用 R 计算多项式预测的误差的方法
首先,很抱歉重新发布,但我添加了一个示例代码来解释我的请求。希望这更清楚。
在使用“multinom”函数(包 nnet)将多项模型拟合到我的数据后,我想展示所选变量控制其他变量值的效果。我知道“效果”包主要做我想要的,但我希望能够自己计算预测误差(置信区间)。有人能告诉我方法,如果可能的话,R代码?我认为我们应该使用 delta 方法,但我不确定在这种情况下如何应用它。
这是一个小示例代码(基于效果包中可用的数据)
我唯一需要的是能够计算此图中显示的错误值!
先感谢您,