O modelo em questão pode ser escrito
y= p ( x ) + ( x - x1)⋯(x−xd)(β0+β1x+⋯+βpxp)+ε
onde é um polinômio de grau d - 1 passando por pontos predeterminados ( x 1 , y 1 ) , … , ( x d , y d ) e ε é aleatório. (Use o polinômio de interpolação de Lagrange .) Escrita ( x - x 1 ) ⋯ ( x - x d ) = rp(xi)=yid−1(x1,y1),…,(xd,yd)ε nos permite reescrever este modelo como(x−x1)⋯(x−xd)=r(x)
y−p(x)=β0r(x)+β1r(x)x+β2r(x)x2+⋯+βpr(x)xp+ε,
que é um problema de regressão múltipla OLS padrão com a mesma estrutura de erro que o original , onde as variáveis independentes são os quantidades de r ( x ) x i , i = 0 , 1 , ... , p . Simplesmente calcule essas variáveis e execute seu software de regressão familiar , evitando que ele inclua um termo constante. As advertências usuais sobre regressões sem termo constante se aplicam; em particular, o R 2 pode ser artificialmente elevado; as interpretações usuais não se aplicam.p+1r(x)xi, i=0,1,…,pR2
(Na verdade, a regressão através da origem é um caso especial desta construção, em que , ( x 1 , y 1 ) = ( 0 , 0 ) , e p ( x ) = 0 , de modo que o modelo é y = β 0 x + ⋯ + β p x p + 1 + ε . )d=1(x1,y1)=(0,0)p(x)=0y=β0x+⋯+βpxp+1+ε.
Aqui está um exemplo trabalhado (em R
)
# Generate some data that *do* pass through three points (up to random error).
x <- 1:24
f <- function(x) ( (x-2)*(x-12) + (x-2)*(x-23) + (x-12)*(x-23) ) / 100
y0 <-(x-2) * (x-12) * (x-23) * (1 + x - (x/24)^2) / 10^4 + f(x)
set.seed(17)
eps <- rnorm(length(y0), mean=0, 1/2)
y <- y0 + eps
data <- data.frame(x,y)
# Plot the data and the three special points.
plot(data)
points(cbind(c(2,12,23), f(c(2,12,23))), pch=19, col="Red", cex=1.5)
# For comparison, conduct unconstrained polynomial regression
data$x2 <- x^2
data$x3 <- x^3
data$x4 <- x^4
fit0 <- lm(y ~ x + x2 + x3 + x4, data=data)
lines(predict(fit0), lty=2, lwd=2)
# Conduct the constrained regressions
data$y1 <- y - f(x)
data$r <- (x-2)*(x-12)*(x-23)
data$z0 <- data$r
data$z1 <- data$r * x
data$z2 <- data$r * x^2
fit <- lm(y1 ~ z0 + z1 + z2 - 1, data=data)
lines(predict(fit) + f(x), col="Red", lwd=2)
Os três pontos fixos são mostrados em vermelho sólido - eles não fazem parte dos dados. O ajuste mínimo de quadrados do polinômio de quarta ordem sem restrições é mostrado com uma linha pontilhada preta (possui cinco parâmetros); o ajuste restrito (da ordem cinco, mas com apenas três parâmetros livres) é mostrado com a linha vermelha.
Inspecionar a saída dos mínimos quadrados ( summary(fit0)
e summary(fit)
) pode ser instrutivo - deixo isso para o leitor interessado.