2012年10月16日火曜日

HP35Sでt検定だッ

最近は「こんな電卓が欲しい」などと言ったボヤき記事ばかりでしたので、基本に立ち戻って、電卓の利用についての話題を。

HP35Sの数値積分能とプログラムを駆使して(?)、t検定をやってみました。統計の知識が別に入り用ですが、手頃な入門書は図書館にでも行って探してみて頂戴。


1. プログラム

D001    LBL D         //  プログラムスタート
D002    0             //  積分下限 (0からXまで積分)
D003    x<>y          //  積分区間のスタック上の順番を交換
D004    FN= E         //  積分する関数を指定
D005    intFN d X     //  数値積分
D006    RCL D         //  
D007    1             //  
D008    -             //  (df-1)
D009    2             //  
D010    /             //  (df-1)/2
D011    !             //  ((df-1)/2)! = gamma((df+1)/2)
D012    *             //  
D013    RCL D         //  
D014    2             //  
D015    /             //  df/2 
D016    1             //  
D017    -             //  (df/2-1)
D018    !             //  (df/2-1)! = gamma(df/2)
D019    /             //  
D020    pi            //  
D021    RCL D         //  
D022    *             //  
D023    sqrt x        //  sqrt(pi*df)
D024    /             //  
D025    0.5           //  
D026    x<>y          //  
D027    -             //  
D028    RTN           //  

E001    LBL E         //  積分関数
E002    RCL X         //  X について積分を行うため、Xをスタックに置く
E003    x^2           //  
E004    RCL D         //  
E005    /             //  x^2/df
E006    1             //  
E007    +             //  1+x^2/df
E008    RCL D         //  
E009    1             //  
E010    +             //  df+1
E011    2             //  
E012    /             //  (df+1)/2
E013    +/-           //  -(df+1)/2
E014    y^x           //  (1+x^2/df) ^ (-(df+1)/2)
E015    RTN           //  


2. プログラムの使い方

プログラム自体は、t分布の累積分布関数(cdf ; cumulative distribution function)について、xから∞までの範囲(=「右裾」)の値を返すものです。
あらかじめ、自由度dfをレジスタDに入れておき、スタックトップにxを置いておき、

[XEQ] D [ENTER]

とキーを押す事で、結果が得られます。

例えば、自由度10で0.5から∞までの右裾の面積を求めるには、

10 [STO] [D] 0.5 [XEQ] [D] [ENTER]

と押します。「INTEGRATING」表示のあと少々の時間を掛けて、

0.31394680  (FIX 8)

という結果が得られます。

少々手間の掛かる事ではありますが、一応t分布の計算ができました。これを使えば、簡単なt検定の作業が出来ると思います。その例をPDFにて作成しました。右の文書置き場にあります。「t-dist.pdf」を見てチョ。(SkyDriveの方はlogin不要だと思います)

35Sでのt検定はそこそこ使えそうですが、t区間推定は実用にはなりそうもありません。区間推定となると「逆計算」なので、大変時間が掛かるものと思われます。それに、HP35SではSolvreと数値積分を同時には使えないという問題があります。
Solvre部分は自前でNewton Solvreをプログラムで組む方法がありそうですが、数値積分だけでも時間が掛かってしまうため、Solvreまで使うとなると、これはもうポンポンポン(きゃりーちゃんじゃないよ)と軽快にキーを叩いて答えを出すという訳にはいかない。参ったなァ。
区間推定の場合には、TI-83+やHP50gとか、より高機能な電卓を使うのが良さそうです。