robusta - Regresión lineal con una intercepción fija conocida en R
regresion polinomial en r (3)
Quiero calcular una regresión lineal usando la función lm () en R. Además, quiero obtener la pendiente de una regresión, donde explícitamente le doy el intercepto a lm()
.
Encontré un ejemplo en Internet y traté de leer la R-help "? Lm" (lamentablemente no puedo entenderlo), pero no tuve éxito. ¿Alguien puede decirme dónde está mi error?
lin <- data.frame(x = c(0:6), y = c(0.3, 0.1, 0.9, 3.1, 5, 4.9, 6.2))
plot (lin$x, lin$y)
regImp = lm(formula = lin$x ~ lin$y)
abline(regImp, col="blue")
# Does not work:
# Use 1 as intercept
explicitIntercept = rep(1, length(lin$x))
regExp = lm(formula = lin$x ~ lin$y + explicitIntercept)
abline(regExp, col="green")
Thanls por tu ayuda
He usado tanto offset como I (). También considero que es más fácil trabajar con compensación (como BondedDust) ya que puedes configurar tu intercepto.
Asumiendo Interceptar es 10.
plot (lin$x, lin$y) fit <-lm(lin$y~0 +lin$x,offset=rep(10,length(lin$x))) abline(fit,col="blue")
Podría restar el intercepto explícito de los regresos y luego ajustar el modelo libre de intercepción:
> intercept <- 1.0
> fit <- lm(I(x - intercept) ~ 0 + y, lin)
> summary(fit)
El 0 +
suprime el ajuste del intercepto por lm
.
editar Para trazar el ajuste, use
> abline(intercept, coef(fit))
PD Las variables en su modelo se ven al revés: generalmente es y ~ x
, no x ~ y
(es decir, las regresas deben ir a la izquierda y las regresoras a la derecha).
Veo que ha aceptado una solución usando I (). Pensé que una solución basada en offset () podría haber sido más obvia, pero los gustos varían y después de trabajar con la solución offset puedo apreciar la economía de la solución I ():
with(lin, plot(y,x) )
lm_shift_up <- lm(x ~ y +0 +
offset(rep(1, nrow(lin))),
data=lin)
abline(1,coef(lm_shift_up))