预测 3 个水平的因素和 return 每个因素的百分比

Predict a factor of 3 levels and return the % of each factor

我正在尝试使用一组变量预测三级因子。该组为A、B、C

m<-glm(as.factor(Group)~Sex+BloodType+Pressure,data=Hel,family = "binomial")

newdata <- data.frame(Sex="M",BloodType="A+", Pressure=80)

predict(m,newdata)

和这个 returns:

        1 
0.7133324 

我想把它还给我:

A        B        C
20.00   40.00    40.000

我该怎么做?谢谢

我猜你必须使用像 nnet 这样的允许多项式回归的东西?

library(nnet)
trn = sample(1:nrow(iris),100)
fit_nnet <- multinom(Species ~ ., iris[trn,])

head(predict(fit_nnet,iris[-trn,],type="prob"))
      setosa   versicolor    virginica
7  1.0000000 2.348893e-11 2.166176e-58
9  0.9999323 6.765017e-05 2.438304e-52
10 0.9999940 6.035319e-06 1.530614e-56
12 1.0000000 1.355834e-09 1.315066e-57

有两个问题需要解决:

首先,glm 只能进行两级结果的逻辑回归。如果您提供具有两个以上级别的结果变量,它会将除第一个(参考)级别之外的所有级别合并到第二个级别。要进行多项式回归,您需要使用不同的函数(有几个包可以进行多项式回归,例如 MASS 包中的 polrmultinom nnet 包(请参阅@Stupidwolf 的回答),VGAM 包中的 vglm;另请参阅 mlogitgmnl 包。

其次,predict(m1, newdata) 提供对数赔率尺度的预测。要获得概率尺度的预测,您需要执行 predict(m1, newdata, type="response")。需要设置类似的选项(尽管参数 and/or 参数选项可能具有不同的名称)以获得多项式模型概率尺度的预测。