선형 회귀를 수행하지만 솔루션이 특정 데이터 포인트를 통과하도록 강제


14

일련의 점에서 선형 회귀를 수행하는 방법을 알고 있습니다. 즉, 선택한 다항식을 주어진 데이터 세트 (LSE 의미)에 맞추는 방법을 알고 있습니다. 그러나 내가 모르는 것은 내 솔루션이 내가 선택한 특정 지점을 통과하도록하는 방법입니다. 나는 이것이 전에 행해지는 것을 보았지만, 그것이 어떻게 수행되었는지는 물론이고 절차가 무엇인지 기억할 수 없다.

매우 간단하고 구체적인 예를 들어, xy 평면에 100 개의 점이 흩어져 있다고 가정 해 보겠습니다. 이 선형 회귀를 매우 잘 수행하는 방법을 알고 있습니다. 그러나 x 좌표 , 및 세 가지 데이터 포인트 (및 해당 y 좌표)를 통과하기 위해 솔루션을 '강제'하고 싶다고합시다. 물론이야).x = 19 x = 89x=3x=19x=89

이 일반적인 절차는 무엇이며 어떻게 수행되며 알아야 할 특정 함정이 있습니까?

편집하다:

나는 이것을 할 구체적인 방법을 찾고 있다고 덧붙이고 싶습니다. 공분산 행렬을 직접 반전하거나 경사 하강을 통해 두 가지 방법 중 하나로 선형 회귀를 실제로 수행하는 프로그램을 작성했습니다. 내가 묻는 것은 다항식 솔루션이 특정 지점을 통과하도록 강제로 수행 한 작업을 정확히 단계별로 수행하는 것입니다.

감사!


다항식을 사용하는 경우 왜 "선형"이라고합니까? 통과하려는 모든 포인트는 자유도를 줄이는 구속 조건입니다. 그런 다음 제한된 최적화 알고리즘을 사용할 수 있습니다.
curious_cat

4
선형 조합 에 대한 계수 를 찾기 때문에 선형 입니다. 예를 들어, 데이터를 3 차에 ( )를 . y = c 0 + c 1 x + c 2 x 2 + c 3 x 3cy=c0+c1x+c2x2+c3x3
Spacey

1
@Mohammad : 원하는 것을 근사화하는 또 다른 방법은 가중 최소 제곱 솔루션을 사용하고 회귀선을 통과하려는 지점에 매우 큰 가중치를 부여하는 것입니다. 그러면 솔루션이 선택한 지점에 매우 가깝게 전달됩니다.
Jason R

@JasonR 여기에서 만나서 반가워요. 그렇습니다. WLS는 실제로 흥미로운 경쟁자입니다. 영리한 다항식 인수 분해와 오류 구조를 훌륭하게 유지하기 때문에 whubers 답변을 사용했습니다.
Spacey

답변:


19

문제의 모델을 작성할 수 있습니다

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

여기서 는 미리 결정된 포인트 통과하는 차수의 다항식 이며 은 임의입니다. ( Lagrange 보간 다항식을 사용하십시오 .) Writing 사용하면이 모델을 다음과 같이 다시 작성할 수 있습니다.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 다중 회귀 문제 입니다 . 이러한 변수를 간단히 계산하고 익숙한 회귀 소프트웨어를 실행하여 상수 항이 포함되지 않도록하십시오. 항이없는 회귀에 대한 일반적인주의 사항이 적용됩니다. 특히, 는 인위적으로 높을 수 있고; 일반적인 해석은 적용되지 않습니다.p+1r(x)xi, i=0,1,,pR2

(실제로 원점을 통한 회귀는 , 및 인이 구성의 특수한 경우 이므로 모델은 )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)

음모

고정 된 세 점은 빨간색으로 표시되며 데이터의 일부가 아닙니다. 제한되지 않은 4 차 다항식 최소 제곱 피팅은 검은 색 점선으로 표시됩니다 (5 개의 매개 변수가 있음). 구속 된 맞춤 (순서 5 개이지만 3 개의 자유 매개 변수 만 있음)이 빨간색 선으로 표시됩니다.

