Aquí hay un intento de hacer lo que querías.
# Setting up some sample data
require(dummies)
df <- data.frame(categorial=rep(c(1,2,3), each=20), x=rnorm(60))
flevels <- dummy(df$categorial)
df$categorial <- factor(df$categorial)
df$y=20 + df$x*3 + flevels%*%c(3,1,2) + rnorm(60)*2
Utilizo una regresión para obtener el nivel mínimo del factor y luego reordenarlo:
# Now we start with trying to find the minimum cateogry. However, note that this does not work in every context!
summary(helpreg <- lm(y~x+factor(categorial) - 1, data=df))
Coefficients:
Estimate Std. Error t value Pr(>|t|)
x 2.9944 0.2334 12.83 <2e-16 ***
factor(categorial)1 22.9640 0.4472 51.35 <2e-16 ***
factor(categorial)2 21.0720 0.4390 48.00 <2e-16 ***
factor(categorial)3 22.1300 0.4364 50.71 <2e-16 ***
Entonces empiezo a ordenar lo mínimo:
factors <- grep('categorial', names(coef(helpreg))) # --- replace categorial with your variable name
minimumf <- which(coef(helpreg)[factors]==min(coef(helpreg)[factors]))
A continuación, se renivela
df$categorial <- relevel(df$categorial, ref=minimumf)
Y en mi caso funciona - probablemente también te funcione a ti....
summary(lm(y~x+factor(categorial), data=df))
Estimate Std. Error t value Pr(>|t|)
(Intercept) 21.0720 0.4390 48.003 < 2e-16 ***
x 2.9944 0.2334 12.828 < 2e-16 ***
factor(categorial)1 1.8920 0.6341 2.984 0.00421 **
factor(categorial)3 1.0580 0.6193 1.708 0.09310 .
Los comentarios, por supuesto, son muy apreciados.