from 05.10.03
s.gifおまけの重回帰分析で関数当てはめ学習の国だよ。 最終更新日 2005.09.28

第5章 重回帰分析で関数当てはめ


より分けた因子間で
散布図を描いて、関数曲線も
あるカッコいいグラフを作ろう
WOW! 君の観察力と好奇心は尊敬に値する。もう、無いから探してもダメよ。

 散布図への関数当てはめの基礎知識

 関数をあてはめるってどんなこと?

関数の当てはめって何と聞かれても、質問自体やったことの無い人には、イメージわかないか。
じゃあこうしよう。ざっと言葉で説明してから、なにはともあれ、エクセルですぐ出来るから体験しようじゃないか。

関数って言うときは、なんとなくx軸とy軸の座標の上に曲線があることが前提みたいになってるよ。それはyイコールなんたらの式で表されるだけじゃ、人間にとってその式が実際どのような変化を示すか分からないから、座標上にグラフを描いて全体を理解しようとするから。

今回は逆だよ。まず座標上に測定値の散布図グラフがあるんだ。点々を目で見る限りなんとなく曲線の上に乗っていそうだから、その式を知りたい。そしてその方程式から理論曲線を散布図上に描きたい。そういう希望をかなえるのが、関数のあてはめってわけです。実際に世の中に入って問題解決するには、測定値から関数式を求める活動の方が多いよ。

ただ、いまのところ、コンピューターが自動的に最適の式を回答してくれるわけではなく、人間がこれは2次関数にしてくれとか、対数の式にしてくれとか指示を出したものに回答してくれる程度だよ。
だから、君は、関数式の座標上の形の特徴を知っていなきゃいけないんだ。

2次関数の上に凸とか下に凸。三次関数のN字型。4次関数はW型かM型。指数関数は急上昇。反比例の関係とかその程度の知識でいいんだけど。

でも安心だからね。エクセルには分布の絵がアイコンとして描いてあるからそれから選べばいいのさ。え?それでも心配?やったことも無いのに心配するあなたは、チョと問題ありだよ。やってみようね。
それでデータの点々と、エクセルが描く回帰曲線がよく一致すればいいのさ。

それに、君にはエクセルがあるだろう?エクセルで式を作っていろいろな  の値に対して y の値を計算させた表を作れば、散布図と曲線はすぐ作れるじゃないか。教科書を買ってくるほどのことでもないさ。

最近のエクセルは、関数を当てはめさせると2次関数でも3次関数をどちらを選んでも2次関数で充分だったら2次関数しか返してこないぞ。
重回帰分析で関数当てはめさせるとあまりデータが一致しすぎたら多重共線性という厄介な問題が出てきて、良心的なソフトは「答えてやんない」と言うケースがあるけどエクセルがいいのは、めげずに答えてくれることだよ。

この章ではエクセル散布図からは作れない3次元以上の変数でも適用できる一般的な関数当てはめ方法を解説しています。

 エクセルで関数当てはめ体験

次の3次式の表を作って、実際にエクセルからこの式がえられるかどうか確かめてみよう。

y= 1.1(x - 0)(x - 2)(x - 3.5)
= 1.1x3 - 6.05x2 + 7.7x

 

kaiki01.gif

xy
-1-14.85
-0.5-5.5
00
0.52.475
12.75
1.51.65
20
2.5-1.375
3-1.65
3.50
44.4
4.512.375
524.75

s.gif

右側がこの式のグラフだよ。エクセルで線つきの散布図を作成するとこのグラフができる。で、曲線上をうまくクリックすると点々が反転されて、このような色になるよ。

この状態でポインターをこの線上のどこかに当てておいて右クリックすると、ジャーン。近似曲線を作る命令が現れてくるのだよ。この曲線形状は典型的な3次関数だから迷わず次の操作をしよう。

近似曲線の追加>多項式近似をクリック>次数を3に>OK

うーん、ぴったし一致したなあ。あれ?近似式がない、どうしよー。

慌てなさんな。もう一度さっきの反転させたグラフにしなさい。近似曲線と表示されるようであればまよわず右クリックしてクリア。曲線が消えます。
はじめに描いた細い線の曲線は残っているだろ?それをまたクリックする。

右クリックして、さっきと同じように近似曲線の追加をクリック。

ここでオプションタブを押せば欲しい物がでてくるよ。
「グラフを数式に表示する」と「グラフにR-2乗値を表示する」にチェックを入れる。>OK
近似式がでてきたろ?相関係数は二乗の形でかかれているから、どうしても相関係数が欲しければR2値の平方根を求めればいいさ。

