正態分佈擬合
阿新 • • 發佈:2019-01-02
當我們有了一個矩陣,如何判斷矩陣裡面的元素是否滿足正態分佈,以及如何繪製圖像和求引數。我根據自己最近使用matlab的一些體會,將大致方法寫下。
1、矩陣元素轉化成行向量 reshape()函式
example:
A =
1 2 3
4 5 6
7 8 9
>> B=reshape(A,1,9) %1,9指的是行向量的格式1x9
B =
1 4 7 2 5 8 3 6 9
2、初步檢驗一組資料是否滿足正態分佈,可用normplot()直觀觀察,
example:
A =
2 3 4 6 77 8 8 99 9 9 45
normplot(A)%若點基本上與所給出的直線重合,則基本上滿足正態分佈
3、進一步檢測一組資料是否滿足正態分佈時,可以用jbtest()函式:
example:
A =
2 3 4 6 77 8 8 99 9 9 45
>> alpha=0.05;%顯著性水平設定為0.05
[h,p,jbstat,critval] = jbtest(A,alpha) % h=0,表明接受假設,即滿足正態分佈,h=1,則不滿足;
% 當p>alpha才滿足正態分佈,當測試值jbstat<臨界值critval才滿足正態分佈
執行結果如下:
h =
1
p =
3.5393
critval =
2.7016
從結果可知,A不滿足正態分佈。
4、假設已知某組資料滿足正態分佈,那麼要得到X~(mu,sigma^2)的數學期望mu,標準差sigma可以利用normfit();
example:
A =
459 362 624 542 509 584 433 748 815 505
>> [mu,sigma,muci,sigmaci]=normfit(A,0.05) %0.05即為我們自己設定的顯著性水平alpha, 返回的mu為數學期望,sigma為標準差,
% muci為數學期望mu的置信區間,sigmaci為標準差sigma的置信區間
5、怎麼繪製正態分佈的密度函式圖呢?
方法有多種:
a、已知了mu,sigma,可以使用函式normpdf(A,mu,sigma)可以求出各個資料的概率,再利用plot()將密度曲線圖繪出
example:
A=
459 362 624 542 509 584 433 748 815 505
>>A=sort(A);%先進行從小到大排序
mu=600;sigma=196;%從上文已求出mu=600; sigma=196
B=normpdf(A,mu,sigma);
example:
capaplot(A,[0,1000])%[ ]裡面的區間為自己指定的,這裡指定為0~1000
當然還有其他的方法,這裡不一一介紹了。
1、矩陣元素轉化成行向量 reshape()函式
example:
A =
1 2 3
4 5 6
7 8 9
>> B=reshape(A,1,9) %1,9指的是行向量的格式1x9
B =
1 4 7 2 5 8 3 6 9
2、初步檢驗一組資料是否滿足正態分佈,可用normplot()直觀觀察,
example:
A =
2 3 4 6 77 8 8 99 9 9 45
normplot(A)%若點基本上與所給出的直線重合,則基本上滿足正態分佈
3、進一步檢測一組資料是否滿足正態分佈時,可以用jbtest()函式:
example:
A =
2 3 4 6 77 8 8 99 9 9 45
>> alpha=0.05;%顯著性水平設定為0.05
[h,p,jbstat,critval] = jbtest(A,alpha) % h=0,表明接受假設,即滿足正態分佈,h=1,則不滿足;
% 當p>alpha才滿足正態分佈,當測試值jbstat<臨界值critval才滿足正態分佈
執行結果如下:
h =
1
p =
0.0319
jbstat =
3.5393
critval =
2.7016
3.5393
critval =
2.7016
從結果可知,A不滿足正態分佈。
4、假設已知某組資料滿足正態分佈,那麼要得到X~(mu,sigma^2)的數學期望mu,標準差sigma可以利用normfit();
example:
A =
459 362 624 542 509 584 433 748 815 505
>> [mu,sigma,muci,sigmaci]=normfit(A,0.05) %0.05即為我們自己設定的顯著性水平alpha, 返回的mu為數學期望,sigma為標準差,
% muci為數學期望mu的置信區間,sigmaci為標準差sigma的置信區間
5、怎麼繪製正態分佈的密度函式圖呢?
方法有多種:
a、已知了mu,sigma,可以使用函式normpdf(A,mu,sigma)可以求出各個資料的概率,再利用plot()將密度曲線圖繪出
example:
A=
459 362 624 542 509 584 433 748 815 505
>>A=sort(A);%先進行從小到大排序
mu=600;sigma=196;%從上文已求出mu=600; sigma=196
B=normpdf(A,mu,sigma);
plot(A,B,'-r*')
b、直接呼叫capaplot()繪製example:
capaplot(A,[0,1000])%[ ]裡面的區間為自己指定的,這裡指定為0~1000
當然還有其他的方法,這裡不一一介紹了。