Как указать ковариаты в регрессионной модели
Набор данных, который я хотел бы проанализировать, выглядит следующим образом
n <- 4000
tmp <- t(replicate(n, sample(49,6)))
dat <- matrix(0, nrow=n, ncol=49)
colnames(dat) <- paste("p", 1:49, sep="")
dat <- as.data.frame(dat)
dat[, "win.frac"] <- rnorm(n, mean=0.0176504, sd=0.002)
for (i in 1:nrow(dat))
for (j in 1:6) dat[i, paste("p", tmp[i, j], sep="")] <- 1
str(dat)
Теперь я хотел бы выполнить регрессию с зависимой переменнойwin.frac
и все остальные переменные (p1
...,p49
) в качестве объяснительных переменных.
Однако при всех подходах, которые я пробовал, я получаю коэффициент дляp49
как NA, с сообщением «1 не определено из-за особенностей». Я старался
modspec <- paste("win.frac ~", paste("p", 1:49, sep="", collapse=" + "))
fit1 <- lm(as.formula(modspec), data=dat)
fit2 <- lm(win.frac ~ ., data=dat)
Интересно, что регрессия работает, если я использую 48 объясняющих переменных. Это может (p2, ..., p49) или не может (p1, ..., p48) содержать p49, поэтому я думаю, что это не связано с самой переменной p49. Я также пробовал большие значенияn
с тем же результатом.
Я тоже пробовалbetareg
отbetareg
пакет, так какwin.frac
ограничено между 0 и 1. Регрессия в этом случае также завершается неудачно, с сообщением об ошибке (грубо переведено) «ошибка в optim (...): указано неконечное значение optim»
library(betareg)
fit3 <- betareg(as.formula(modspec), data=dat, link="log")
Теперь я застрял. Как я могу выполнить эту регрессию? Есть ли максимум переменных? Является ли эта проблема из-за того, что объясняющие переменные либо 0 или 1?
Любая подсказка очень ценится!