有问题的模型可以写成
y=p(x)+(x−x1)⋯(x−xd)(β0+β1x+⋯+βpxp)+ε
其中是度数的多项式,它通过预定点和是随机的。(使用拉格朗日插值多项式。)编写可以使我们将此模型重写为 d − 1 (x 1,y 1),… ,(x d,y d)ε (x − x 1)⋯ (x − x d)= r (x )p(xi)=yid−1(x1,y1),…,(xd,yd)ε(x−x1)⋯(x−xd)=r(x)
y−p(x)=β0r(x)+β1r(x)x+β2r(x)x2+⋯+βpr(x)xp+ε,
这是一个标准OLS多元回归问题,其误差结构与原始误差相同,其中自变量为量。只需计算这些变量并运行您熟悉的回归软件,即可确保避免包含常数项。关于不带常数项的回归的一般警告适用;特别地,可以人为地高;通常的解释不适用。- [Rp+1r(x)xi, i=0,1,…,pR2
(实际上,通过原点回归是此构造的一种特殊情况,其中,和,因此模型为)(X 1,ÿ 1)= (0 ,0 )p (X )= 0 Ý = β 0 X + ⋯ + β p X p + 1 + ε 。d=1(x1,y1)=(0,0)p(x)=0y=β0x+⋯+βpxp+1+ε.
这是一个工作示例(在中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)
三个固定点以红色实线显示-它们不是数据的一部分。无约束的四阶多项式最小二乘拟合用黑色虚线显示(它具有五个参数);红线显示了约束拟合(5阶,但只有三个自由参数)。
检查最小二乘输出(summary(fit0)
和summary(fit)
)具有指导意义-我留给有兴趣的读者阅读。