繁体   English   中英

在R中使用for循环运行多个GLM模型

[英]Run several GLM models using for loop in R

我正在尝试做一些实验,我想使用相同的变量但使用不同的训练样本在R中运行多个GLM模型。

这是一些模拟数据:

resp <- sample(0:1,100,TRUE)
x1 <- c(rep(5,20),rep(0,15), rep(2.5,40),rep(17,25))
x2 <- c(rep(23,10),rep(5,10), rep(15,40),rep(1,25), rep(2, 15))
dat <- data.frame(resp,x1, x2)

这是我尝试使用的循环:

n <- 5
for (i in 1:n)
{
  ### Create training and testing data
  ## 80% of the sample size
  # Note that I didn't use seed so that random split is performed every iteration.
  smp_sizelogis <- floor(0.8 * nrow(dat))

  train_indlogis <- sample(seq_len(nrow(dat)), size = smp_sizelogis)

  trainlogis <- dat[train_indlogis, ]
  testlogis  <- dat[-train_indlogis, ]

  InitLOogModel[i] <- glm(resp ~ ., data =trainlogis, family=binomial)
}

但是不幸的是,我遇到了这个错误:

Error in InitLOogModel[i] <- glm(resp ~ ., data = trainlogis, family = binomial) : 
  object 'InitLOogModel' not found

有什么想法吗。

我建议您将插入号用于尝试执行的操作。 学习需要花费一些时间,但其中包含许多“最佳实践”。 了解基础知识后,您将可以快速尝试使用glm以外的模型,并轻松地将模型彼此进行比较。 这是您的示例中经过修改的代码,可以帮助您入门。

## caret
library(caret)

# your data
resp <- sample(0:1,100,TRUE)
x1 <- c(rep(5,20),rep(0,15), rep(2.5,40),rep(17,25))  
x2 <- c(rep(23,10),rep(5,10), rep(15,40),rep(1,25), rep(2, 15))
dat <- data.frame(resp,x1, x2)

# so caret knows you're trying to do classification, otherwise will give you an error at the train step
dat$resp <- as.factor(dat$resp)

# create a hold-out set to use after your model fitting
# not really necessary for your example, but showing for completeness
train_index <- createDataPartition(dat$resp, p = 0.8,
                                   list = FALSE,
                                   times = 1)

# create your train and test data
train_dat <- dat[train_index, ]
test_dat <- dat[-train_index, ]

# repeated cross validation, repeated 5 times
# this is like your 5 loops, taking 80% of the data each time
fitControl <- trainControl(method = "repeatedcv",
                           number = 5,
                           repeats = 5)

# fit the glm!
glm_fit <- train(resp ~ ., data = train_dat,
                 method = "glm",
                 family = "binomial",
                 trControl = fitControl)

# summary
glm_fit

# best model
glm_fit$finalModel

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM