R 编程/多项式模型
外观
< R 编程
- mlogit 包。
- mnlogit 包
- Bayesm 包
- multinom() nnet
- multinomial(), 用于vglm() VGAM
- clogit()在 survival 包中
- mclogit 包。
我们考虑一个 多项式有序逻辑 模型,其中阈值未知。首先,我们模拟假数据。我们在逻辑分布中抽取残差。然后我们抽取一些解释变量 x,并将潜在变量 ys 定义为 x 的线性函数。请注意,我们将常数设置为 0,因为在这个模型中,常数和阈值无法同时识别。因此,我们需要固定其中一个参数。然后,我们定义阈值 (-1,0,1),并使用 cut()
函数定义观察变量 y。所以 y 是一个有序的多项式变量。
N <- 10000
u <- rlogis(N)
x <- rnorm(N)
ys <- x + u
mu <- c(-Inf,-1,0,1, Inf)
y <- cut(ys, mu)
plot(y,ys)
df <- data.frame(y,x)
可以使用 MASS 包中的 polr()
函数通过最大似然估计该模型。由于无法识别常数和阈值,R 默认假设常数等于 0。
library(MASS)
fit <- polr(y ~ x, method = "logistic", data = df)
summary(fit)
- bayespolr()(arm) 执行多项式有序逻辑的贝叶斯估计
library("arm")
fit <- bayespolr(y ~ x, method = "logistic", data = df)
summary(fit)
我们通过在正态分布中抽取误差项并在 4 个类别中截断潜在变量来生成假数据。
N <- 1000
u <- rnorm(N)
x <- rnorm(N)
ys <- x + u
mu <- c(-Inf,-1,0,1, Inf)
y <- cut(ys, mu)
plot(y,ys)
df <- data.frame(x,y)
可以使用最大似然方法拟合模型。可以使用 MASS 包中的 polr()
函数以及 probit
方法来完成此操作。
library(MASS)
fit <- polr(y ~ x, method = "probit", data = df)
summary(fit)
- bayespolr()(arm) 执行多项式有序概率的贝叶斯估计
该模型由 Beggs、Cardell 和 Hausman 于 1981 年在计量经济学中提出。[2][3] 一个应用是 Combes 等人的论文,解释了候选人成为教授的排名。[3] 在生物医学文献中也被称为 Plackett–Luce 模型,或在营销中被称为 爆炸逻辑模型。[3]
- 可以使用由 Gary King 及其合著者开发的 anchors 包估计条件有序分层概率。[4]
- ↑ Harry Joe、Laing Wei Chou 和 Hongbin Zhang (2006)。mprobit:二元/序数响应的多元概率模型。R 包版本 0.9-2。
- ↑ Beggs, S; Cardell, S; Hausman, J (1981). "Assessing the potential demand for electric cars". Journal of Econometrics. 17: 1–19. doi:10.1016/0304-4076(81)90056-7.
- ↑ a b c Combes, Pierre-Philippe; Linnemer, Laurent; Visser, Michael (2008). "Publish or peer-rich? The role of skills and networks in hiring economics professors". Labour Economics. 15 (3): 423–41. doi:10.1016/j.labeco.2007.04.003.
- ↑ Jonathan Wand、Gary King、Olivia Lau (2009)。anchors:用于锚定小插图数据的软件。统计软件杂志,即将出版。网址 http://www.jstatsoft.org/。