2017-05-13 44 views
1

下午好,我用NNET包进行逻辑回归时遇到了输出问题。我想用HS_TR (Return Period)SLR (Sea Level Rise)预测Category。 称为fit的多项模型已使用x.sub子集中的信息进行计算。有4级不同的类别可能1,2,3或4多项式回归的概率结果nnet包

x.sub

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 

当我运行模式>fit <- multinom(Category ~ HS_TR + SLR, x.sub, maxit=3000)我得到的结果:

Coefficients: 
    (Intercept)  HS_TR   SLR 
    -30.5791517 0.4130478 62.0976951 

    Residual Deviance: 0.0001820405 
    AIC: 6.000182 

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

d3<-data.frame("HS_TR"=c(10),"SLR"=c(0)) 
prediction <-(predict(fit,d3)) 

我得到

> prediction 
[[1]] 
[1] 3 
Level: 3 

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

> prediction 
[[1]] 
1 
0 

这是没有道理的,因为它说有可能性0.由于我运行的模型给出了CATEGORY的预测,我不明白nd为什么然后,概率是0.有人知道我为什么得到它吗?

如果有人知道我该如何解决问题,以便我可以解决它。先谢谢你。

+0

你能提供一个样本数据集吗? – ekstroem

+0

是的,@ekstroem肯定。考虑将x.sub作为下表(我已经编辑过,可能会更容易阅读): 'POINTID HS_TR SLR类别 19 4 10 0.0 3 20 4 10 0.6 4 21 4 50 0.0 3 22 4 50 0.6 4 23 4 100 0.0 4 24 4 100 0.6 4' – David

+0

David,David,David。看到一个可能有用的问题很遗憾,因为没有阅读SO帮助页面并使用[编辑]创建[MCVE],而是在评论中发布更新。我还看到有147个匹配符合“[nenet预测]”的搜索,如果您不进一步改进问题,我们将试图降低投票率。 –

回答

1

你有分离/完全分离的问题(谷歌这个词来获得更多的信息This page给出了一个很好的介绍含有这句话:

当结果变量分离预测变量的完全分离发生或预测变量的组合完全。

如果你看一下你的数据,例如使用

> 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的结果。您需要指定一个更简单的模型或获取更多数据以提供稳定的拟合。

在您的情况下,您的输出只有两种可能的类别,因此您应该能够拟合对数线性模型或逻辑回归模型并获得相同的结果。如果您创建了一个因子为Category的新变量Cat,则会看到警告,指示您朝着正确的方向行进。

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

我认为multinom没有检测到数据中的问题。然而,如果你看看你的拟合的summary,那么你会发现两个参数估计值的标准误差非常大。这也表明估计不稳定,分离可能是一个问题。

> 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收敛检查缺乏某种检查。

+0

非常感谢您的回复,我相信这是我遇到的问题。将检查出来。 – David