执行线性回归,但强制求解通过一些特定数据点


14

我知道如何对一组点执行线性回归。也就是说,我知道如何将自己选择的多项式拟合到给定的数据集(从LSE的角度来看)。但是,我不知道的是如何迫使我的解决方案经过我选择的某些特定要点。我之前已经看过这件事,但是我不记得该过程叫什么,更不用说它是如何完成的了。

作为一个非常简单而具体的示例,让我们说我在xy平面上散布了100个点,我选择通过它们拟合任意阶多项式。我知道如何很好地执行此线性回归。但是,让我们说我想“强制”解决方案,例如,通过x坐标,和x = 89的三个数据点(及其对应的y坐标)当然)。x = 19 x = 89x=3x=19x=89

这个通用程序叫什么,它是如何完成的,还有什么我需要注意的陷阱吗?

编辑:

我想补充一点,我正在寻找一种具体的方法来做到这一点。我编写了一个程序,该程序实际上以两种方式之一进行线性回归,即直接或通过梯度下降来反转协方差矩阵。我要问的是,究竟是如何逐步地修改我所做的事情,以使多项式解经过特定点?

谢谢!


如果使用多项式,为什么将其称为“线性”?您希望它通过的每个点都是一个约束,它将降低您的自由度。然后,您可以使用约束优化算法。
curious_cat

4
它是线性的,因为您正在寻找线性组合的系数。例如,如果您想将数据拟合为三次方,那么您将找到()。y = c 0 + c 1 x + c 2 x 2 + c 3 x 3cy=c0+c1x+c2x2+c3x3
Spacey

1
@Mohammad:另一种近似您想要的方法是使用加权最小二乘解,并对要让回归线通过的点赋予非常大的权重。这将迫使解决方案非常接近您选择的要点。
杰森R

@JasonR很高兴在这里见到你。是的,WLS确实是一个有趣的竞争者。由于巧妙的多项式因式分解,并且因为它很好地维护了错误结构,所以我不屑一顾。
Spacey

Answers:


19

有问题的模型可以写成

y=p(x)+(xx1)(xxd)(β0+β1x++βpxp)+ε

其中是度数的多项式,它通过预定点和是随机的。(使用拉格朗日插值多项式。)编写可以使我们将此模型重写为 d 1 x 1y 1x dy dε x x 1x x d= r x p(xi)=yid1(x1,y1),,(xd,yd)ε(xx1)(xxd)=r(x)

yp(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))具有指导意义-我留给有兴趣的读者阅读。


