No.14303 スピアマンの同順位の計算方法  【あもけん】 2011/02/12(Sat) 00:11

相関分析でスピアマンの順位相関係数を使おうと思い,計算方法を調べていて,下記URLの計算式と,http://aoki2.si.gunma-u.ac.jp/lecture/Soukan/spearman.html 下記のURLのJavaスクリプトを参考にさせていただきました。http://aoki2.si.gunma-u.ac.jp/JavaScript/corr2.html
そ の際,疑問に思ったのですが,同順位がある場合のスピアマンの順位相関係数の計算式のTxにSum(ti^3-ti)の項があるのですが,Javaスクリ プトのほうを見ると,Sum(ti^2-1)を計算しているように思います。具体的には,function order(x, xo, n)のtie += eq*eq-1の部分です。この違いは,どのように理解すればよろしいでしょうか?同順位のものを平均値にしてピアソンの積率相関係数を計算した値と, Javaスクリプトの計算結果が一致するので,Javaスクリプトに誤りがあるようにも思われないのですが。ご教授のほど,よろしくお願い致します。

No.14305 Re: スピアマンの同順位の計算方法  【青木繁伸】 2011/02/12(Sat) 08:34

プログラムは部分だけ見ても分からないと思います。件の代入はiを制御変数とするforループの中にあるので,同 じ同順位のデータが eq 個あれば,eq 個の同順位データについて tie += eq*eq-1 は eq 回実行されるのです。で,最終的には eq*(eq*eq-1) が足し込まれるんですね。プログラムがどのように実行されるかは,プログラムの途中に値の変化を調べる print 文などを入れてプログラムの実行を追えば良いでしょう。自分がコンピュータになったつもりで,プログラムに従って実行して見るのも良いでしょう。

No.14307 Re: スピアマンの同順位の計算方法  【あもけん】 2011/02/12(Sat) 11:11

青木先生のご説明のとおり,printfを挿入してトレースして,同順位の個数回eq*eq-1が足しこまれ,eq*(eq*eq-1)を計算していることが,やっと理解できました。
自分で1からプログラムを作っていたら,誤ってこの部分にeq*eq*eq-eqと書いて,はまってしまうか,最悪の場合,気づかずに間違った計算結果を使ってしまうところでした。
統計学の理解に役立つ解説やJavaスクリプトを公開していただき,さらに,質問にご回答いただきまして,大変感謝しております。
ありがとうございました。

● 「統計学関連なんでもあり」の過去ログ--- 044 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る