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

(x,y)のデータが沢山あるとします。
そしてxとyの間に直線関係(比例関係)が認められそうです。
Excelを使って、最小二乗法により回帰直線(y=ax+b)を求める際、aの値を固定してbを求める、そしてその相関係数を求めることはできますでしょうか。

※単に回帰直線を計算させると、y=0.95x+bと算出されたのですが、
理屈から考えるとy=1x+bの関係がありそうなので、そのときのもっとも適当なbの値を知りたいのです。

A 回答 (2件)

こんばんは。



相関係数というのは、直線の傾き(つまり、a)とデータとの一致度を評価するものですから、傾きを固定して考えるときには相関係数の概念はないはずです。

bを求めたいのであれば、下記。
最小二乗法の考え方を忠実に守った手順です。


回帰直線の方程式は
y = ax+b
変形して
0 = ax+b-y

さて、データがn個あるとして、各データを(xk、yk)と表すことにします。
(kは、1からnまで)

一組のデータ(xk、yk)を代入したとき、εk だけ誤差が発生するとして、
εk = axk + b - yk
と表すことができます。

その二乗誤差は、
εk^2 = (axk + b - yk)^2

k=1からk=nまでのデータについての二乗誤差の合計は、
Σ[k=1→n] εk^2 = Σ[k=1→n](axk + b - yk)^2

これを最小にすればよいわけです。

ここで、aを定数としますが、データとして既知である xk と yk も定数です。
唯一、bだけが変数です。
よって、上の式をbで微分したものがゼロになれば、極小値を取ることになります。

Σ[k=1→n](axk + b - yk)^2 をbで微分したもの
 = Σ[k=1→n] 2(axk + b - yk)・1
 = 2・Σ[k=1→n] (axk + b - yk)

これがゼロになるためには、
Σ[k=1→n](b + axk - yk) = 0

ここで、 Σ[k=1→n]b = nb なので
nb + Σ[k=1→n](axk - yk) = 0

よって、
b = 1/n・Σ[k=1→n](yk - axk)
 = 1/n[k=1→n](yk - axk)
 = Σ[k=1→n](yk/n) - a・Σ[k=1→n](xk/n)
 = [全部の点のy座標の平均] - [傾きa]×[全部の点のx座標の平均]

つまり、平均値(average)の関数を使うだけで、bを求めることができるということなのでした。


最後に、
相関係数ではありませんが、誤差の度合いを評価する方法について。

上のほうに書いた式
Σ[k=1→n] εk^2 = Σ[k=1→n](axk + b - yk)^2
ですが、
これをn-1で割って、平方根を取る、つまり、
√{1/(n-1)・Σ[k=1→n](axk + b - yk)^2 }
とすれば、縦方向(y座標)のばらつきの度合い(一次元データにおける標準偏差に相当)が出ます。

この回答への補足

sanoriさま。
ご教示頂いた通りやってみました。
式も概ね理解できましたし、a=1に固定した場合のbの値も分かりました。一次元方向のばらつきも求めました。
xyグラフ上に全点をプロットし、求めた直線(y=1x+b)を乗せてみて、ビジュアル的にも納得できました。
ありがとうございました。

今度は#1のソルバーの方もトライしてみたいと思います。

補足日時:2008/06/01 23:26
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
パッと読んだところで、とりあえず分かったつもりになりました(笑)。
実はこれ、仕事(実験)の解析のところで使おうとしています。
あまり詳しくは書けませんが、xは試験片の処理前、yは処理後の値なのです。
xとyの関係。xを処理をすると、単に一定量増える(y切片がずれる)だけではないかという事が分かってきたのですが、目分量ではなく統計的に近似直線を求める方法を探していたのです。
「分かったつもり」で終わってしまうのか「近似直線とバラツキを把握できるのか」、結果については補足にてご報告致します。
暫しのお時間を。

お礼日時:2008/05/29 02:35

ソルバーを使います。


EXCELのヘルプでソルバーと入力してください。
ソルバーのインストールも必要です。
インストール方法もヘルプに書いてあります。

(1)あらかじめ仮のbの値をいれておく。
(2)仮のbをつかってyを求める。
(3)Z=(真のy-計算のy)の2乗を求める。
#Zが負にならないようにするためです。
(4)ΣZが最小になるようにbを動かす。
#ここでbを求めるときソルバーを使います。

この回答への補足

mistery200さま。
ソルバー使えました。
そして#2でご教示頂いた方法と同じ解が得られました(あたりまえか)。
もっと勉強していけば、複数の変数、条件つきの変数を最適化する場合など、色々と使えそうですね。
大変役にたちました。
ありがとうございました。

補足日時:2008/06/03 07:11
    • good
    • 0
この回答へのお礼

さっそくの回答ありがとうございます。
”ソルバー”。
何者なのか分かりませんが使ってみます。
Excel、とても便利なのですが、決まりきった操作だけで、最近全然機能を開拓していません。
良い機会なのでトライしてみたいと思います。
結果は補足にてお伝えするつもりです。
暫しのお時間を。

お礼日時:2008/05/29 02:24

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