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とか、より高機能な電卓を使うのが良さそうです。
8 件のコメント:
akatuki様の「文章」index 2番の化学反応プログラムに関してですが、少なくとも「ー>ARRY」コマンドを実行しようとした段階でエラーを起こし、計算することができませんでした。
少なくとも私の50gでは計算をすることができなかったのですが、akatuki様のものでは計算が出来たのでしょうか。
前者である可能性もあるので、もしも間違っていたら申し訳ありませんでした。
上のコメントの申し訳ありません「でした」の部分は飛ばしてください。
Stepney 様、遅くなり申し訳ない。
今、このコードをこれからHP50g に入れ直してみますので、もう少しお待ち戴き度く。
(以前にSysRPLの暴走で消してしまったのですヨ)
Stepney 様、重要な御指摘、有り難う御座居ます。単なるポカミスでした。スマソ。
2 2 ->LIST ->ARRY STOΣ
の所に「c」が抜けておりまして、正しくは
c 2 2 ->LIST ->ARRY STOΣ
となります。申し訳ない。文書の方もこれから修正します。
これを書いたときは、グラフ画面で [STATL] を使って、かなりの指数関数近似を得たのですが、現在は直線回帰になっちゃうのヨ ? どうなっておるのか ? (STATメニューから[3. Fit Data]を使い、Model:Best Fit ならばキッチリ出るんですけどネ)
という事で、有難い御指摘、感謝です。
大変申し上げにくいことなのですが、ー>ARRYの他にも
「ΣLIST」にもエラーが発生していました。
これも私の50gでは計算をすることができなかったのですが、修正版ではそのままだったので、少し気になりコメントさせていただきました。
Stepney 様、どうも。
いや、申し訳ない。
これは、当方の書き方が原因の様かも知れません。文書では、半角矢印記号を「->」としております。
ですから「->」の部分は、正確には「→」(これは全角矢印です)になるのですが、全角文字を使いたくなかったので、こうした表記になっております。
(半角矢印をどうやって入力するか、解決できないのですヨ。電卓のコードを持ってきても文字化けしてしまいますし)
恐らく大丈夫とは思うのですが、どうにもおかしい場合には、御一報戴きたく。
矢印の表記、私も理解しているので大丈夫ですよ。
私が「ー>」と書いたのは矢印を手っ取り早く書くためですから。
正確に表記する方法が私もよくわからないので、このような表記を使わせていただきました。
Stepney 様、毎度申し訳ない。
念のために、こちらの電卓で動いているコードをアップしておきました。
「当方の文書・SkyDribve版」の所に、「CHAMBRE.zip」という圧縮があります。御検討戴きたくお願い申し上げます。
コメントを投稿