裏 RjpWiki

文字通り,RjpWiki の裏を行きます
R プログラム コンピュータ・サイエンス 統計学

シミュレーションをするときの,よって立つ基準の選択

2013年08月22日 | ブログラミング

分散の推定」にて,ねぇぇ...

シミュレーションで何か示しましょう,ということなら,立派なプログラム書かなきゃねえ

m ← pi
s2 ← exp(1)
n ← 20
n.trial ← 10000

X ← matrix(rnorm(n*n.trial), n)
sample.mean ← colMeans(X)
sample.ub.var ← apply(X, 2, var)
sample.var ← sample.ub.var*(n-1)/n

mean(sample.mean)
m
mean(sample.var)
mean(sample.ub.var)
s2

が,立派かどうかは,分からないが,for を使わないとか,貴方の言う標本分散は不偏分散と単純な関係があるとかねえ。

実行速度は相等違うというか,あなたのやりたいことがはっきり分かるプログラムではないでしょうかね

それと,気になったところは,推定値の評価を母数との距離で評価しているんだけど,推定値の分布が左右対称な分布ならばそれで良いのだろうけど,分散の分布は非対称なのだから,推定値の評価は推定値の信頼精度(つまり,たとえば95%信頼区間に実際はどの程度入るのか?)を基準にする方が良いのではないかなあと。

いずれにせよ,ちゃんとした評価では,「母分散の推定値は不偏分散が最適」という答えは既にあるのだから。

コメント

基礎をしっかり

2013年08月07日 | 統計学

単純な集計とデータサイエンスによる分析とで結果が食い違うかもしれない3ケース」なんだけど...

結論は別によいのだけど,基礎が危ういなあと思うので一言。

筆者は,
世の中には、単純な四則演算での集計結果と、データサイエンスを駆使した分析結果とで、食い違ってしまうケースが何故かあることが知られています。どちらかと言うとレアケースだとは思いますが、その矛盾をおざなりにするととんでもないことになることも多々ありますので、

と書いていて,「何故かある」と本質が分かっていないような書きぶりなのです。

これは,多変量解析では当たり前なことです。多変量解析の結果は,単変量(より低次元)の分析結果からは推測できないということ。件のデータも,cv が yes/no 別に a1~a7 の変数 0/1 の割合を見るという単変量解析(実際には2変量解析だが)では a1 ~ a7 が同時に cv に影響を及ぼしているという多変量的な状況は把握できない。

著者は,まずはロジットモデルで分析してみて a7 の符号がマイナスではないことから,「クロス集計しただけの結果と GLM の結果とが矛盾している」と指摘している。さらに,何故そうなるかを説明するためにアソシエーション分析(バスケット分析)を行う。そして「a7 はcv_yes に比較的近く,また a6 とも近い」と見極め,「a7はa6との組み合わせにおいてのみCVR増に貢献していると考えられるので、a7はa6との間にどういう関係性があるのかをもっと細かく調べるべき」と答えることになると思います」と述べている。

わかっているのかどうかよくわからない。

古典的には,これらの変数の相互関係は相関係数行列で見ることになる。

       a1     a2     a3     a4     a5     a6     a7     cv
a1  1.000 -0.060 -0.003 -0.115  0.101  0.163  0.006  0.203
a2 -0.060  1.000  0.002  0.101 -0.070 -0.151 -0.027 -0.166
a3 -0.003  0.002  1.000  0.007 -0.018  0.022 -0.031  0.015
a4 -0.115  0.101  0.007  1.000 -0.196 -0.484  0.009 -0.547
a5  0.101 -0.070 -0.018 -0.196  1.000  0.335 -0.004  0.377
a6  0.163 -0.151  0.022 -0.484  0.335  1.000 -0.011  0.871
a7  0.006 -0.027 -0.031  0.009 -0.004 -0.011  1.000 -0.007
cv  0.203 -0.166  0.015 -0.547  0.377  0.871 -0.007  1.000

確かに cv と a7 は負の相関である。

集計表は

"a7"
     
        0   1
  No  750 750
  Yes 760 740
     
ちなみに,著者は 「cv が Yes, No 別の a7=1 のパーセンテージ」が 43.3% と 50.0% としているが,原因と結果の対応から見ると,a7 が 1, 0 別の cv =Yes のパーセンテージ 49.7% と 50.3%を見るべきだよね(導かれる結果は同じであるにせよ)。

また,これもちなみにであるが,2×2集計表の相関関係は,ピアソンの積率相関係数で評価できますか。

ここまでが,単変量(2変量)分析。

多変量解析では,他の変数も同時に影響を与えると考える訳であるから,逆に a7 と cv の「正味の相関関係」を知りたいならばどうするか。偏相関係数でしょう。

       a1     a2     a3     a4     a5     a6     a7
a2 -0.027                                          
a3 -0.005  0.003                                   
a4 -0.005  0.012  0.019                            
a5  0.027 -0.007 -0.025  0.015                     
a6 -0.031 -0.013  0.018 -0.020  0.015              
a7  0.006 -0.029 -0.031  0.007 -0.003 -0.011       
cv  0.112 -0.059  0.003 -0.284  0.176  0.807  0.006

a1 ~ a6 の影響を取り除いた a7 と cv の偏相関係数は 0.006 ということです。

単相関係数は -0.007 と負の値であったけど,偏相関係数は正の値です。

ロジットモデルは重回帰分析とは違うけど,偏相関関係をあきらかにするという点では同じ。そもそも,ロジットモデルにしろ重回帰モデルにしろ,独立変数に掛けられる係数は「偏回帰係数」であって,それは偏相関係数の「偏」と同じ。つまり,他の変数の影響を取り除いて,その変数に掛ける重みということ。相関係数を評価するというのは,従属変数を独立変数1個で単回帰(直線回帰)するというのと同じ(数学的に等価)。

単純な分析で総合的な分析(多変量解析)の結果は予測できないということ。

「何故かある」のではなく,「必然的にある」。ごくたまに単純な分析結果から予想した結果が総合的な結果と一致することもあるのだが。

コメント (1)

答えをもらう前に締め切るあわてんぼう

2013年08月06日 | ブログラミング

「統計ソフトRに距離行列の読み込み」なんだけどね...

統計ソフトRに距離行列を読み込む方法をご存知の方はいらっしゃらないでしょうか.
例えば,次のような距離行列をRに読み込みたいとします.

  A B C
B 1
C 1 1
D 1 1 1

これを通常の行列のようにread.table()等で読み込んだとしても,当然ですがデータの種類は正方行列data.frameになってしまいます.
距離行列distとして,読み込むにはどうしたらいいでしょうか.
言い換えれば質問は,
> class(読み込んだデータ)
[1] "dist"
と返されるにはどうしたらいいか,です.

尚,Rのdist()を使って距離行列を作成する方法は知っています.
どうしても他のソフトで作成した距離行列をRに読む込む必要があります.

一人から回答をもらったけど,旨くいかなかったとのたまい,それっきり。

以下のようにすれば良いのでは?

x ← read.table("dist.dat", header=TRUE, fill=TRUE)
nrow(x)+1
matrix(0, n, n)
colnames(d)  rownames(d)  c(colnames(x)[1], rownames(x))
d[lower.tri(d)]  x[lower.tri(x, diag=TRUE)]
(d  as.dist(d))

データファイルは,以下のようなものとする

  A B C
B 1    
C 2 3  
D 4 5 6

コメント