線形回帰を実行しますが、ソリューションに特定のデータポイントを強制的に通過させます


13

一連のポイントで線形回帰を実行する方法を知っています。つまり、選択した多項式を特定のデータセットに(LSEの意味で)当てはめる方法を知っています。しかし、私が知らないのは、選択した特定のポイントを自分のソリューションに強制的に通過させる方法です。私はこれが以前に行われたことを見ましたが、どのように行われたかは言うまでもなく、プロシージャが何と呼ばれたか覚えていません。

非常に単純で具体的な例として、xy平面上に100個の点が散在しており、それらに任意の次数の多項式を当てはめることを選択したとしましょう。私はこの線形回帰の実行方法を非常によく知っています。ただし、x座標x=3x=19、およびx=89(およびそれらに対応するy座標)で3つのデータポイントを通過するために、ソリューションを「強制」したいとしましょうもちろん)。

この一般的な手順は何と呼ばれ、どのように行われますか、また、注意する必要がある特定の落とし穴はありますか?

編集:

これを行うための具体的な方法を探していることを付け加えます。共分散行列を直接反転するか、勾配降下法を使用して、2つの方法のいずれかで実際に線形回帰を実行するプログラムを作成しました。私が求めているのは、どのように、正確に、ステップバイステップで、特定の点を通過するように多項式解を強制するように、私がやったことをどのように変更するのですか?

ありがとう!


多項式を使用しているのに、なぜ「線形」と呼ぶのですか?通過させたいすべてのポイントは、自由度を低下させる制約です。その後、制約付き最適化アルゴリズムを使用できます。
curious_cat

3
線形結合に対する係数を見つけているため、線形です。たとえば、データをキュービックに適合させたい場合、y = c 0 + c 1 x + c 2 x 2 + c 3 x 3の係数(の値)を見つけています。cy=c0+c1x+c2x2+c3x3
スペイシー

1
@Mohammad:あなたが望むものを概算するもう1つの方法は、重み付き最小二乗解を使用し、回帰直線を通過させたいポイントに非常に大きな重みを与えることです。これにより、選択したポイントにソリューションが非常に密接に渡されるようになります。
ジェイソンR

@JasonRここでお会いできてうれしいです。はい、WLSは確かに興味深い候補です。賢明な多項式因数分解のために、そしてエラー構造をうまく維持するために、私はwhubersの答えに行きました。
スペイシー

回答:


18

問題のモデルは書くことができます

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

ここで、は、所定の点x 1y 1x dy dを通る次数d 1の多項式で、εはランダムです。(ラグランジュ補間多項式を使用します。)x x 1x xx )と書く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重回帰問題であるオリジナルと同じエラー構造を持つ独立変数でありの量は、rはX X Iiは= 0 1 ... P。これらの変数を計算し、使い慣れた回帰ソフトウェア実行するだけで、定数項が含まれないようにします。定数項のない回帰に関する通常の警告が適用されます。特に、Rp+1r(x)xi, i=0,1,,pは人為的に高くなる可能性があります。通常の解釈は適用されません。R2

(実際には、原点を通る回帰は、この構成の特別な場合であるX 1Y 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))を調べることは有益な場合があります。これは興味のある読者にお任せします。


βr(x)xixir(x)

モハメッドという実例を追加しました。
whuber

ああ、完璧。勉強します。あなたの例を使用して、まだポイントを通過するポリを強制することは可能であろうしている、しかし、データの一部右?
スペイシー

絶対にそれを行うことができます:ただし、p値またはその他の統計の解釈には慎重に注意してください。これは、制約がデータ自体に基づいているためです。
whuber

昨夜、あなたの投稿に私が来ました。私は自分でLIPを学びました。(LIPは興味深い。それはフーリエ分解に似ているが、ポリを使用している)。
スペイシー

9

