首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用多项回归创建评分公式

使用多项回归创建评分公式
EN

Stack Overflow用户
提问于 2018-10-19 00:44:20
回答 1查看 56关注 0票数 0

我正在尝试使用多项式回归建立一个评分模型。

其中一些数据来自数据库,而目标值unconditional来自评估,具有3个潜在的模态。我尝试了多项式回归和有序逻辑回归,发现多项式的效果更好。

我的目标是建立一个在我的数据库中使用的分数,这将有助于预测任何在我的数据库中注册的新病例的unconditional

下面是一个可重现的例子:

代码语言:javascript
运行
复制
testdata <- as.data.frame(cbind(
  dependency.cat <- c('Low dependency <30%', 'High dependency >60%', 'High dependency >60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'High dependency >60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'High dependency >60%', 'Low dependency <30%', 'High dependency >60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'Low dependency <30%', 'High dependency >60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'Low dependency <30%', 'Low dependency <30%', 'Low dependency <30%', 'Average dependency 30-60%', 'High dependency >60%', 'High dependency >60%', 'High dependency >60%', 'High dependency >60%', 'Average dependency 30-60%', 'Average dependency 30-60%', 'High dependency >60%', 'High dependency >60%', 'High dependency >60%', 'High dependency >60%', 'High dependency >60%', 'Average dependency 30-60%'),
  case.size <- c('Case size 1', 'Case size 4-5', 'Case size 2', 'Case size 4-5', 'Case size 2', 'Case size 6 or more', 'Case size 2', 'Case size 2', 'Case size 3', 'Case size 6 or more', 'Case size 3', 'Case size 6 or more', 'Case size 2', 'Case size 4-5', 'Case size 1', 'Case size 6 or more', 'Case size 3', 'Case size 4-5', 'Case size 6 or more', 'Case size 4-5', 'Case size 4-5', 'Case size 4-5', 'Case size 3', 'Case size 1', 'Case size 1', 'Case size 1', 'Case size 6 or more', 'Case size 6 or more', 'Case size 4-5', 'Case size 4-5', 'Case size 4-5', 'Case size 2', 'Case size 4-5', 'Case size 6 or more', 'Case size 6 or more', 'Case size 6 or more', 'Case size 3', 'Case size 4-5', 'Case size 2'),
  gender <- c('Male', 'Female', 'Female', 'Female', 'Female', 'Female', 'Female', 'Male', 'Female', 'Female', 'Female', 'Male', 'Female', 'Female', 'Male', 'Male', 'Male', 'Female', 'Female', 'Male', 'Female', 'Female', 'Female', 'Male', 'Male', 'Male', 'Female', 'Male', 'Female', 'Male', 'Male', 'Female', 'Female', 'Male', 'Female', 'Female', 'Female', 'Female', 'Male'),
  has.baby <- c('No', 'No', 'No', 'No', 'Yes', 'Yes', 'No', 'No', 'No', 'No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'No', 'No', 'Yes', 'No', 'No', 'No', 'No', 'No', 'No', 'No', 'No', 'No', 'Yes', 'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'No'),
  able.to.work <- c('Yes', 'Yes', 'No', 'Yes', 'No', 'Yes', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'No', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'No', 'Yes', 'Yes'),
  arrivalyear <- c('2012', '2017', '2013', '2014', '2012', '2015', '2012', '2017', '2012', '2013', '2014', '2015', '2015', '2014', '2017', '2015', '2012', '2013', '2014', '2012', '2013', '2013', '2012', '2013', '2016', '2013', '2012', '2015', '2015', '2017', '2016', '2012', '2015', '2017', '2012', '2016', '2016', '2016', '2013'),
  unconditionnal <- c('OK', 'OK', 'OK', 'OK', 'OK', 'OK', 'OK', 'OK', 'OK', 'OK', 'OK', 'NotOK', 'OK', 'OK', 'Average', 'NotOK', 'Average', 'OK', 'NotOK', 'OK', 'OK', 'OK', 'OK', 'OK', 'NotOK', 'NotOK', 'OK', 'Average', 'OK', 'OK', 'Average', 'OK', 'OK', 'NotOK', 'OK', 'OK', 'OK', 'OK', 'OK')))

names(testdata) <- c("dependency.cat" ,"case.size" ,"gender" ,"has.baby" ,"able.to.work" ,"arrivalyear" ,"unconditionnal")

library(nnet)
model <- multinom(unconditionnal ~ ., data = testdata, trace = FALSE)
testdata$unconditionnal.predicted <- predict(model, testdata)
testdata <- cbind(testdata, predict(model, testdata, type ="p"))

如果这是一个简单的逻辑回归,我可以使用一个分界点,然后使用截距和术语来建立一个评分公式,但在这里,我迷失了,因为我站在预测unconditionnal.predicted一边,然后在另一边,每个类别predict(model, testdata, type ="p")有3个概率。

我如何对我的多项式回归进行逆向工程,以开发评分公式?看起来就像..。

代码语言:javascript
运行
复制
score = dependency.cat --- case.size --- gender -- has.baby -- able.to.work -- arrivalyear  
   if score > X then OK
  if score < Z then NotOK

也许我所想的是没有意义的?如果不是,我应该使用什么方法?

谢谢

我看到了https://stats.stackexchange.com/questions/76513/how-to-find-cutoff-values-in-multinomial-regression,但它对我没有帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-12-11 15:17:01

您可以找到每一行的最大概率,并获得它们的列名。以下是代码

代码语言:javascript
运行
复制
library(nnet)
model <- multinom(unconditionnal ~ ., data = testdata, trace = FALSE)
p <- predict(model, type="probs", newdata = testdata[,-7])
table(testdata$unconditionnal,colnames(p)[apply(p,1,which.max)])

结果相当不错。

代码语言:javascript
运行
复制
            Average NotOK OK
 Average       4     0  0
 NotOK         0     6  0
 OK            0     1 28

希望能有所帮助。

最好的。

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

https://stackoverflow.com/questions/52878834

复制
相关文章

相似问题

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