在R中建立一个Mlogit,对每个类别进行多次观察
我正在尝试在R中使用,我对logits有点陌生,在Mlogit框架中设置问题时遇到了困难。实际上,我并不完全确定mlogit是否是正确的方法。这里有一个类似的问题 考虑一个棒球数据集,其结果变量为“出局”、“单”、“双”、“三”和“本垒打”。对于解释变量,我们有击球手的姓名、投手的姓名和体育场。每个击球手都有数百次观察,包括许多击球手面对同一个投手 我认为这绝对是一个多项式逻辑,因为我有多个分类结果,但我不确定,因为所有的文档似乎都在处理备选方案之间的“选择”,这并不是真的。我试着用一个打者因子变量,另一个投手因子变量和另一个体育场因子变量来开始我的logit模型。当我在R尝试这个时,我在R中建立一个Mlogit,对每个类别进行多次观察,r,mlogit,R,Mlogit,我正在尝试在R中使用,我对logits有点陌生,在Mlogit框架中设置问题时遇到了困难。实际上,我并不完全确定mlogit是否是正确的方法。这里有一个类似的问题 考虑一个棒球数据集,其结果变量为“出局”、“单”、“双”、“三”和“本垒打”。对于解释变量,我们有击球手的姓名、投手的姓名和体育场。每个击球手都有数百次观察,包括许多击球手面对同一个投手 我认为这绝对是一个多项式逻辑,因为我有多个分类结果,但我不确定,因为所有的文档似乎都在处理备选方案之间的“选择”,这并不是真的。我试着用一个打者因子
行中出现错误。名称以下是关于如何开始分析数据的一些建议。
# Your dataset
dts <- structure(list(outcome = c(1L, 1L, 2L, 3L, 1L, 3L, 2L, 3L, 3L,
3L, 3L, 1L, 2L, 2L, 2L, 1L, 3L, 2L, 2L, 2L, 1L, 2L, 3L, 2L, 2L,
2L, 2L, 1L, 1L, 2L, 3L, 2L, 3L, 1L, 2L, 2L, 3L, 2L, 3L, 3L, 3L,
2L, 1L, 1L, 1L, 2L, 3L, 2L, 1L), hitter = structure(c(3L, 3L,
3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 2L, 2L, 2L, 1L, 1L, 1L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("james",
"jill", "john"), class = "factor"), pitcher = structure(c(3L,
3L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 2L, 2L, 2L, 2L, 2L, 3L, 1L, 1L,
2L, 2L, 3L, 3L, 3L, 1L, 1L, 1L, 2L, 2L, 3L, 2L, 1L, 2L, 3L, 2L,
3L, 2L, 1L, 1L, 2L, 2L, 1L, 3L, 3L, 1L, 2L, 2L, 1L, 1L, 2L, 2L
), .Label = c("bill", "bob", "brett"), class = "factor"), place = structure(c(3L,
3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 5L,
5L, 5L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L
), .Label = c("ca", "co", "dc", "ny", "tn"), class = "factor")), .Names = c("outcome",
"hitter", "pitcher", "place"), class = "data.frame", row.names = c(NA,
-49L))
# Estimation of a multinomial logistic regression model
library(mlogit)
dts.wide <- mlogit.data(dts, choice="outcome", shape="wide")
fit.mlogit <- mlogit(outcome ~ 1 | hitter+pitcher+place, data=dts.wide)
# Results
library(stargazer)
stargazer(fit.mlogit, type="text")
# Model coefficients with standard errors and statistical significance (stars)
==========================================
Dependent variable:
---------------------------
outcome
------------------------------------------
2:(intercept) 19.456
(3,056.626)
3:(intercept) 35.179
(4,172.540)
2:hitterjill -17.543
(3,056.625)
3:hitterjill -33.117
(4,172.540)
2:hitterjohn -0.188
(0.996)
3:hitterjohn -1.410
(1.056)
2:pitcherbob -0.070
(1.005)
3:pitcherbob -1.270
(1.091)
2:pitcherbrett -0.908
(1.063)
3:pitcherbrett -2.284*
(1.257)
2:placeco -1.655
(1.557)
3:placeco -17.688
(2,840.270)
2:placedc -19.428
(3,056.626)
3:placedc -34.479
(4,172.540)
2:placeny -18.802
(3,056.625)
3:placeny -32.873
(4,172.540)
2:placetn -18.885
(3,056.626)
3:placetn -32.140
(4,172.540)
------------------------------------------
Observations 49
R2 0.155
Log Likelihood -44.605
LR Test 16.388 (df = 18)
==========================================
Note: *p<0.1; **p<0.05; ***p<0.01
#您的数据集
dts请包含您的数据和代码的一部分,否则人们很难知道发生了什么。我想添加数据,但如何才能做到这一点?我可以使用谷歌表格的链接吗?谢谢,你能告诉我为什么你要设置击球手投手的公式并把它放在“|”的右边吗?我在理解Mlogit想要的“替代”、“独立”、“选择”框架中的问题时遇到困难。文档中说:“用于多项式logit估计的数据集涉及一些个体,这些个体在一组多个替代方案中选择一个或一个顺序。”我的数据集显然没有任何个人做出选择,使用这些模型是否合适?我该如何考虑将其纳入该框架?@SamAsin我意识到这似乎很奇怪,但我确信这是使用mlogit
包中的mlogit
估算多项式逻辑模型的正确方法。或者,您可以使用globaltest
的更“简单”的mlogit
功能。公式是
结果~击球手+投手+位置
。