(xi,yバツバツyy

XY平面内の2点を線で強制的に通過させたい場合は、それも非常に簡単です。任意の2点を線に合わせることができます。ポイントスロープ式を使用してスロープを計算し、ポイントの1つ、スロープ、およびライン方程式を使用して切片を見つけることができます。

バツX2


ただし、この時点でこれを行うのは素晴らしいことではないかもしれないと言うことを強いられます(あなたの理論がそうする非常に堅実な理由を提供しない限り)。また、ベイズ回帰を調べて、モデルがデータ内の情報といくつかの事前情報の最適な組み合わせを見つけられるようにすることもできます(これを使用して、インターセプトをゼロに強くバイアスするなど、強制する)。


1
ガン、答えてくれてありがとう。質問を少し変更しました。ベイジアン回帰については知りませんでしたが、見てみましょう。具体的には、アルゴリズムの観点から、あなたが述べた一点と二点の場合を完全に理解していないのではないかと思います。具体的には、1つのポイントについて、削除と再追加を理解していますバツ そして yブロックの前後の各ポイントまでですが、そのブロックを正確に行う方法がわかりません。2点の場合、私はそこで何をすべきか全く理解していないのではないかと心配しています。ありがとう。
スペイシー

2
3つのポイントに投げますが、それらを重み付けラ・いくつかの調整が必要となりますGlen_bの答え)が問題となる統計出力のいずれかを解釈し、そのようなフィット感を作成することができます。
whuber

6

@gungの線形ケースの優れたカバレッジに少し余分な情報を追加するために、高次の多項式のケースでは、正確にまたは近似的に(しかし、必要に応じてほぼ正確に)実行できる方法がいくつかあります。

まず、多項式(または実際に任意の近似関数)の自由度は、少なくとも「既知の」点の数と同じでなければならないことに注意してください。自由度が等しい場合、曲線は完全に決定されるため、データはまったく必要ありません。より多くの「既知の」点がある場合、それを解決することはできません(それらがすべて、指定された次数の正確に同じ多項式にある場合を除き、その場合、適切なサイズのサブセットで十分です)。ここからは、多項式の既知の点よりもdfが大きい(3次-4dfの場合-3つの既知の点のように、既知の点で過剰に決定されることも完全に決定されることもない) 。

1)「曲線はこの点を通過する必要があります」は、パラメーターの線形制約であり、制約付き推定または制約付き最小二乗になります(ただし、両方の項には、線形制約以外、ポジティブ制約などを含めることができます)。いずれかの方法で線形制約を組み込むことができます

  (a)各制約を暗黙的に含めるようにパラメーター化を再キャストして、低次モデルを作成します。

  (b)最小二乗近似のパラメーターに線形制約を組み込むことができる標準ツールを使用します。(通常、上記のリンクで与えられた式のようなものを介して)

2)別の方法は、加重回帰によるものです。既知の点に十分に大きな重みを与えると、本質的に(1)と同じ近似を得ることができます。多くの場合、これは簡単に実装でき、パラメータを再設定するよりも大幅に高速であり、制約付きフィッティングを提供しないパッケージで実行できます。

@gungのすべての警告が適用されます


Glen_b、私は加重回帰を考慮していませんでした。それはそれについて行く方法かもしれません。To Doリストに追加しました。私は自分でそれを無事に学べると信じています。(1)に関して、再パラメータ化のこの側面を親切に拡張していただけますか?また、多項式を特定のポイントに強制的に通す、私がやろうとしていることをこれを何と呼びますか?問題の一部は、私がグーグルのために何をすべきかわからないということです。これが何と呼ばれているかを知っていれば、あなたが言っていることをオンライン資料で補強できるかもしれません。ありがとう。
スペイシー

上記の編集をご覧ください。これには、いくつかの検索用語と、さらに詳細なリンクが含まれています。
Glen_b

2
+1加重回帰は良いアイデアです。RMSエラーの推定など、出力統計の調整が必要になる場合があります。
whuber

@whuber +1確かに、統計( s2FR2... stdエラーなど)は、「推定」されていないポイント(これはおそらく必要なもの)のみに関連することを目的としています。 。私はもともとそれに関連する文章をタイプしましたが、投稿する前にそれを削除したようです。言及することが重要です。
Glen_b -Reinstateモニカ

Glen_bの回答に感謝します。@ whuberを受け入れましたが、あなたから多くを学びました。
スペイシー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.