r-caret - R插入符号中的两部分模型
问题描述
问题
我正在使用“caret”包来训练和测试预测模型。我有从 -0.138 到 0.9489 的左偏数据,更多的观察值在 0.9489 左右。我想运行一个由逻辑回归(0.9489=1 和所有其他值=0 的观察值)和 OLS 组成的两部分模型。caret 包中是否有一个模型可以执行两部分模型,还是我必须在 caret 中自己构建它?
我试过的
a) 我查看了插入符号中的可用模型,但找不到专门用于两部分模型的模型。我应该分别运行逻辑回归和线性回归并以某种方式将它们组合在插入符号中吗?
b) 我尝试构建模型,但在努力填写模型组件(见下文)。
代码
##Logistic and OLS models
logistic <- glm(binary_outcome ~ lung_function + age + male + pkyrs + disease_type ,
data = data,
family = 'binomial')
ols <- lm(outcome ~ lung_function + age + male + pkyrs + disease_type ,
data = data)
##Cross-validation using caret package
set.seed(123)
train.control <- trainControl(
method = "cv",
number = 10)
##Novice attempt at creating two-part model (get stuck at parameters)
model_list <- list(type="Regression",
library=NULL)
parameters <- data.frame(parameter = c(""))
解决方案
或多或少地手动进行可能会更好。我目前正在尝试使用负二项式障碍模型(下面的代码大纲)来做到这一点。我已经测试并将它(与基本线性模型)与插入符号的输出进行了比较,并且值非常相似。我很想知道是否有人认为这是一个糟糕的主意。
#I think you can use this to get your fitted values, which I store in the main data frame so they can be easily compared to the expected values.
for(i in 1:nrow(df)){
train_set<-df[-i,]
model1<-(**ENTER MODEL HERE AND MAKE "data=train_set"**)
df[i,"fitted_value"] <- predict(model1, newdata = df[i,])}
#Then, you can do whatever types of comparisons you want...
#Visually compare fitted to expected
plot(df$Expected, df$fitted_value)
RMSE<-sqrt(mean((df$fitted_value-df$Expected)^2));RMSE#Root mean squared error
MAE<-(1/(nrow(df)))*sum(abs(df$fitted_value-df$Expected));MAE#Mean Absolute Error
推荐阅读
- javascript - d3 div 在属性更改时不会更改大小
- snap-lang - 如何在 Snap 中返回 JavaScript 中的 Sprite 或 Stage?
- sql-server - Visual Studio Server Explorer not closing sqlsrvr.exe process
- symfony - 在 CompilerPass 类中获取实体管理器
- ruby - graphql-ruby 中的字段授权
- javascript - 通过 es6 脚本创建 Web 表单
- python - 对布尔值 True 和 False 使用算术运算
- python - 使用装饰器调用不带参数的函数
- sql - Nvarchar 与逻辑运算符一起工作?
- java - 如何仅将日期写入文本文件一次?