哇,这很有趣。。。如果我说我还完全理解它的话,我会撒谎,但是我在讲话时正在消化它。如果我理解正确,这里我基本上像往常一样解决,但是它们正与相乘,而不是像以前一样只是,是吗?如果这是正确的,那么您如何精确计算?谢谢。- [R X X X - [R X βr(x)xixir(x)
Spacey

我添加了一个有效的示例,穆罕默德。
Whuber

太好了 我会研究的。使用你的榜样,它仍然是有可能迫使多晶硅要经过的点,虽然,对数据的一部分?
Spacey

绝对可以做到:但是在解释p值或任何其他统计信息时要格外小心,因为现在您的约束是基于数据本身的。
whuber

昨晚你的帖子让我兴奋了。我自学了LIP。(LIP很有趣。它类似于傅立叶分解,但带有多边形)。
Spacey

9

如果要强制回归线穿过单个点,则可以通过环形交叉路口来完成。假设您的观点是。您只需将数据以该点为原点重新居中。也就是说,您从每个值中减去,并从每个值中减去。现在,该点位于坐标平面的原点。然后,您可以在抑制截距的同时简单地拟合一条回归线(将截距强制为(0,0)。由于这是线性变换,因此您以后可以轻松地对所有内容进行反变换。 x i x y i y(xi,yi)xixyiy

如果要强制一条线穿过XY平面中的两个点,这也很容易做到。任何两点都可以用一条线拟合。您可以使用点-坡度公式计算坡度,然后使用点,坡度和直线方程式之一来查找截距。

注意,可能无法通过坐标平面中的三个点拟合直线。但是,我们可以保证它们可以与抛物线完美匹配(即同时使用和)。同样也有代数,但是随着我们的发展,通过在数据集中包含这三个(更多)点,将模型与软件拟合可能会更容易。同样,通过拟合只能访问这三个点的模型,可以获得最近似于这三个点的直线。 X 2XX2


但是,在这一点上,我不得不提一提,这可能不是一件好事(除非您的理论提供了扎实的理由)。您可能还希望研究贝叶斯回归,您可以在其中允许模型找到数据中信息和一些先验信息的最佳组合(例如,您可以使用这些信息将截距强烈偏向零,例如,强迫它)。


1
龚,谢谢你的回答。我已经稍微修改了我的问题。我不了解贝叶斯回归,但会对其进行研究。从算法的角度来看,我恐怕还不能完全理解您提到的一点和两点情况。具体来说,对于这一点,我理解在一个块之前和之后将和删除并重新添加到每个点,但是我不理解如何精确地执行该块。对于两点情况,恐怕我根本不明白该怎么做。谢谢。ÿ xiyi
Spacey

2
尽管再加上三点并加权la Glen_b的答案)可能会产生这样的拟合,但是解释任何统计输出都会有问题:需要进行一些调整。
ub

6

要为@gung对线性情况的出色介绍添加一些额外的信息,在高阶多项式情况下,您可以采用几种方法来精确地或近似地(但是根据需要精确得多)。

首先,请注意,多项式(或实际上是任何拟合函数)的自由度必须至少与“已知”点的数目一样大。如果自由度相等,则由于曲线是完全确定的,因此根本不需要数据。如果还有更多的“已知”点,您将无法解决(除非它们全部都位于指定次数的完全相同的多项式上,在这种情况下,任何适当大小的子集都将满足)。从这里开始,我将讨论何时多项式的df大于已知点(例如具有4df的三次方和三个已知点),因此三次方既不会被已知点所确定,也不会完全由它们所确定。 。

1)“曲线必须通过此点”是对参数的线性约束,导致约束估计最小二乘法约束(尽管两个项都可以包括线性约束以外的其他内容,例如正性约束)。您可以通过以下任一方式合并线性约束

  (a)重铸参数化以隐式包含每个约束,从而生成低阶模型。

  (b)使用可以在最小二乘拟合参数上包含线性约束的标准工具。(通常通过上面链接中给出的公式进行操作)

2)另一种方法是通过加权回归。如果给已知点足够大的权重,则可以得到与(1)中相同的拟合值。这通常很容易实现,比重新参数化要快得多,并且可以在不提供受限装配的包装中完成。

@gung的所有警告均适用


Glen_b,我没有考虑加权回归。这可能是解决问题的方法。我已将其列入待办事项清单。我相信我可以自学而不会出事。关于(1),您能否在重新参数化的这一方面进行扩展?另外,您要“叫”我要这样做的地方,是在哪里迫使多项式经过某些点?问题的部分原因是我不知道要用Google做什么。如果我知道这叫什么,我也许可以通过在线资料来补充您所说的话。谢谢。
Spacey

请参阅上面的修改,其中包括一些搜索字词以及一个包含更多详细信息的链接。
Glen_b-恢复莫妮卡

2
+1加权回归是一个好主意。可能需要对输出统计信息进行一些调整,例如RMS误差的估计。
whuber

实际上,@ whuber +1是如果统计信息(如,, ... std错误等)仅与不知名的点(可能是想要的)有关,除了参数估计值和拟合值外,原始统计信息几乎都将是错误的。我最初输入与此相关的句子,但似乎在发布之前已删除它;提起它很重要。 F R 2s2FR2
Glen_b-恢复莫妮卡

感谢您的回答Glen_b,尽管我已经接受@whuber的了,但我仍然从您的中学到了很多。
Spacey
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.