최소 제곱 출력 ( summary(fit0)summary(fit))을 검사하는 것이 도움이 될 수 있습니다. 관심있는 독자에게 맡깁니다.


whuber, 이것은 흥미 롭습니다 ... 아직 그것을 완전히 이해했다고 말하면 거짓말하고있을 것입니다. 그러나 우리가 말하는대로 소화하고 있습니다. 만약 내가 제대로 이해하고, 여기에 내가 기본적으로 대한 해결하고 의 평소와 같이, 그러나 그들은 곱되고있는 대신 단지 이전이야, 그래? 그것이 맞다면, 정확히 어떻게 계산 합니까? 감사합니다. βr(x)xixir(x)
Spacey

나는 모하마드 (Mohammad)라는 예제를 추가했다.
whuber

아, 완벽 해 공부하겠습니다. 귀하의 예제를 사용하여, 여전히 포인트를 통해 갈 폴리을 강제 할 수있을 것 입니다 , 바로 비록 데이터의 일부?
Spacey

절대적으로 그렇게 할 수는 있지만 p- 값 또는 다른 통계를 해석하는 데는 신중해야합니다. 이제 제약 조건은 데이터 자체를 기반으로하기 때문입니다.
whuber

당신의 게시물은 어제 밤에 일어났습니다. 나는 나 자신에게 LIP를 가르쳤다. (LIP는 흥미 롭습니다. 푸리에 분해와 비슷하지만 폴리가 있습니다).
Spacey

9

회귀선이 단일 점을 통과하도록하려면 원형 교차로에서 수행 할 수 있습니다. 요점이 라고 가정 해 봅시다 . 그 점을 원점으로하여 데이터를 다시 중앙에 배치하면됩니다. 즉, 모든 값 에서 를 빼고 모든 값 에서 를 뺍니다 . 이제 점은 좌표 평면의 원점에 있습니다. 그런 다음 절편을 억제하면서 회귀선을 맞추기 만하면됩니다 (절편을 (0,0)으로 강제합니다. 이것은 선형 변환이므로 원하는 경우 나중에 모든 것을 쉽게 역변환 할 수 있습니다. (xi,yi)xixyiy

XY 평면에서 선이 두 점을 통과하게하려면이 작업도 매우 쉽습니다. 두 점은 선으로 맞출 수 있습니다. 당신이 사용할 수있는 포인트 슬로프 공식을 점 중 하나, 기울기 및 사용 후 기울기를 계산하고, 라인의 방정식을 요격을 찾을 수 있습니다.

좌표 평면에서 세 점을 통해 직선을 맞추는 것이 불가능할 수 있습니다. 그러나 포물선에 완벽하게 맞을 수 있습니다 (즉, 와 모두 사용 ). 이것에 대한 대수도 있지만, 우리 가 올라감에 따라 데이터 세트에 세 개 이상의 포인트 포함시켜 소프트웨어에 모델을 맞추는 것이 더 쉬울 수 있습니다 . 마찬가지로이 세 점 에만 액세스 할 있는 모델을 피팅하여 세 점에 가장 가까운 직선을 얻을 수 있습니다. XX2


그러나이 시점에서 언급해야 할 필요는 없다고 생각합니다 (이론이 그렇게하는 데 확실한 이유를 제시하지 않는 한). 모델이 데이터의 정보와 최상의 일부 정보를 찾을 수 있도록하는 베이지안 회귀 분석을 원할 수도 있습니다. 강제로).


1
쿵, 답변 주셔서 감사합니다. 내 질문을 약간 수정했습니다. 베이지안 회귀에 대해서는 몰랐지만 살펴 보도록하겠습니다. 나는 알고리즘 관점에서 당신이 언급 한 1 점과 2 점을 어떻게 구체적으로 이해하지 못하는 것이 두렵습니다. 특히, 한 지점의 경우 블록 전후에 각 지점에 및 를 제거하고 다시 추가 하는 것을 이해하지만 해당 블록을 정확하게 수행하는 방법을 이해하지 못합니다. 2 점의 경우, 나는 거기에서 무엇을 해야할지 전혀 이해하지 못합니다. 감사. y xiyi
Spacey

