首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多项回归nnet包的概率结果

多项回归nnet包的概率结果
EN

Stack Overflow用户
提问于 2017-05-13 18:11:57
回答 1查看 1.2K关注 0票数 1

下午好,当我用NNET软件包进行逻辑回归时,我的输出出现了问题。我想预测CategoryHS_TR (Return Period)SLR (Sea Level Rise)。多项式模型,称为fit,是根据来自x.sub子集的信息计算的。可能有4种不同的类别:1、2、3或4。

x.sub

代码语言:javascript
复制
   POINTID  HS_TR  SLR  Category
       4     10    0.0     3
       4     10    0.6     4
       4     50    0.0     3
       4     50    0.6     4
       4    100    0.0     4
       4    100    0.6     4

当我运行model> fit <- multinom(Category ~ HS_TR + SLR, x.sub, maxit=3000)时,会得到以下结果:

代码语言:javascript
复制
Coefficients:
    (Intercept)       HS_TR         SLR 
    -30.5791517   0.4130478  62.0976951 

    Residual Deviance: 0.0001820405 
    AIC: 6.000182

现在我有了多项式,我想知道一个特殊场景(d3)和HS_TR的预测类别。我定义了d3并应用该预测,得到了合理的结果:

代码语言:javascript
复制
d3<-data.frame("HS_TR"=c(10),"SLR"=c(0))
prediction <-(predict(fit,d3))

我得到了

代码语言:javascript
复制
> prediction
[[1]]
[1] 3 
Level: 3

然而,当我计算得到预测prediction <-(predict(fit,d3, type="probs"))的概率时,我得到以下结果:

代码语言:javascript
复制
> prediction
[[1]]
1 
0 

这是没有意义的,因为它说有概率0。因为我运行的模型给出了CATEGORY的预测,我不明白为什么,概率是0。有人知道我为什么会得到它吗?

如果有人知道我如何解决这个问题,我就能解决它。提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-14 18:23:49

你对分离/完全分离有问题(谷歌这个词用来获取更多信息)。此页给出了一个很好的介绍,其中包含了以下引语:

当结果变量完全分离预测变量或预测变量组合时,就会发生完全分离。

如果您查看数据,例如使用

代码语言:javascript
复制
> xtabs(~ Category + HS_TR + SLR, data=x.sub)
, , SLR = 0

        HS_TR
Category 10 50 100
       3  1  1   0
       4  0  0   1

, , SLR = 0.6

        HS_TR
Category 10 50 100
       3  0  0   0
       4  1  1   1

然后,您将看到SLRHS_TR的组合完全决定了SLR=0.6的结果。您需要指定一个更简单的模型或获取更多的数据来提供稳定的拟合。

在您的例子中,您的输出只有两个可能的类别,因此您应该能够拟合一个日志线性模型或logistic回归模型,并得到相同的结果。如果您创建了一个新变量Cat,它是Category的一个因素,那么您将看到一个警告指向正确的方向。

代码语言:javascript
复制
> glm(Cat ~HS_TR + SLR, data=x.sub, family="binomial") 
Warning message:
glm.fit: fitted probabilities numerically 0 or 1 occurred 

我认为multinom没有检测到数据中的问题。但是,如果您查看fit的summary,则会发现其中两个参数估计的标准误差非常大。这也表明估计数不稳定,分离可能是一个问题。

代码语言:javascript
复制
> summary(fit)
Call:
multinom(formula = Category ~ HS_TR + SLR, data = x.sub, maxit = 3000)

Coefficients:
                 Values  Std. Err.
(Intercept) -30.5791517 356.932851
HS_TR         0.4130478   5.137396
SLR          62.0976951 634.584184

Residual Deviance: 0.0001820405 
AIC: 6.000182 

我认为multinom中的收敛检查缺乏某种检查。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43956426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档