2009-12-10 25 views
15

データポイントと平均ポイントがあります。私は、それらのデータポイント(その意味で)がガウス分布に従っているかどうかを調べる必要があります。この種のテストを行うことができるMATLABの関数はありますか?あるいは私自身のテストを書く必要がありますか?データ分布がMATLABのガウス分布に従うかどうかのテスト

私はMATLABが提供するさまざまな統計関数を見てみました。私はMATLABの新機能ですので、適切な機能を見落としている可能性があります。一般に、試験のため

歓声

答えて

14

を取得するには、すべてのavailable hypothesis testsでこのdocumentation pageをチェック。これらから

、あなたの目的のためにあなたが使用することができます。

...中でも

あなたはまた、のようないくつかの視覚的なテストを使用することができます。

+0

私はちょうどこれらは全てからであることを好きではありませんMathwork $ tatistic $ツールボックス。 1つは簡単に一緒にハックすることができます。それ以外のJarque-Beraは残りますが、 'octave'からいくつかのファイルをインポートする必要があります。統計的なテストのfirehoseに関するもう1つの問題は、それぞれの相対的な力の兆候がないことです(真実です、それは別の仮説に依存します)。 – shabbychef

+0

ええ、ウィキペディアのリンクがよかったです。彼らは通常、より多くのポイントと通常より速く読むことです。 –

5

kstest及び二サンプルバージョンとして、また統計ツールボックスで、コルモゴロフ - スミルノフ試験をルックアップ:kstest2。あなたは、あなたの経験的データ(およびガウスのような可能な関数からのデータなど)をフィードし、それからあなたのサンプルが正規分布から引かれた可能性をテストします。バージョン)...微妙が、それはすべての可能な分配のために働くだろうということです...

5

私はSpiegelhalterのテスト(DJ Spiegelhalter、 '分布の形状の診断テスト、' Biometrika、1983)好き:

function pval = spiegel_test(x) 
% compute pvalue under null of x normally distributed; 
% x should be a vector; 
xm = mean(x); 
xs = std(x); 
xz = (x - xm) ./ xs; 
xz2 = xz.^2; 
N = sum(xz2 .* log(xz2)); 
n = numel(x); 
ts = (N - 0.73 * n)/(0.8969 * sqrt(n)); %under the null, ts ~ N(0,1) 
pval = 1 - abs(erf(ts/sqrt(2))); %2-sided test. 

統計テストをハッキングするたびに、常にnullの下でそれらをテストしてください!ここでは簡単な例です:

pvals = nan(10000,1); 
for j=1:numel(pvals); 
pvals(j) = spiegel_test(randn(300,1)); 
end 
nnz(pvals < 0.05) ./ numel(pvals) 

私は結果を得る:

ans =  
    0.0505 

同様

nnz(pvals > 0.95) ./ numel(pvals) 

私は

ans = 
    0.0475 
関連する問題