Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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如何获得多标称logit的置信区间?_R_Logistic Regression_Multinomial - Fatal编程技术网

R如何获得多标称logit的置信区间?

R如何获得多标称logit的置信区间?,r,logistic-regression,multinomial,R,Logistic Regression,Multinomial,让我用UCLA在multinominal logit上的示例作为运行示例--- 库(nnet) 图书馆(外文) ml只需在模型对象上使用confint函数即可 ci <- confint(test, level=0.95) 编辑: 至于计算预测概率的置信区间,我引述如下: 是否有可能估算出该项目的置信区间 多元函数的概率 否,因为置信区间(sic)不适用于单个参数 概率(sic)。预测是一个概率分布,所以 不确定性必须是Kd空间中的某个区域,而不是某个区间。 为什么你想要关于预测的不确定

让我用UCLA在multinominal logit上的示例作为运行示例---

库(nnet)
图书馆(外文)

ml只需在模型对象上使用
confint
函数即可

ci <- confint(test, level=0.95)
编辑:

至于计算预测概率的置信区间,我引述如下:

是否有可能估算出该项目的置信区间 多元函数的概率

否,因为置信区间(sic)不适用于单个参数 概率(sic)。预测是一个概率分布,所以 不确定性必须是Kd空间中的某个区域,而不是某个区间。 为什么你想要关于预测的不确定性陈述(通常称为 公差间隔/区域)?在这种情况下,您有一个事件 发生与否,有意义的不确定性是概率 分配。如果你真的需要一个信任区域,你可以 从拟合参数的不确定性进行模拟,预测和 以某种方式总结得出的经验分布


这可以通过
effects
软件包来实现,我在交叉验证中为另一个问题展示了这个软件包

让我们看看你的例子

library(nnet)
library(foreign)

ml <- read.dta("http://www.ats.ucla.edu/stat/data/hsbdemo.dta")
ml$prog2 <- relevel(ml$prog, ref = "academic")
test <- multinom(prog2 ~ ses + write, data = ml)
如果我们愿意,我们还可以使用
效果
中的工具绘制预测概率及其各自的置信区间

plot(fit.eff)

我指的是预测平均值周围的95%置信区间。我需要的不是多标称系数的CI。相反,我需要预测概率的CI——预测(test,newdata=dses,“probs”)。我不明白里普利教授(上面引文的作者)为什么对此大惊小怪。在我看来,他的反对意见似乎适用于任何“置信区间”(或任何你想称之为置信区间的东西),但这是一种相当标准的做法。我深入研究了
nnet:::predict.multinom
nnet::predict.nnet
,和
nnet::vcov.multinom
。如果可以构造模型矩阵
X
,使预测概率为
X%*%coef(model)
,则方差(在logit标度上为
X%*%vcov(model)%*%t(X)
,然后您将在logit scale上构建CI并进行反向转换。然而,上述函数不够透明,我认为我无法在短时间内破解它们。如果您可以证明有序响应的合理性,
ordinal::predict.clm()
允许使用
se.fit
选项。
library(nnet)
library(foreign)

ml <- read.dta("http://www.ats.ucla.edu/stat/data/hsbdemo.dta")
ml$prog2 <- relevel(ml$prog, ref = "academic")
test <- multinom(prog2 ~ ses + write, data = ml)
require(effects)

fit.eff <- Effect("ses", test, given.values = c("write" = mean(ml$write)))

data.frame(fit.eff$prob, fit.eff$lower.prob, fit.eff$upper.prob)

  prob.academic prob.general prob.vocation L.prob.academic L.prob.general L.prob.vocation U.prob.academic
1     0.4396845    0.3581917     0.2021238       0.2967292     0.23102295      0.10891758       0.5933996
2     0.4777488    0.2283353     0.2939159       0.3721163     0.15192359      0.20553211       0.5854098
3     0.7009007    0.1784939     0.1206054       0.5576661     0.09543391      0.05495437       0.8132831
  U.prob.general U.prob.vocation
1      0.5090244       0.3442749
2      0.3283014       0.4011175
3      0.3091388       0.2444031
plot(fit.eff)