Запустить много линейной регрессии модели - PullRequest
0 голосов
/ 16 апреля 2020

Предположим, у меня есть данные для запуска многих моделей линейной регрессии.

Данные: https://www.img.in.th/image/TNHdEq

Дано столбец C1 - это переменная y.

x переменная - это столбец C4 путем создания из столбцов C2 и C3, Model1 создается первой строкой столбца C2 и 8 оставшихся строк столбца C3, Model2 создается первыми 2 строками столбец C2 и оставшиеся 7 строк C3, затем для Model9 создаются первые 8 строк C2 и последняя строка C3.

Пример переменной x:

model1 : { b, d, i,...,z}

model2 : { b, f, i,..., z}

.

.

.

model9 : {b, f, h,..., z}

И выберите модели по максимуму R в квадрате.

Вопрос: Как его кодировать? l oop?

Использование R и python.

Ps. Действительно, я использую упорядоченную модель пробита. И у меня есть много строк 100 +.

Спасибо.

1 Ответ

0 голосов
/ 16 апреля 2020

Для запуска многих моделей можно сделать циклы *apply и вывести результаты в объект списка. В этом случае переменной l oop будет номер строки i, варьирующийся от 1 до nrow(df1) - 1.

n <- nrow(df1)
probit_list <- lapply(seq.int(n)[-n], function(i){
  C4 <- c(df1$C2[seq.int(i)], df1$C3[-seq.int(i)])
  C4 <- ordered(C4, levels = levels(df1$C2))
  dftmp <- data.frame(C1 = df1$C1, C4)
  tryCatch(glm(C1 ~ C4, data = dftmp, family = binomial(link = "probit")),
           error = function(e) e)
})

Чтобы узнать, сколько выдало ошибку, запустите

ok <- sapply(probit_list, inherits, "error")
sum(!ok)

Данные испытаний

set.seed(1234)
n <- 9
df1 <- data.frame(
  C1 = rbinom(n, 1, prob = c(0.4, 0.6)),
  C2 = ordered(sample(1:4, n, TRUE), levels = 1:4),
  C3 = ordered(sample(1:4, n, TRUE), levels = 1:4)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...