如何在 R 中创建预测概率图?

问题描述 投票:0回答:1

使用 faraway 包中的债务数据集所以基本上首先我被要求使用 multinom 函数创建一个模型并使用 ccarduse 作为响应和 prodebt 作为单个协变量。然后我必须创建属于每个的预测概率图 信用卡使用类别与债务评分。

模型使用 multinom 函数并使用 ccarduse 作为响应和 prodebt 作为单一协变量。

`mod1<-multinom(ccarduse~prodebt, debt)`

属于每个人的预测概率图 信用卡使用类别与债务评分

我使用了以下功能:

    `inclevels <- 0:464
    debt$ccarduse<-as.factor(debt$ccarduse)
    debt$prodebt<-as.factor(debt$prodebt)
    preds=predict(mod1,data.frame(income=inclevels),type="probs")
Warning message:
'newdata' had 465 rows but variables found have 464 rows
    plot(inclevels, preds[,1],type="l",ylim=c(.15,.6),xlab="prodebt",ylab="Probabilities of credit card use",
         cex.lab=1.3, cex.axis=1.3)
    lines(inclevels, preds[,2], lty=2)
    lines(inclevels, preds[,3],lty=3)
    legend(x = "topright", c("1","2","3"), lty=c(3,2,1),cex=1.5)`

如所见,我收到一条警告消息,情节看起来非常令人毛骨悚然。有没有我做错了什么或者我可以修复它让它看起来整洁

enter image description here

r regression glm multinomial
1个回答
0
投票

你的问题是,模型中没有使用

income
(或者你发布了错误的代码?)。除此之外,您的代码实际上对我来说看起来不错,而且情节也不错。请参阅使用模型中实际存在的变量的示例:

data('debt', package='faraway')
mod1 <- nnet::multinom(ccarduse ~ prodebt, debt)
prodebtlv <- 1:6
pred <- predict(mod1, data.frame(prodebt=prodebtlv), type="probs")


plot(prodebtlv, pred[, 1], type="l", ylim=range(pred), 
     xlab="prodebt", ylab="Probabilities of credit card use", 
     cex.lab=1.3, cex.axis=1.3)
lines(prodebtlv, pred[, 2], lty=2)
lines(prodebtlv, pred[, 3], lty=3)
legend(x = "topright", c("1", "2", "3"), lty=c(3, 2, 1))

资料:

data('birthwt', package='MASS')
bwt <- birthwt
bwt$low <- as.integer(bwt$low)
bwt$low[bwt$low == 1] <- sample.int(3, length(bwt$low[bwt$low == 1]), replace=TRUE) 
© www.soinside.com 2019 - 2024. All rights reserved.