Cómo especificar covariables en un modelo de regresión
El conjunto de datos que me gustaría analizar se ve así
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)
Ahora me gustaría realizar una regresión con variable dependientewin.frac
y todas las demás variables (p1
, ...,p49
) como variables explicativas.
Sin embargo, con todos los enfoques que probé, obtengo el coeficiente parap49
como NA, con el mensaje "1 no definido por singularidades". Lo intenté
modspec <- paste("win.frac ~", paste("p", 1:49, sep="", collapse=" + "))
fit1 <- lm(as.formula(modspec), data=dat)
fit2 <- lm(win.frac ~ ., data=dat)
Curiosamente, la regresión funciona si uso 48 variables explicativas. Esto puede (p2, ..., p49) o no (p1, ..., p48) contener el p49, por lo tanto, creo que esto no está relacionado con la variable p49 en sí. También probé valores más grandes den
, con el mismo resultado.
También intentébetareg
desde elbetareg
paquete, ya quewin.frac
está restringido entre 0 y 1. La regresión en este caso también falla, con el mensaje de error (traducido aproximadamente) "error en optim (...): valor no finito de optim especificado"
library(betareg)
fit3 <- betareg(as.formula(modspec), data=dat, link="log")
Ahora estoy atascado. ¿Cómo puedo realizar esta regresión? ¿Hay un máximo de variables? ¿Se debe este problema al hecho de que las variables explicativas son 0 o 1?
Cualquier pista es muy apreciada!