首页 > 解决方案 > 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(""))

标签: r-caret

解决方案


或多或少地手动进行可能会更好。我目前正在尝试使用负二项式障碍模型(下面的代码大纲)来做到这一点。我已经测试并将它(与基本线性模型)与插入符号的输出进行了比较,并且值非常相似。我很想知道是否有人认为这是一个糟糕的主意。

#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

推荐阅读