問題のモデルは書くことができます
y=p(x)+(x−x1)⋯(x−xd)(β0+β1x+⋯+βpxp)+ε
ここで、は、所定の点(x 1、y 1)、… 、(x d、y d)を通る次数d − 1の多項式で、εはランダムです。(ラグランジュ補間多項式を使用します。)(x − x 1)⋯ (x − x(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重回帰問題であるオリジナルと同じエラー構造を持つ独立変数でありの量は、rは(X )X I、iは= 0 、1 、... 、P。これらの変数を計算し、使い慣れた回帰ソフトウェアを実行するだけで、定数項が含まれないようにします。定数項のない回帰に関する通常の警告が適用されます。特に、Rp+1r(x)xi, i=0,1,…,pは人為的に高くなる可能性があります。通常の解釈は適用されません。R2
(実際には、原点を通る回帰は、この構成の特別な場合である、(X 1、Y 1)= (0 、0 )、及びP (X )= 0のモデルであるように、Y = β 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)
3つの固定点は赤一色で表示されます。これらはデータの一部ではありません。制約のない4次多項式の最小二乗近似は黒い点線で示されています(5つのパラメーターがあります)。制約付きの適合(5次、ただし3つの自由パラメーターのみ)は赤い線で示されています。
最小二乗出力(summary(fit0)
およびsummary(fit)
)を調べることは有益な場合があります。これは興味のある読者にお任せします。