プロが教えるわが家の防犯対策術!

excelの最小二乗法による線形近似でわからないことがあります.
たとえば,xy平面でデータが散布している状況で・・・
データがほぼ垂直(y軸に平行)に分布している場合,最小二乗法による線形近似がうまくいきません.
ばらつきは少ないはずだから,決定係数も高くなると思うのですが,垂直線ではなく斜めの直線が引かれてしまい,決定係数も低くなってしまいます.

これは,垂直線だと傾きaの値が∞に大きくなり,データの大きさ(?)上,近似不可能ということなのでしょうか?

A 回答 (8件)

>垂直線ではなく斜めの直線が引かれてしまう


おそらく、相関係数がゼロに近いデータとなっているためです。
散布図を描くときに、X軸の範囲を、ほぼXmin~Xmaxとなるような尺でグラフ化すると、
平面全体にバラつくデータになっているのと違いますか?
相関係数がゼロの場合、
Y=aX+bで回帰すると、a≒0 b≒<yの平均>となり、
X=cY+dで回帰すると、c≒0 d≒<xの平均>
となります。最小二乗法の性質上、どうしようもないです。
他に、1点でも、他のデータの傾向とまるで違うデータがあれば直線が変なところに引かれてしまいます。

どういうデータの測定値なのか書かれていないので判りませんが、
XをコントロールしながらYを測定、というデータではなさそうに思われます。
(そういうデータなら、Xの範囲はある程度広い。でないと測定する意味がない。)
よって、
XとYをひっくり返して回帰するという、No.2さんの方法で実用上問題ないでしょう。
ただし、X=cY+dで回帰し、逆関数を求めてY=aX+bのa、bを求める場合、
今度はaが大きい値になる(cが小さくなる)という計算結果になります。
散布図に回帰式を重ねた場合、そんなには目立たない程度だとは思いますが.....

No.4
>>xの幅が無いことから、内部処理的には
>>÷0に近いことが発生して不安定になっています。
そういうことが発生しないわけではありませんが、
EXCELのslope関数の場合に発生する条件は、たとえば、Xの範囲が1.00000000~1.0000001くらいしか変化しないとき。
(有効数字8桁めがようやく変化するとき。最終的に有効3桁くらい残っていればよいものとします。)
EXCELの内部計算は10進換算約15桁なので、その半分の7~8桁までなら、桁落ち等の問題はそう深刻ではありません。
    • good
    • 0

> データがほぼ垂直(y軸に平行)に分布している場合,最小二乗法による線形近似がうまくいきません.



 いいえ、それでうまく行ってるんだと思われます。そして、答として「xの値を与えたときにyを予想する直線」が正しく得られたのです。なのにExcelの答の直線が明らかに間違ってるように見えるのは、おそらく、「正しい直線は当然こうだろ」と思っていらっしゃるものの方こそが間違ってるからでしょう。

 そんな馬鹿なとおっしゃる前にご確認願います: 多分、お考えの「正しい直線」とは、(a)「プロットした点との距離がなるべく近くなるように引いた直線」のことではないか。あるいは(b)「yの値を与えたときにxを予想する直線」をお考えかも知れない。

 でも、それらの直線は、Excelの答が示している「xの値を与えたときにyを予想する直線」とは全くの別物なのです。(「最小二乗法による線形近似」という言い方では、これらの区別がはっきりしない、ということこそが問題なのかも知れません。)

 (a)「プロットした点との距離がなるべく近くなるように引いた直線」ってのは、要するに「直感でえいやっと引く直線」に近い訳ですけれども、軸の尺度を変えると変化してしまいます。たとえばx軸を10倍に引き延ばしたグラフの上では、別の直線を描いてしまう。つまりグラフの描き方に依って変わるんで、もちろんこんなもん、近似式としては意味がありません。(一部の回答はこの話をしているようですが。)

 また、(b)「yの値を与えたときにxを予想する直線」も「xの値を与えたときにyを予想する直線」とははっきり異なっていますので、(ANo.4で触れられている通り、)(b)で代用する訳には行かない。
 たとえば、直線y=xとy=0とx=1とに囲まれた三角形の領域内にサンプルのプロットが一様に分布している場合に、最小二乗法で直線を当て嵌めることを考えますと、「xの値を与えたときにyを予想する直線」は明らかに
