2次元に散布図を描いで、回帰直線とp値と相関係数を求めて関係性を調べる解析は、しばしば行われます。 結果を見て、「p値は 10 -3 のように有意な値が出たのに、相関係数があまり良くない」なんてことが良くありませんでしょうか。そこで、実験的に、楕人口的な傾きを持った楕円状の分布を使って、サンプル数、p値、相関係数 R の関係を調べてみることにします。 分野にもよるでしょうが、観測値は正規分布に近いけれど離れた観測値も観察されることが、現実には多いと考えます。こんな時は、t分布の方が、現実にはあっているかもしれません。以前、当ブログで、 正規分布とt分布の比較 もしていますので、御参照下さい。今回は、t分布に従う分布を乱数として使うことにします。 まずは、確率密度分布に従う傾いた楕円状の分布の観測点を得ます。方法は、 200個など数の (x, y) を t分布に従う乱数から作ります y軸方向を何通りかにグシャっと圧縮して、X軸上に近づけます 原点を中心に回転させます 以上です。 この方法だと、回帰直線の傾きは、回転させた角度 (正確には傾きは、回転角の正接 [タンジェント, tangent])になります。 そこで、回帰直線の値は、あえて求めたり、議論はしないことにします。回帰直線の切片は複雑になるので、0にします。 例によって、 julia で計算していきます。プログラムに興味がない方は、コードは読み飛ばしても大丈夫です。 using Statistics, StatsBase, Distributions, Plots, DataFrames, GLM, ColorTypes # 回転行列 function rotation_m(θ::Float64, A0::Array) A1 = zeros(size(A0)); for i in 1:size(A0,1) A1[i,:] = [cos(θ) -sin(θ); sin(θ) cos(θ)]*A0[i,:] end return A1 end # x, y ごとに自由度を設定したt分布の(x、y) のサンプル N 個を得る function get_A(xdf::Int64, ydf::Int64, N::In...