morの解析ブログ

解析疫学、リスクにまつわるメモや計算

「推定」のまわりをさぐる.教科書では「解析はMHにより行う、因子が多ければ重回帰を用いる」という風で詳しい例は少ない.独自(のつもり)な思いつきで具体に試行.
 数理を用いるべきアセスメントにも切り込む.

gam のメリット~スプライン

■ gam;平滑化によって、適合性が向上してうれしい.が、先憂後楽(交絡ではない)のため、曲線フィットについて考えておく.
・そのくねくね1つ1つに意味がつけられるかどうかである.
・曲線が結果にうまく沿えば見栄えはよい.が、差が小さくなればそれだけ正しいとは限らない(glmのオーバーフィット).推定した曲線に理由がつけられるなら、実測との多少の差はそのあとで追い込める.
 尤もな理由とは、あらたな仮説か、既知の事実の再現である.
 よって、理由のない適合を黙認するより検討を止め、考えよう.
・gamにもやはり妥当なところがあってしかるべき.
 正しいモデルはここでも中心課題だ.中心となるのは、ペナルティーのとり方になりそうだ. 
■ とはいえgamのメリット
 交絡が調整されているのが当然としても・・
 s()された因子の特徴が見つけやすい
  ことにlinear-predに対する関与について、ひとしきり想像をめぐらすことができる. 
  s( , )で交互作用を見つけやすい 
 オーバーフィットらしかった因子がそれなりになる.
  (後2者は、手計算で相当に遠回りした)
 交互作用が目で見える(曲線(面)の真ん中に出るかも).
   交互作用項の出し入れは要らない.
■ メモ gamのglm的機能とあわせて・・
 2値logistic → 連続値gam :非連続で構わない変量を一部2値に戻して →再度連続値gam  線形とみなせる因子を線形に戻して →再度gam
■ 解析方針
 ①主な影響因子を挙げ、全体の意味をつける.
 ②副因子について因子間影響を観察.


 gam : Hastie and Tibshirani(1990)
■ 傾き(splineなので、グネグネ.傾きが決まらないが、ある区間の平均傾斜として・・・)
 gamの、平滑化した曲線の傾きにかかる係数を探し出した.区間(たち)の平均値を計算しriskyさを示すものと扱って、点推定ができることとした.
 では、そのSEは?
■ 手探り
 names()して$residualをみつける.
 ① 傾きと目される値は区間平均だったから、ここでも区間でとってみる.元データの観測値によってソートし、区間ごとに群とし、二乗和して(n-1)で除し平方根とする.これをそれぞれのサンプル群のseとすればよかろう、として、スプライン結果のグラフに現れる信頼区間と見比べる.両端が微妙に一致していない,これは失敗か.
 ② $residualsから全体のseを導く
 sd(V) として全体のseとする.     
 これが各区間に、例数に応じてでかかっていると考えるやりかた.
 seは、各区間(9)についてパラメータを等分し、それぞれを構成するデータ個数;n1からn9に応じているとする.
 Rのspline曲線をながめると、seは、広がったり狭まったりしている.各区間のse(se1からse9)は、それらの例数に依存するとわかる.
 計算実験は、簡単のために 1/√1(/ni-1) について調べればよい.
 グラフ化し、spline図と比較すると一致する.区間から得たse”曲線”は、カクカクした線であるが、丸みをつければ曲線になる(たぶんRは,そうしている).
■ Rのスプラインのse
 つまり、Rのmgcvでは、スプラインのseをスプライン全線について1つ決めており、曲線各所でその区間を構成する員数に応じてひろげているのである.
 これからみれば、splineは、ただ一つの”直線”であり、seをもつ、しかし歪んだ世界にいる、と解釈された.
 ■ まとめ
・R流の、spline曲線方程式とse
coefficient から、簡単な計算で各区間の傾斜(区間ごとの期待値)を得る.
residualsから、全体のseを求め、各区間の員数に応じてseを得る.
これにより、期待値とseをreportできる. 
■ (未実施:係数和からexpし、推定カウント数としたうえで、確認することが必要)
□ 曲線方程式をベクトルから再生せず、いけるかもしれないと期待したが、結局ベクトルが見つかった.

■ 過適合を避けるプログラムを求め、gamなら既存のRでできそう**なのだが、R言語をあまりマスターしないで楽にデータメカニズムに迫りたい.
■ 過適合と平滑化、正則化
 過適合を避ける目的で、gam mgcvに入る.と、意外にも因子の非線形も一緒に調べられるメリットに浴することになる.
 ペナルティーの方法は、曲率(1/rとか);f''() これを2乗したものにλを乗じて加え、課す、ほか多数の正則化手段がある様子.RではWood式であるとの情報.*これらは、Rからベクトル取り出しし、数理的に計算する方向のもの.
■ 実際
  非線形回帰モデル(Rのgam;mgcv)では、平滑化したすべての因子が自動計算された、または、指定した単一のλ ;sp平滑化パラメータに支配されるから、2因子が非線形である場合、都合が悪い.つまり、1因子ではうまく説明できる平滑化spが、他の因子の回帰をみれば、やりすぎということがある.どちらかを思い切って線形として扱えるならよいが、不自然さは免れない,
 この解決策を考えた.
 データを予め変換し、それを線形データとしてgamに入れる.



■ 目指すモデルから求めるメカニズムへ
 2因子→残った非線形1因子平滑化モデルは簡単に係数が取り出せて、数値条件を与えれば予測値が算出される.これである条件下で実測の値との乖離を調べる.
 これは、モデルの適切さを確認するために行うのではない.そこに起こる乖離を説明できる理由があるのか、乖離は単なるばらつきか、はては、新たな仮説を要するか・・、といった点でむしろ発想を要求するから、解決の方向がみえる.
■ 考え方
 因子係数や、スプラインで説明できない残りをすべてバラツキとみるのでなく、説明のつかないものを極力説明したのちに考えるようにする.データ間のメカニズムの考察は相当深くなる.
 これは、「単変量で理解できるものは信じるが、2変量以上だと???」になり、考えることを放り出し、わからないから「否定する」暴力に対して、2変量で非線形の考え方まで広げ、仮説を組み上げ、3変量以上をも理解しようとする前向き、段階的な思考といいたい. 
いつまでも求め続けることが尊いこととJohn Henry Schwarzもいっている.”真実に対してのみ謙虚に、努力を惜しまず”のつもりで・・・.  
■ 実例
 実例は、いつもメカニズム未解明、因子関係影響根拠希薄な応用問題である.    


 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・


参考資料
* RによるGAM入門:辻谷将明氏,外山信夫氏 行動計量学2007(電子)
** 平滑化スプラインと加法モデル 馬場真哉氏 http://logics-of-blue.com/

×

非ログインユーザーとして返信する