MATLABを用いた相関係数のt検定

アルゴリズム
スポンサーリンク

はじめに

統計解析でよく登場する「相関係数のt検定」。「相関が本当に有意なのか?」を確かめるためには、相関係数をもとにt検定を行い、“偶然”でないかどうかを確かめる必要があります。MATLABでは、この検定もシンプルに実装できます。今回はMATLABで相関係数のt検定を行う関数例を紹介します。

相関係数のt検定

相関係数のt検定とは?

サンプルデータ同士の関係(相関)が「偶然なのか?本当に意味があるのか?」を判定する方法です。

有意水準α=0.05(5%)なら、p値が0.05未満であれば“有意な相関あり”と判断します

関数例:TTestForCorrelationCoefficient

相関係数のt検定を参考にMATLAB用の「相関係数のt検定」関数を作ってみました。

function[p] = TTestForCorrelationCoefficient(r, n, type)
%Student's t-test of correlation coefficient
%相関係数のt検定
%『入力』
%r 相関係数
%n 相関係数を調べた時のサンプル数
%type 1で片側検定, 2で両側検定(デフォルト)
%『出力』
%p 相関がないといえる確率
%有意水準α=0.05としたとき、α>pであれば、危険率5%で優位な相関がある。

if nargin < 3
	type = 2;
end

% 相関係数を正とする
r = abs(r);
% 0 から 1 とする
r = min(r, 1);
% 統計量
t = r * sqrt(n - 2) ./ sqrt(1 - r.*r);
% 自由度
DF = n - 2;
% スチューデントの t 分布
p = 1.0 - tcdf(t, DF);
% 両側検定は2倍の面積
if type==2
	p = p * 2;
end
% NaN(相関係数が1の時に起こる)だったら、必ず相関があるので 0 に。
p(isnan(p)) = 0;
end

注意点

おわりに

データ解析で相関の有意性をチェックしたいとき、MATLABで簡単にt検定ができると便利です。自分で関数化しておけば、どんな場面でも再利用できます。統計解析に興味のある方は、ぜひMATLABで試してみてください。

関連記事
MATLABでExcelのTDISTとTINVを使う « なたで日記

コメント

タイトルとURLをコピーしました