y=x/2
であり、また(b)「yの値を与えたときにxを予想する直線」は明らかに
y=2x-1
だから、両者は全然違う。

 という訳で、(ANo.3,6の適切なるアドバイスに従って)グラフのx軸をうんと引き延ばした状態で答の直線とサンプルのプロットをじっくり見比べてみれば、((a)や(b)の直線と見た目が紛らわしくなくなるので、)『「xの値を与えたときにyを予想する直線」としてはそれなりに合ってる』ということが腑に落ちるのではないでしょうか。

 さてその上で、「そもそも何のために近似をやろうとしているのか。結果の式をどう使うつもりなのか」ということを思い出して戴いて、その目的にとって本当に「xの値を与えたときにyを予想する直線」が必要なのか、それとも(b)「yの値を与えたときにxを予想する直線」が必要なのか、はたまた「直感でえいやっと引く直線」(の数学版としての(a)「プロットした点との距離がなるべく近くなるように引いた直線」)が必要なのか、その区別をはっきり付けてみては如何でしょうか。
    • good
    • 0

ANo.3ですが、桁調整をして最小二乗法をやり直すことを提案しているわけではありません。


範囲を適切にしてグラフを書き直し、本当に最小二乗法がおかしいのかどうなのかをまず確認することを提案しています。

グラフを書き直し、その直線がデータの中央から明らかに外れているのかどうかを確認してください。
    • good
    • 0

先ず、変数(xとy)間にどのような関係があるはずか、を正しく


評価している必要があります。線型なのでしょうか。
そうでなければ、片対数、場合によっては両対数などで近似直線を
求めることが必要となるでしょう。それらの場合、データの重み付け
は複雑になりますが・・・
    • good
    • 0

統計家です。



(1)傾きβはΣ(xi-xbar)(yi-ybar)/Σ(xi-xbar)^2です。
今、xの幅が無いことから、内部処理的には
÷0に近いことが発生して不安定になっています。
#1さんの提案のうち、xを拡大、が着目点になります。
でも、(3)で説明しますが、単位を変えるのではありません。
正しく言えば、適当にバラけているようにする、というのが妥当でしょうか。
私は、1個だけxが動いていて、それに強く引っ張られているような気がします。
xが外れているサンプルを取り除けば、解決すると思います。

(2)最小2乗法はy方向の予測誤差の2乗和を最小にします。
#2さんの提案のように、xとyを入れ替えると、
x方向の予測誤差を小さくして関数を求めますので、
単に逆関数を作っても、一致しません。
入れ替えは不適切です。

(3)通常、コンピュータソフトが回帰係数を求める場合は、
桁落ち、桁あふれを防ぐため、x,yとも基準化、
すなわち、平均を0,分散を1に基準化して標準偏回帰係数を求めた上、
偏回帰係数に戻すという処理を行います。
#1さん#3さんが提案されているような、桁調整は、
残念ながら、既に内部でやられています。
    • good
    • 0

>ばらつきは少ないはずだから



そうとは限らないでしょう。
傾きが非常に急なのでy方向のばらつきが見えにくくなってるだけではないですか?

具体的なデータがないのでなんともいえませんが、

>最小二乗法による線形近似がうまくいきません.

最小二乗法は正しく働いていて、単にy方向のばらつきが非常に大きいデータだという気がします。

>データがほぼ垂直(y軸に平行)に分布している場合

xの値の範囲とyの値の範囲がグラフ上で等しくなるように軸を設定し、傾きが45度近くになるようにグラフを書き直してみてください。
    • good
    • 0

最小2乗法は上下方向の誤差(の2乗和)が最小になるように係数を出すものなので、そのようなデータを適用してもうまくいきません。


x軸とy軸のデータを入れ替えてグラフを描いてみてください。そうすると傾斜が水平に近くなるので精度の良い近似直線が得られます。その近似直線が y = a*x + b という式なら、元のグラフ(x軸とy軸のデータを入れ替る前のグラフ)の近似直線は y = x/a - b/a になります。
    • good
    • 0

たとえばY座標データを適当な大きさになるようにY/100とか、Y/1000で置換するとか、


または、
X座標のデータが適当な大きさになるように100Xとか1000X と置換して、
直線の傾斜が極端に大きくなったり、小さくなったりしないように変数を
変換してから、最小二乗法を適用すればいいかと思います。

グラフの横軸(X軸)を (x100)とか(x1000)といった倍率を書けばすむことです。
あるいは縦軸(Y軸)に (x10^-2)とか(x10^-3)と倍率を書き込めばすむでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!