Как запустить регрессию для нескольких случайных подмножеств данных - PullRequest
0 голосов
/ 03 марта 2019

У меня большой набор данных, и я хочу выбрать из него случайные подмножества (randomly_live), а затем запустить модель (логистическая регрессия) в R. Поэтому я хочу запустить 100 логистических регрессий, чтобы подсчитать, сколько раз коэффициенты были с положительнымиподпиши, сколько раз они были значительными и показывают лучшую модель по критериям Хосмера-Лемешоу.

Я думаю, что это возможно сделать по циклу, но я чувствую себя действительно смущенным этим.

Этоэто кусок кода, который у меня есть для одной итерации

    randomRows = function(df,n){
      return(df[sample(nrow(df),n),])
    }


    set.seed(567)
    df.split <- split(full_data, full_data$ID)


    df.sample <- lapply(df.split, randomRows, 1)
    df.final <- do.call("rbind", df.sample)
    randomly_live <- randomRows(df.final, nrow(default))
    data1 <- rbind(default, randomly_live)


    model = glm(default ~ log(assets)+…+H1, data = data1,
                  family = 'binomial')


    library(ResourceSelection)

    hl <- hoslem.test(model$y, fitted(model), g=10)

Может кто-нибудь, пожалуйста, помогите?

1 Ответ

0 голосов
/ 03 марта 2019

Вот кое-что, что могло бы работать

myResults <- list()

for(i in 1:100){
  model <- glm(vs ~ . , data = mtcars)
  hl <- hoslem.test(model$y, fitted(model), g=10)
  pos <- length(which(coef(model)>0))
  pvals <- summary(model)$coefficients[,4]
  hl_pval <- hl$p.value
  myResults[[i]] <- list(pos = pos, pvals = pvals,hl_pval=hl_pval)
}

# lowest pvalue
which.min(unlist(lapply(myResults, FUN = function(x) x[[3]])))
...