2
세 점을 더 던져서 가중치 ( la Glen_b의 답변)를 적용하면 이러한 결과를 얻을 수 있지만 통계 출력을 해석하는 데 문제가있을 수 있습니다. 일부 조정이 필요합니다.
whuber

6

@gung의 선형 케이스에 대한 훌륭한 정보에 약간의 추가 정보를 추가하기 위해 고차 다항식의 경우 정확히 또는 대략 (필요한만큼 정확하게) 수행 할 수있는 몇 가지 방법이 있습니다.

우선, 다항식의 자유도 (또는 실제로는 함수가 적합 함)는 적어도 "알려진"포인트 수만큼 커야합니다. 자유도가 동일하면 곡선이 완전히 결정되므로 데이터가 전혀 필요하지 않습니다. 더 많은 '알려진'점이 있으면 해결할 수 없습니다 (모든 점이 지정된 정도의 동일한 다항식에있는 경우가 아니면 적절한 크기의 하위 집합으로 충분합니다). 이제부터는 다항식이 알려진 점보다 더 많은 df (예 : 3d-4df와 3 개의 알려진 점)를 갖는 경우에 대해 이야기 할 것입니다. .

1) "곡선이이 점을 통과해야합니다"는 매개 변수에 대한 선형 구속 조건으로, 제한된 추정 또는 제한된 최소 제곱을 초래합니다 (두 용어 모두 양성 구속 조건과 같은 선형 구속 조건 이외의 다른 것을 포함 할 수 있음). 다음과 같은 방법으로 선형 구속 조건을 통합 할 수 있습니다

  (a) 각 제약 조건을 내재적으로 포함하도록 하위 화 모델을 생성하도록 파라미터 화를 다시 캐스팅하는 단계.

  (b) 최소 제곱 피팅의 매개 변수에 선형 구속 조건을 통합 할 수있는 표준 도구 사용. (보통 위의 링크에서 주어진 공식과 같은 것을 통해)

2) 다른 방법은 가중 회귀입니다. 알려진 점에 충분히 큰 무게를 주면 본질적으로 (1)과 같은 결과를 얻을 수 있습니다. 이것은 종종 쉽게 구현되고, 매개 변수화보다 실질적으로 더 빠를 수 있으며, 제한된 피팅을 제공하지 않는 패키지에서 수행 될 수 있습니다.

@ 궁의 모든주의 사항이 적용됩니다


Glen_b, 나는 가중 회귀를 고려하지 않았습니다. 그것에 대해 갈 수있는 방법 일 수 있습니다. 나는 그것을 할 일 목록에 넣었다. 나는 아무 사고없이 나 자신을 가르 칠 수 있다고 믿는다. (1)과 관련하여 재 매개 변수화의 이러한 측면을 친절하게 확장 할 수 있습니까? 또한 다항식이 특정 지점을 통과하도록 강제하는 위치에서 무엇을 '전화'합니까? 문제의 일부는 내가 무엇을 구글에 알지 못한다는 것입니다. 이것이 무엇인지 알면 온라인 자료로 말한 내용을 보강 할 수 있습니다. 감사.
Spacey

일부 검색어와 자세한 내용이 포함 된 링크가 포함 된 위의 수정 사항을 참조하십시오.
Glen_b-복지 주 모니카

2
+1 가중 회귀는 좋은 생각입니다. RMS 오류 추정과 같은 출력 통계 조정이 필요할 수 있습니다.
whuber

s2FR2

귀하의 답변에 감사드립니다. Glen_b, @whuber 님은 받아 들였지만 여전히 많은 것을 배웠습니다.
Spacey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.