Excel VBAで<てこ比>を求める関数を作ってみた
前回は、Excel分析ツールの回帰分析の結果から、Rの「基本的診断プロット」と同じグラフを作れんものかとチャレンジしましたが、Residuals vs Leverage まで来たところで、てこ比をどうしようか、となって終わりました。
そこで今回は、Excelでてこ比を計算してみたいと思います。
計算方法ですが、
- 作者: 荒木孝治
- 出版社/メーカー: 日科技連出版社
- 発売日: 2007/10/01
- メディア: 単行本
- クリック: 3回
- この商品を含むブログ (8件) を見る
の73ページに、
射影行列(式(3.57))の対角要素を、てこ比またはレベレッジ(Leverage)という。
また、70ページに、
の係数をとし、その要素を、
とおく。を射影行列という。(略)ハット行列ともいう。
さらに、54ページに
とあります。
射影行列(ハット行列)は、最小二乗法で計算するときに導かれる行列らしいのですが、私自身がまだ十分に理解できていないので、ここで解説することはできません。
が、上の手がかりさえあれば、計算そのものは進めることができます。
は、説明変数が二つの場合を表していて、がそれにあたります。
ちなみに、左側に並んでいる「1」は切片のための列だそうで、切片は定数項なので「1」となります。*1
あとは、行列の計算でを求めて、対角要素を抽出するだけです。
(ちなみに、はの転置行列、はの逆行列を表します。)
まず、説明変数を新しいワークシートのB列にコピーします。
そして、A列に(説明変数と同じ行数分)「1」を入力しておきます。
入力&コピペしたセル範囲がです。
を選択して、コピー→E1セルを選択→[貼り付け]→[行列を入れ替える]をクリック。
これが、です。
を計算しましょう。
あらかじめE4:F5のセル範囲を選択しておく→数式バーに行列の積の計算式*2を入力→【Ctrl】+【Shift】+【Enter】キーを押下。
続いて、これの逆行列を計算します。
あらかじめH4:I5のセル範囲を選択しておく→数式バーに逆行列の計算式を入力→【Ctrl】+【Shift】+【Enter】キーを押下。
が求まりました。
次は、です。
あらかじめE7:F51のセル範囲を選択しておく→数式バーに行列の積の計算式を入力→【Ctrl】+【Shift】+【Enter】キーを押下。
最後は、。
あらかじめH7:AZ51のセル範囲を選択しておく→数式バーに行列の積の計算式を入力→【Ctrl】+【Shift】+【Enter】キーを押下。
はい! 射影行列(ハット行列)の出来上がり!
では、対角要素を抽出しましょう。
C1セルに「=OFFSET($G$6,ROW(),ROW())」と入力して、C45セルまでコピーします。
以上、てこ比が計算できました!! けっこうな手間ですねえ。
しかし、このめんどくさ~い計算をExcel VBAで記述すると、
'てこ比を返す
Function Leverage(RNG As Range)
Dim buf, tmp(), i
With Application.WorksheetFunction
buf = .MMult(.MMult(RNG, .MInverse(.MMult(.Transpose(RNG), RNG))), .Transpose(RNG))
End With
ReDim tmp(UBound(buf) - 1, 0)
For i = LBound(buf) To UBound(buf)
tmp(i - 1, 0) = buf(i, i)
Next
Leverage = tmp
End Function
これだけで済んじゃうんです。
使い方はいつものとおり、ソースコードを標準モジュールにコピペしたら、普通の関数のようにセルに入力するだけ。
あらかじめC1:C45のセル範囲を選択しておく→数式バーに「=Leverage(A1:B45)」と入力→【Ctrl】+【Shift】+【Enter】キーを押下。
ほら、楽々計算できましたよ ♪
それでは、前回積み残しになっていたResiduals vs Leverage のグラフを作ってみましょうか。
横軸にてこ比、縦軸に標準化残差を取って散布図を作ると、
こんな感じです。
なんというか、分布は他の診断図と同様に東京の座標を除いてRの出力結果と同じですが、クックの距離を表す補助線がないと、診断のしようがないですねえ。
うーん、残念無念。
あ、そうそう、東京の座標がExcelとRで異なる件ですが、『RとRコマンダーではじめる多変量解析』の70ページにこうありました。
残差を標準化して、それを利用して誤差の家庭のチェックに利用する。標準化の方法はさまざま提案されている。 をハット行列の対角要素とするとき、
を標準化残差(standardized residual)という。(下線引用者)
なるほど、この数式であれば、てこ比が大きいほど分母が小さくなり、結果として標準化残差の値はで計算するよりも大きくなります。
どうやら、標準化残差の計算方法の違いが座標違いの原因だったようですね。