X,Y 的相關係數=(X,Y 的共變異數) / (X 的樣本標準差 * Y 的樣本標準差)
而所謂樣本共變異數則是 :
X,Y 的共變異數=X,Y 的離均差交乘積和 / (樣本數 - 1)
這裡在母體共變異數是不用減 1 的, 在樣本因自由度少 1 故要減 1.
$X=Array(25,23,27,35,30);
$Y=Array(35,27,36,45,42);
$xavg=array_sum($X)/count($X); //X 平均值
$yavg=array_sum($Y)/count($Y); //Y 平均值
$xsum=array_sum($X); //X 總和
$ysum=array_sum($Y); //Y 總和
$x_square_sum=0; //X 平方和累計
$y_square_sum=0; //Y 平方和累計
$XMD=Array(); //X 離均差
$YMD=Array(); //Y 離均差
$mdcross_sum=0; //X,Y 離均差交乘積和
$count=count($X); //元素個數
for ($i=0; $i
$ydif=(float)$Y[$i]-$yavg; //Y 離均差
$XMD[$i]=$xdif;
$YMD[$i]=$ydif;
$mdcross_sum += $xdif*$ydif; //X,Y 離均差交乘積和
$xdif_square_sum += pow($xdif, 2); //X 離均差平方和
$x_square_sum += pow($X[$i], 2); //X 平方和累計
$y_square_sum += pow($Y[$i], 2); //Y 平方和累計
} //end of for
//計算樣本標準差 & 乘積
$xstd=sqrt(($x_square_sum-pow($xsum,2)/$count)/($count-1));
$ystd=sqrt(($y_square_sum-pow($ysum,2)/$count)/($count-1));
$xystd=$xstd*$ystd; //兩標準差乘積
//計算樣本共變異數
$covar=$mdcross_sum/($count-1);
//計算相關係數
$corr=$covar/$xystd; //答案是 0.94137554144354
其實同樣數據, 我用母體公式計算相關係數, 答案也是 0.94, 沒什麼差異.
參考網站 :
http://stat.nuk.edu.tw/prost/content2/statics_6.htm (樣本共變異數)
http://greenhornfinancefootnote.blogspot.tw/2007/08/blog-post_27.html (樣本標準差)
沒有留言 :
張貼留言