なんでわざわざ手順をもどしたかわかる?この操作を繰り返せば、色々な曲線を試してみることが出来るからね。ためしに線形近似でやってみたら?直線の傾きでも、曲線の係数でもこれで計算できるはずだよ。

作成した近似式がどれくらい当てはまりがよいかは寄与率(R2をみます。

寄与率(決定係数ともいう)は(予測値の平方和)/(実測値の平方和)です。
(予測値が説明する情報量)/(データ全体の情報量)の意味を持ち、 1 に近いほど当てはまりがよいことを意味します。たとえば、R2 = 0.8 なら、「この回帰式は80%くらい説明している」などと表現する。

寄与率は独立変数の数が増えるにつれ,大きくなっていく性質があり、変数の数が異なるばあいには寄与率の数値を横比較しにくいのです。あんまり関係のない変数でも入ってたほうが入らない式より寄与率が高くて良いという結果になるのは問題だからね。
そこで,その欠点を改良するために自由度で調整した寄与率が表示されます。重回帰分析でステップワイズ法などという名前で、変数を増減して最適な変数の組み合わせを求めるやり方があります。その時には比較のために、取り込んだ変数は少なくても自由度調整済寄与率が一番大きい重回帰式ほど関数の当てはまりがよいということになります。
報告などには、どちらを使ったか明示すればどちらでも通用してるよ。

もし使用しているエクセルの中に近似曲線のソフトがインストールされていなかったら、次の重回帰分析でもできるぞ。独立変数が 2 つ以上あっても対応できるし。
重回帰分析のやり方を身に付けていれば、社会に出て何かと役に立つと思うよ。

相関係数が±1に近いことを目安に近似が適当かどうか判断するけれど、実際には描いた回帰曲線でカーブのそり具合とかが気に入らないことが多いから、色々やってみて決めるのがふつう。

理論は分からんが実態のグラフから近似式を作ることを、工学的対応と言う。便利な言葉だから、チョイかじり統計屋さんが理論的におかしいとかいじめに入ったら、「工学的な対応をしています」と言えばいいぞ。

s.gif

 重回帰分析でもっと色々な関数当てはめが出来るぞ

 式の項の係数を出してくれる重回帰分析

重回帰分析では色々な式が作れるよ。log x、x2、x3、xy、1/xなど自由自在。
例えば、新しく log x の測定値をとるのではなく、すでに君が入力したデータ x から log x の計算値の列をつくるだけです。

しかし、何を適用するかは君の技術知識とセンス次第だよ。理論的に導かれた式があって、それがどの程度現実とあっているかを調べることも出来る。

何も知識の無いタコ人には、とりあえずエクセルであれこれ適用してみて観測値といちばんよくフィットする式を選ぶ方法も取れる。

生物系や商品企画系の人々には、時系列でS字型に変化するグラフを適用したいだろうし、その方法も開発されている。

理論的に式を導びける神様たちには、あまり関数の当てはめの説明も要らないと思う。だから、他の人がこんなことに使っているのか程度に見ていただければありがたい。

さてタコ人むけ。最終的に次のような形に持ち込んでくれ。ここで、x1 とか x2 には、log x であろうと、単なるであろうと、1/x であろうと, さらには xy であってもかまわないんだ。 でも であってもいいよ。

y = ax1 + bx2 + cx3 + dx4 + ・・・・・・ +(定数)

この式に持ち込めたら、後は移項したりして式を変形していつも使っているような形にすればいいだけ。要点は上記の式の形状に出来れば、重回帰分析が利用できるんだ。
重回帰分析をすると、係数のa、b、c、d・・・などの数値が決定できるんだ。

例えば、y = ( xa・10xy ) / (b - 2) なら両辺の対数をとれば次のようになるだろう?

log y = a log x + xy - log( b - 2 )

log y→Y、log x→X1、xy→X2、-log(a-2)→C(=定数)と置き換えれば次の式になるだろ?重回帰分析で係数決定できることを意味しているんだよ。

Y = a X1 + X2 + C

エクセルに、君の入力した の表があるだろう?その数値を使って新しく log y、log x、xy の計算欄を作って重回帰分析をすれば、係数や定数を計算してくれるから、それから見栄え良く変形したければ移項して元の式に変形するだけでいいんだ。

このまま重回帰分析すると xy の項に以外の近傍の数値が係数として選ばれてくるはずです。「理論的に xy の項は係数が 1 だから他の係数が入ってくることがどうしても嫌だ」という人は、次のように工夫すればよい。xy項を移項して ( log y − xy ) → Y とおきなおせば、次の式になるよね。

Y = a X1 + C
「できないじゃないか」と威張る前に「もっといい方法がないか」と自分で考える姿勢をもつのが大人ってもんです。

 

実験計画法などで交互作用項が検出されたりした場合には、交互作用項の係数も重回帰分析で計算できる。データの列に新しく、xy の計算をした列を付け加えればいいのさ。

また、3次元のグラフなどで、平面ではなく山が出来たグラフなどでは、xy項を付け加えてみると、重相関係数がぐっと上がることがある。
あ、重相関係数とは、多変数のときに使う相関係数のことで、2つのときはただの相関係数って言うんだ。(相関係数と重相関係数の詳細説明は、第8章へ。)

関数式で、分母に の項がはいるような関係式にも xy 項を入れてみると良い。グラフが反比例の関係にあるときには、このような関係式を考えてみるのもよいはずだ。

主成分分析でお世話になった神田ソフトにも重回帰分析が入っていたよね。だから、第1章からずっとつきあってくれた君たちには何も特に準備しなくても、もう重回帰分析できる状況にあるよ。やり方も主成分分析とおなじ。

出力の中に偏回帰係数というところがあるよ。それがここでいっている係数のことだよ。

ただ、重回帰分析にはデータの入力にちょっと癖がある。気難しいんだ。目的変数といわれる項を表のいちばん左に書くとか、いろいろある。 ま、食わずギライもなんだから、とりあえずやってみようか。

 重回帰分析で係数を求めてみよう

実際に回帰で実用的な係数が求められることを、体験してみよう。
知っている人には「え?こんなこともできるの?」という実務的なところでやってみようかな。知らない人には何の価値もなくみえるだろうけど。

この表は、腸炎ビブリオという食中毒菌が、熱殺菌したとき、菌が何桁落とせたかを実験した結果なんだ。kaiki02.gif

緑のところが測定値、y は下で説明する計算値だよ。

一番上の行は、摂氏50度で20秒間熱処理したとき。最初の菌数n。と殺菌後の菌数の比を示している。10台の数値だから約一桁菌数が減ったんだね。

これからD値とZ値を求めようというわけだよ。
D値とはある殺菌温度で90%の菌が死滅する時間、Z値とはD値が90%低下する温度差のこと。生物を専攻する学生がなかなか理解出来ない概念だから、分からなくてあたりまえと思おう。(付録)F値の説明

君たちがここで学ぶことは「ああ、そんなやりかたも出来るのか」ということだからね。

知っている人が見ると、この表の結果では、実験は失敗で、D値もZ値も求められないと思うはず。
グラフを手作業で求める方法では、ある温度での熱殺菌時間は3種類(3水準ともいうな)は必要だからなんだ。普通は3種類の点々でグラフを書いて、直線の傾きD値を求める。微生物の実験はばらつきが大きいから、2種類のデータで傾きをだしたって信用できないのよ。
おまけに、55度と65度では1種類しか測定できていないから直線を引くことすら出来ないときている。普通なら捨てるこれらのデータが回帰では立派に利用されるんだ。

ふふふっ。じゃあ回帰でこの難局を切り抜けて見せよう。

次の式はD値とZ値の定義式から誘導されるよ。  ( 証明 )・・・・再クリックで閉じる

siki_tougou.gif

左辺を とおいたら、温度 T との式になっているから、回帰式を求めて傾き(=係数) − 1/z から、Z値を先に求めるんだ。紙のグラフ上で D 値をもとめてから、 Z 値をわり出すやり方と逆だね。
この実験では6点が取られているから傾きはかなり正確性がでるはず。

この式の左辺は、実は log D なんだ。だから上の式を整理した次式でD値はいくらでも計算できるよ。

D = 10^(右辺の計算値)

じゃあ、神田ソフトで計算しようね。え?これは重回帰で変数ふたつの単回帰は計算出来ないんじゃないかって?やったら出来たのよ。どっちも出来たの。ありがたいじゃないか。

  1. まずエクセルで左辺のy値の計算をしよう。目的変数(yのこと)をいちばん左においてないといけないから、上の表のように左端に置こうね。
  2. 温度とyとの回帰計算だから、図中の太線の黒枠をクリップボードにコピーしよう。
    多くの変数を扱う重回帰分析でも、ここでコピーする黒枠の範囲を広げて変数を増やせばあとは同じ手順でできるから安心してね。
  3. スタート>プログラム>多変量解析>アイコンクリック でソフトを立ち上げよう。
  4. 条件設定Prm.ボタンをクリック>重回帰分析選択>OK で重回帰分析を指定する。分析ボタンを押せば計算が終了し、保存先を聞いてくる。
  5. 保存した後ファイルを開いて主成分分析と同じく標準表示に切り替えて偏回帰係数の所を調べると次のように数値が計算されている。

    x1 = − 0.02166
    定数項 = 2.445151

x1 の係数は − 1/z = − 0.02166  だから、z = 46.2 (℃)という結果が得られる。

log D = − 0.02166×Temp. + 2.44151 からそれぞれの温度のD値(秒)を求めると次のようになり、精密に測った測定値に良く一致した。

D50=23 、 D55=18 、 D60=14 、 D65=11

腸炎ビブリオって、結構ガッツあるね。60度の殺菌温度で14秒置いてないと一桁落ちないんだよ。うじゃうじゃいる状態は10の8乗くらいはあるだろうから112秒で8桁落とすことになる。一桁台にまで殺菌するには約2分はかかる。夏場は火をちゃんと通して食中毒などなさらぬように。

微生物の耐熱性試験をいつも失敗するあなた、とっても助かったでしょ?
試験数を減らせるし、秒単位の作業のミスもへるし。方眼紙上で作業していることと同じことを数式でやっているだけだけど、同じ式の中に対数が複数で入れ子になっている式など見たこともない上司達は多い。

上司がこれを理解できるかどうかはべつだから、提案には充分気をつけてね。

 酵素反応速度論って簡単だよ

反応速度論で必ずでてくるミハエリス=メンテンの式。

V = ( Vmax[S] ) / ( Km+[S] ) ----- (1)

たいがいの教科書は観測データなしで式だけ書いてあるので、どうやって係数 Vmax と Km を算出するかさっぱりわからない。
だいいち、何の経験もなしにいきなりミハエリス=メンテンの式なんていわれても、なんにつかうのか、変数とはどのような作業ででてくるデータなのかもわからない。先生たちは経験の裏打ちを話す必要があるのだけどね。

でも安心しなよ。ここで回帰で解決できることがわかるから。上式は関数の計算として理解しにくいから、 y と x で表現する形にしよう。
次のように置き換えると考えやすい。

                    基質濃度[S] → x
 一定反応時間後の生成物質量(反応速度)V → y
                 反応物最大生成速度Vmax → a
                       ミハエリス定数Km → b

(1)式は次のように表現される。

y = ax / ( b + x ) ----- (2)

(2)式の両辺に(b+x)を掛け算して、両辺をyで除算したあと整理すると次式が得られる。

x/y = ( 1/a )x + b/a ----- (3)

x と y とが観測データで、これから a と b の数値を求めたいんだよね。(3)式をよくにらんでごらん。エクセルで x/y の計算欄を作りこれを目的変数とすると、ほら、回帰式を計算できる形になっているだろう?
基質濃度 x と x/y で回帰式を作れば、偏回帰係数は 1/a で、回帰式の定数は b/a の数値で回帰分析が返してくれるから、これから簡単な計算で a と b とが計算できるよね。算出された a と b の値をを(2)式にいれて元の [S] と V とに書き換えればミハエリス=メンテンの式が完成する。この作戦で計算してゆくぞ。

(3)式は Hanes-Woolf の式といいます。ここまではちょっとだけていねいな教科書だね。じゃあ、事例を入れようね。michaelis.gif

右の表はある酵素で基質(たとえばでんぷん質など分解されるもの)の濃度をいろいろ変えて酵素反応させたときの反応生成物量が示されている。
研究段階の反応生成物そのものは純粋分離できる方法がないことが多いため、反応生成物の量は一定時間後に力価で測ることが多い。だから単位はU(ユニット:生成物量に比例する測定値)で測ってあるんだ。この場合基質濃度 [S] はマイクロ・モルというモル濃度で表示されています。

ブルーの部分が分析データです。目的変数はこのデータから計算して出したものです。神田ソフトは目的変数を左端に置くことに決めていますから左端に置いてあります。基質濃度[S]をxとして回帰計算は2クリックで終了。

偏回帰係数= 1/Vmax = 0.018167 ----- (4)
   定数= Km/Vmax =  0.535168  ----- (5)
  相関係数= 0.9987

(4)式の逆数が Vmax 値になる。求まった Vmax 値を(5)式に代入すれば Km 値を求められるね。これでミハエリスメンテンの式完成。
少しは酵素反応速度論の壁が低くなったかな?ここまでやれば、解釈は助教授などにたずねると親切に教えてくれるさ。努力した者には好感が持てるからね。
意外と簡単だったろ?君も Hanes や Woolf になれるだろ?

Vmax = 55.0
  Km = 29.5

   V = (55.0[S])/(29.5+[S])

 エクセルの重回帰分析プログラムを利用する

神田ソフトはエクセルだけで回帰分析するよりはるかに簡単に主成分分析と重回帰分析をしてくれるんで重宝してる。科学研究の場面を考えると、まず主成分分析して因子間の関係を見て、次に重回帰分析で定量的な関係を見る流れが多いのだけど、世の中にはどうしてもエクセルだけで回帰分析したいと思う人がいるらしい。

どうするかさわりだけ説明しようね。主成分分析はエクセルでは標準装備されていません。重回帰分析は装備されていますが、デフォールトのインストールではインストールされていない場合があります。

(確認方法)

Microsoft Excel のツール(T)プルダウンメニューに「分析ツール」があるかどうか確かめてね。次に分析ツールをクリックすると「データ分析」メニューが出てくるけれど、この中に「回帰分析」があるかどうか確かめてね。

「分析ツールが」出てなければ次の作業をやってみて。
ツール>アドイン>「分析ツール」チェック>OK

なければ、エクセルの入っていたCD-ROMからインストールしなければいけません。インストール方法は「データ分析」メニューのヘルプにあります。

分析ツールのタイトルには「回帰分析」としか書いてありませんが、重回帰分析も同じ手順でやれますから安心してくださいね。

(エクセル回帰分析の手順)

  1. 表頭に因子名(変数名)がある一元表にデータ入力します。
  2. ツール>分析ツール>回帰分析>OK でY範囲とX範囲を聞いてきます。入力Y範囲をフォーカスして、一元表の因子名をはずしたデータ部分だけを選択します。
  3. 入力X範囲にフォーカスを移してシートの一元表のX範囲のデータ部分のみを選択します。
  4. OKで回帰分析は終了します。

 

神田ソフトは偏回帰係数と書いてあるけれど、エクセルは係数と書いてあります。エクセルのほうが口語っぽくてなじみはいいね。
で、学術的には「偏回帰係数の検定」と呼ばれる、係数それぞれが目的変数に関係の強い係数かどうかを調べる方法がある。一般に t 検定と呼ばれる方法です。今は変数選択法でやってしまうからあまりやらないけど、希望する人もいるみたいだから書いとこうね。

エクセルでは 値の欄に計算値があります。データの組数 、変数 p 個とすると、この計算からでた(observed)された数値toが、市販されている統計数値表にある自由度= n − p − 1 のときの t 値より大きいと関係が強いということになります。

市販の表が手元にないという人はエクセルの関数で計算すればいいよ。TINV関数で希望するt値が求められます。片側危険率の時には2倍の危険率を入れればいいね。

fxボタン>関数の分類(統計)>TINV関数>OK>希望の両側危険率(例0.05)と自由度を入力>OK

神田ソフトでは、統計的に同じことの別表現である「 F 値」で計算値が表現してありますので、これは Fo 値が、自由度 ( 1, n − p − 1 )のときの F 値より大きければ関係が強いということになります。 F 値の理論計算値は,ZIPファイルにおまけで入っていたはずですから利用して下さいね。
外部発表など気にしない人なら計算しないでも、経験から F 値が 2 以上であれば大体有意な水準にあると考えるやりかたがあります。比較的多くの人が使っていることですから安心してください。

 

 

 重回帰分析上の注意点やエクセルに無い方法も教えるぞ

 

■ 交互作用など

交互作用も重回帰分析で検出できるぞ。

3次元のグラフなどで、平面ではなく山が出来たグラフなどでは、xy項を付け加えてみると、重相関係数がぐっと上がることがある。あ、重相関係数とは、多変数のときに使う相関係数のことで、2つのときはただの相関係数って言うんだ。

関数式で、分母にxの項がはいるような関係式にもxy項を入れてみると良い。グラフが反比例の関係にあるときには、このような関係式を考えてみるのもよいはずだ。

このようなときには、必ず予測実績比較表を作ったり、3次元グラフを描いたりしてチェックすることを勧めるよ。

■ 2次指数曲線

発酵中の酒中に浮遊している酵母の数は、始めはほとんど増殖しないときが あって、それを過ぎれば急激にふえる。しかし発酵が終了し始めると炭酸ガスも出なくなり酵母も沈殿し始めるので最後は山形のカーブになる。

このような場合、2次指数曲線を適用しよう。両辺の対数をとれば次の式になる。

y= abxcx2

log y = log a + (log b)x + (log c)x2

エクセルにすでに君が入力した xy からlog y、x2 の列を作り、log yを目的変数(表の左端においた因子)として計算した重回帰式の係数からlog a、log b、log cの値が決まるから、a、b、cの値が決定できる。
ただ、最後の山状に曲線を近似したい時には、この辺りにかなり緻密な間隔でデータがあるのが望ましいよ。そうでないと比較的真っ直ぐな線が引かれがちです。

2次指数曲線などは、商品のライフサイクルと良く一致しているはずだ。売れない時期がしばらく続いて、急に売れ初めて、しばらく売れたら売れ行きが落ちてしまうというパターンですな。
商品ごとに係数、a、b、cを計算して、商品カテゴリーの秘密を探るというような調査に使えるな。

■ シグモイド曲線

「ゴンペルツ曲線への当てはめ手順」と「ロジスティック回帰の基礎知識」は第6章にアップしました。ここへ

シグモイド曲線などといわれるS字型の曲線も回帰分析で求めることができるけれど、理屈がタコ人向けにはちょっと煩雑かな。しかし、エクセルで直接やれないことをやれるとかっこいいぞ。君が勉強している証だからね。ここでのゴンペルツ曲線の関数近似方法はデータが等間隔で取られていることが前提です。
理論は他のサイトでもいっぱい書いてあるからそちらを参考にして下さい。

当面きっかけくらいは必要だろう。どうしても知りたい人はゴンペルツ曲線とかロジスティック曲線などというキーワードで調べてみてね。

インターネットでは日本人は、本の目次だけで金を出さないと教えない人が多いから、海外でサーチしたほうがいいかも知れないね。
いつか、さもしい日本人と言われるかもしれないなぁ。
海外の人たちは、子供達の成長に必要な情報を無償で提供するのに熱心だけど、日本人はお金儲けに熱心だね。周りじゅうが心の疲弊した大人にかこまれた日本の子供達はかわいそうだな。

■ ダミー変数

そうだ。忘れてたね。分類型のデータが入っていればどうなるか説明しようね。
0と1しか使わないダミー変数がデータの中にあった場合の話だよ。

1、x2がダミー変数のとき、回帰分析で次の式が出来ました。

y = 1.7x1 + 3x2 + 2.1

1が該当すればそこに1が代入されるから、この項は、1.7になるよね。でも該当しなければ、0が代入されるから、この項はゼロとなりyには何の影響ももたなくなるのです。
これは、x1がyのデータに1.7の効果をもっていることを示すよね。

分類型のデータは、ダミー変数を使う限りにおいては係数がその効果を示すことがわかるよね。

例えば、熱帯夜をダミー変数で入力しておいて、毎日の売上を目的変数として他の項目の中に入れておいて重回帰分析すれば、熱帯夜がくれば売上がいくら上昇するという数値がえられることを示すんだ。

これまでは、外乱効果としてしか扱えなかったものを、ダミー変数で一緒に取り扱うことで、売上の推定値は向上する。

分類型変数の重回帰分析で、偏回帰係数のt検定をする方法は、一元配置の検定をしていることと実質的には同じことをしているんだよ。

多変量解析に興味をもつんだから、タコ人として一元配置の実験計画法はやったことがあるかな。 無かったらききながしてね。主成分分析やる上で、一元配置法を知らなくてもできなくなるわけじゃあないから。

■ 重回帰分析における入力上の注意

重回帰分析では、変数の数 p に対して、データの組数 n は少なくとも p + 2 個以上は必要です。 理由は回帰からの平方和から不偏分散を算出するのに自由度 n - p - 1 が正の整数でないといけないからです。

データが少ないことは望ましいことではないのですが、主成分分析では変数の数よりデータの組数が少なくても計算はできます。多重共線性なども心配しなくて良いから、主成分分析は多くの尺度の数値を、取得したままに一緒に扱える自由さがありますね。

重回帰分析で分類型の因子を扱うときには特に注意が必要です。次にわかりやすくするため具体的な変数名で説明しますが、一般の変数と同じと読み替えて読んでください。

機械Aと機械Bとがあるとき、分類データを 1 、 0 のダミー変数として入力することはすでに第2章と第3章で学びました。変数に、機械Aと機械Bのふたつを付け加えて、Aが該当するときは機械Aの欄に 1 、Bの欄には 0 と入力しました。
入力値が 1 なら該当する場合、 0 ならそれ以外の場合と言うルールになっています。 主成分分析ではこのままでよいのですが、重回帰分析にこのままの変数を使って計算させようとしてもエラーが出るだけです。

機械Aの場合は、必ず機械Bはゼロになりますね。このふたつの変数の相関係数の値は - 1 になります。ここで計算が止まってしまうのです。

このような場合は二つの変数を一つにして、たとえば機械Aという変数名にしておいて、入力値が 1 だったら機械A、 0 だったら機械Bというルールにしておく方法をとります。 偏回帰係数から機械Aの効果は分離できますが機械Bの効果部分は定数項に入りますから、分離できません。

機械が2台より多ければどうするか?

計算はできるかもしれないけれど、ダミー変数として入力する限り気づかないうちに変数間で完全に相関係数が ± 1 になってしまうことも多く、次に説明する多重共線性も出やすいため、タコ人は次のような工夫をしておけばよいでしょう。
たとえば機械が5台あるときには、最初の4台までの変数を作り、最後の1台は4台の変数への入力が全て 0 の場合というルールにしておきます。もちろん最後の機械の効果部分は分離できません。分類データを変数に選ぶ時には、効果部分を知りたい因子を優先すると覚えていてください。

興味がある方は、数量化理論の勉強をされれば、もう少しカテゴリー別の効果も算出できる方法が見つかるでしょう。

■ 重回帰分析の弱み−多重共線性

高校時代に教えてもらってるはずだけど復習ね。
3元連立方程式は、方程式が3種類ないと解けないよね。4元連立方程式は4種類必要。で、n個の変数がある方程式はn種類必要なんだね。n個の方程式の中に、同じ式が2つ入っていたら解けません。同じというのは、ある方程式を移項したり、同じ数値を両辺に掛け算したりしてできた方程式のことです。見かけが違っても、変形すると同じになるという式のことを言います。

どれかふたつの方程式が全く同じときは解は出ません。もう一つ、多重共線性に関係する事柄で、ある条件の場合には、解が得られる場合でも、係数の値が少し変化すると解の数値が大きく振れる事がわかっています。

さて本論です。君が求めたい重回帰式は次の式だよね。

y = ax1 + bx2 + cx3 + dx4 + ・・・・・・ +(定数)

混乱しないでね。ゆっくり考えて。上の計算式の係数 a、b、c、・・・・n を求めるには a、b、c、・・・・n を変数にした方程式を作らないといけないよね。

方程式の変数 a、b、c、・・・・n の係数はどこから求めるかというと、それが観測データから計算される平方和と偏差積和の値になっています。観測データの変数番号と y を添え字にして次のように表現します。

平方和  (例)S11、S33
偏差積和 (例)S21、S13、S2y
そうすると、重回帰式の係数 a、b、c、・・・・n をもとめる方程式は次のようになります。平方和と偏差積和は計算された値ですから数値です。変数が a、b、c、・・・・n個で方程式が個だからこの方程式は解けますね(^^)。このときの n は数値1,2,3・・・・nの時のnだから固いこと言いっこなし。タコ人は添え字をいじりすぎると分かんなくなっちゃうのよ。
S11a + S12b + ・・・・ + S1nn = S1y
S21a + S22b + ・・・・ + S2nn = S2y
            ・
            ・
            ・
Sn1a + Sn2b + ・・・・ + Snnn = Sny

この個の方程式を、正規方程式と呼びます。求めたい n 個の変数 a,b,・・・・・ に対して n 個の方程式が出来ました。だから a,b,・・・・・ の値を決めることが出来るね。この方程式の解が、観測データから計算される重回帰式の係数となります。
このとき観測データの中で、任意のふたつの因子間に強い相関があると、算出される偏差積和からは解が出ても、その数値は少しの値の違いで大きく振れる結果となります。すなわち算出されてくる偏回帰係数は観測データの少しのバラツキで大きく異なることになります。

これが多重共線性(Multicollinearity)です。

非常に相関の高い列(変数同士)はどちらかを削除しないと、出た結果を使うときに問題をおこすんだよ。技術上の常識では高くなるはずの観測データの予測値が低くなったりするんだ。変数どうしの相関係数を見て0.9などという数値が入っていれば、重回帰分析の係数は多重共線性があるから多少眉唾で見るべきであると判断します。
重回帰分析の変数選択法というのは、もとはといえばこのあたりの必要性から出たものです。メカニズムに不要な変数を排除する目的で変数選択法を使う人も多いけれど、本質的には多重共線性がいやでメカニズムに強くかかわっている変数のほうから排除する方法なのです。言葉にまどわされてはいけません。

メカニズムにかかわっている因子を選択したければ、主成分分析を使う方が望ましいです。

ロジット変換値で主成分分析して変数選択した方が、ロジスティック回帰式の重回帰的変数選択法より関連する変数を捨てない分だけわかりやすくなると思うんだけど。お医者さんも頑固だなあ。

メカニズムに関与する因子を選択する方法として重回帰分析はあまりお勧めしないけれど、評価精度の良い算式モデルを求める方法としては素晴らしい方法です。
神田ソフトにも赤池情報量基準(AIC;Akaike's Information Criterion)が出力されます。色々な変数を重回帰式に取り入れたりはずしたりして重回帰計算をしてみて、このAIC値が最も低い値を示したところで打ち切ります。

多重共線性は学術用語です。日本ではマルチコとかいって一般人に通用しない言い方をするけれど、タコ人にむかってちょっと知ってるふりをしたいがために使うのはどうかな。海外でも通用しないし。

 

(注)ちょっとかじったことのある神様予備軍の皆様へ
変数間で高い相関がある場合、分散共分散行列式がゼロに近くなるので逆行列の要素が大きく変化して、偏回帰係数の推定精度が悪くなる現象を多重共線性といいます。ひどいときには回帰係数のプラスとマイナスが逆転します。 完全な相関の場合、分散共分散行列式がゼロとなるので解がでません。カテゴリカルデータの場合には変数間で相関が完全に一致することがよく起こりますから入力上の注意と工夫が必要です。
■ 雑談

主成分分析も、重回帰分析も、出来れば多くの因子を詰め込んで計算させた方が良いと思う。
実験と観察の積み重ねで因子を発見してゆくやり方は、コンピューターが身近に無かった時代のやりかたとして正しかったんだ。でも過去のスーパーコンピューター並みの計算能力が机の上に置けるよううになったのだから、利用しない手は無いよね。

多次元の世界をセンスと労苦でカバーしてきた先輩達は、やはり4次元以上の多変量の世界でやり残したことが多いはず。
多次元を扱えるからこれまでのやり方はいけないなんて考え方はやめようね。これまでのやり方で人類の文明と科学が維持されてきた。その重みを知っておくことが必要だ。多次元を扱える人間がこれまでのやり方にも精通していることこそ次世代の科学者としての資格だよ。

遺伝子操作の世界では、クラスター分析で因子間の関係を調べているけど、主成分分析を使えば、効果の方向まで教えてくれるのだから、もっと使えると思うんだけどね。
最初にやった奴は、きっと目立つと思うんだけど、海外の人がやったことしかやれない体質は変わらないねぇ。

経験上、主成分分析と重回帰分析の環境を自分のパソコンに常駐させておくと、ちょっとしたデータの解析のときにとても便利でした。そういう意味では神田さんが、主成分分析や重回帰にしぼったソフト開発されたのは経験からの判断とにらんでいます。他の使わないソフトまで常駐させておくのはパソコンにとって重くなりますからね。
重回帰分析目的だけとしても、主成分分析は異常値を探し出す主成分スコアを使えるから便利だぞ。3 以上のやつを探せばだいたい特に変なデータは見つかるはずです。いれておいて損はない。 2クリックで、結果を出せるのはやはりありがたいです。フリーソフトだから、紹介しておきます。
インストール方法は第 1 章にイラスト入りで説明しています。

http://www.vector.co.jp/soft/win95/edu/se203904.html

主成分分析は座標位置表現の変更だけだから、写真など色々な図形表現のノイズ除去とか、衛星センサスした結果の変化部分を抜き出すなどのことにも使われるようになってきている。主成分分析結果を関数当てはめする考え方の拡張として非線形主成分分析 nonlinear PCA が研究され、日本人の研究者も活躍しているぞ。
因子分析のほうが優れていると漠然と考えている人もいるけれど、主成分分析は奥が深い夢のある領域なのだよ。いずれ、DNA情報からメカニズムを解析したり、多次元の領域の不等式を駆使して、実際には見えない世界を図示できるようになるだろう。どんなに優れた科学者でも初めの一歩はとりあえず興味を持つことからスタートして有名になったんだよ。
このタコ人の国は、その最初の第一歩を踏み出せるように設計したつもりだ。じっくり読んでみてね。

主成分分析を学んで多次元の因果関係を検出できるようになった力は、文系でも理系でも 君たちの将来を切り開いてくれるはずだよ。頑張って!!!

s.gif
次はゴンペルツ曲線への当てはめの具体的手順だよs.gif飛べ。シグモイドの国へ
フレーム構成なら目次つきで見やすいです。 ≫ フレームへ

  第4章へ s.gifyatop.gifs.gif第6章へ 
上へ