11.1 前言
統計的技巧與資料分析常常形影不離。一般統計使用加法、累加法、平均值,中間值等等,由於處理的對象是矩陣資料,故其基本統計之技巧已經廣為應用,其觀念也會在正常之運作中出現。統計學中比較特殊應用者為機率、亂數、常態分配等,而配合應用者為其相關之圖表。在MATLAB中,有一個統計學工具箱,內藏各種統計學上需要應用的指令,可以執行上述與統計學有關之內容。這些相關的指令大部份以M-檔案組成,所以可利用type 這個功能檢視其內容。甚至可以更改其檔案名稱與內容,增加自己需要的功能,使其成為新的指令。此外,有些指令尚搭配繪圖介面,因而可以在繪圖模式下,進行資料與圖之適配,形成具體的方程式或實驗式,以供未來研究者使用。
統計工具箱中提供約二百餘個指令檔案,其中對機率分配方面則提供廿餘種機率型態,每種均有其相關的函數,諸如:
- 機率密度函數(pdf)
- 累積分佈函數(cdf)
- 累積分佈函數之反函數
- 亂數產生器
- 均數與變異數
張貼者: Martin Fon 位於 此文章的連結 Chap11
11.2.1平均值MEAN
統計學上對資料處理常用趨中的處理,求取均值或中間值等,均會取中的特徵。求取一個矩陣或向量之平均值時可用指令MEAN,其格式如下:
M=mean(A,dim)
若A為向量,其結果M為單一值,亦即向量中各元素之平均;若A為矩陣,則結果M為一列向量,其中元素為各行之平均值。dim為方向性參數,其預設值為1,表示結果係行向平均,故M為列向量;若dim=2,則係沿列向平均,結果M為行向量。例如:
A = [1 2 3; 3 3 6; 4 6 8; 4 7 7]
A =
1 2 3
3 3 6
4 6 8
4 7 7
M1=mean(A), M2=mean(A,2)
M1 =
3.0000 4.5000 6.0000
M2 =
2
4
6
6
張貼者: Martin Fon 位於 此文章的連結 Chap11
11.2.2中間值median
中間值亦可利用平均值的指令型式求得,其正式指令名稱為median。但其求得之值若非正好中間值,則會以接近中間值之兩值加以平均,其結果與mean之平均值仍有不同,下面以前述之B矩陣為例,比較median 與mean兩者執行後之不同處。
M1=median(B),M2=mean(B)
M1 =
5.5000 5.5000 5.0000 6.0000
M2 =
5.0000 5.5000 4.7500 6.0000
其他的平均值則有:
幾何平均(geomean):各元素乘積再開總數之次方。中間有零值時,其結果為零。
調諧平均(harmmean):各元素倒數和之倒數乘以總數。
修剪平均(trimmean):去頭去尾再平均的方式,其頭尾部份為第二參數(%)之一半比例。
下面的例子為這些平均值的比較:
X=1:2:20
locate=[geomean(X) harmmean(X) mean(X) median(X) trimmean(X,25)]
X =
1 3 5 7 9 11 13 15 17 19
locate =
7.6139 4.6877 10.0000 10.0000 10.0000
由上述這些值看來,有些的結果相同,有些則因其分離的情況而有異。中間值及修剪平均值是不管偏異的大小,一般為避免有極端的數值的影響,採用這種平均法。
張貼者: Martin Fon 位於 此文章的連結 Chap11
11.2.3最大值與最小值 MIN & MAX
要求一矩陣或向量中元素之最大與最小值時,其指令之型式如下:
C = max|min(A)
C = max|min(A,B)
C = max|min(A,[],dim)
[C,I] = max(...)
若A為向量,其結果C為單一值,亦即向量中各元素之最大或最小;若A為矩陣,則結果C為一列向量,其中元素為各行之最大或最小。dim為方向性參數,其預設值為1,表示結果係行向取得最大或最小,故C為列向量;若dim=2,則係沿列向操作,結果M為行向量。注意要dim之參數時,需加在第三位置。此外,在輸出項中,I表示最大或最小元素之位置,不過此項功能僅求最大值時適用。例如:
A= [7 2 3 4; 2 4 5 6; 4 6 8 5; 6 7 6 1];
[C,Index]=max(A)
A =
7 2 3 4
2 4 5 6
4 6 8 5
6 7 6 1
C =
7 7 8 6
Index =
1 4 3 2
在這個指令中,比較特殊的是兩個矩陣A與B之最大或最小比較,其結果C應為與A或B相同的矩陣,但比較A與B中對應元素間之最大與最小。例如:
B=[1 8 7 6;4 6 2 8;7 5 6 4;8 3 4 6]
[Cab]=min(A,B)
B =
1 8 7 6
4 6 2 8
7 5 6 4
8 3 4 6
Cab =
1 2 3 4
2 4 2 6
4 5 6 4
6 3 4 1
張貼者: Martin Fon 位於 此文章的連結 Chap11
11.2.4變方值VAR
變方值為各樣本品與平均值差之平方和。又稱為變值常態檢定公式,其指令型式為var(X,1)。其計算之公式如下:
VAR(X)=[(X1-r)²+(X2-r)²+...+(Xn-r)²]/(n-1)
式中,n為其總項目,若n>1,則採用n-1以獲得無偏差之變方值。相關指令如下:
Y=var(X)
Y=var(X,1)
Y=var(X, w)
Y=var(X, w, dim)
Y=var(X)為執行上式計算之無偏差變方,Y=var(X,1)則採用n為除數。另w則為加權值向量,此權值必須為正值,且長度與X相同。
若X為矩陣時,通常預設為行向計算,但可以利用dim=2參數改為以列向為計算基礎,其結果為行向量。var指令會將其元素除以總和,因此權值總和為一。若w值為零,其結果如var(X);若為1則如var(X,1)。
範例
>> x=1:9
x =
1 2 3 4 5 6 7 8 9
>> var(x) %除以(n-1)
ans =
7.5000
>> var(x,1) %除以n
ans =
6.6667
>> w=[1 1 1 1 1 0.5 0.5 0.5 0.5] %設為權值,向量與x同
w =
1.0000 1.0000 1.0000 1.0000 1.0000 0.5000 0.5000 0.5000 0.5000
>> var(x,w)
ans =
5.9184
張貼者: Martin Fon 位於 此文章的連結 Chap11
11.2.5標準差STD
標準誤差為各樣本品與平均值間之常態差,其值實際上為上述變方var執行結果之開方值,其計算公式如下:
張貼者: Martin Fon 位於 此文章的連結 Chap11
11.2.6 共方差COV
共方差為兩向量之觀察值與其平均差之乘積和,其計算之函數定義如下:
cov(x1,x2)=E[(x1-u1)(x2-u2)]
其中 ui=Exi
根據上式,其相關指令格式為:
C = cov(X)
C = cov(x,y)
在COV之指令,若 X為向量,其回應值應為變方值。若其為矩陣,則各列為觀察值,各行則成為變數,而COV(X)則為共方矩陣。其對角線元素 DIAG(COV(X))即為每行之變方差向量。若將之排序後,即SQRT(DIAG(COV(X))),其結果為標準差之向量。以下為例:
>> x=[4 -2 1; 9 5 7]
C1=cov(x)
M=diag(cov(x))
sort(diag(cov(x)))
x =
4 -2 1
9 5 7
C1 =
12.5000 17.5000 15.0000
17.5000 24.5000 21.0000
15.0000 21.0000 18.0000
M =
12.5000
24.5000
18.0000
ans =
12.5000
18.0000
24.5000
COV(X,Y)則是求取 X與 Y兩等長度之向量之共方差, X與 Y兩向量即使為列向量亦會自動改為行向量,其效果等於COV( [X(:) Y(:)] )。這兩個指令均設法加以常態化,故母數除以N-1,以消除偏差。若要維持使用N為母數,則可增加參數1,即採用 COV(X,1) 或 COV(X,Y,1)指令之型式。
張貼者: Martin Fon 位於 此文章的連結 Chap11
11.2.7相關係數 corrcoef
兩個變數相關性可由相關係數求得。其指令型式如下:
R = corrcoef(X)
R = corrcoef(x,y)
[R,P]=corrcoef(...)
[R,P,RLO,RUP]=corrcoef(...)
[...]=corrcoef(...,'param1',val1,'param2',val2,...)
基本上,R=CORRCOEF(X)在於計算一個R矩陣,其內有X陣列行間之相關係數。而CORRCOEF(X,Y)則計算 X 與 Y兩行向量之相關係數,其意義與CORRCOEF([X Y])相同。
假設 C為共方矩陣,且 C = COV(X),則R=CORRCOEF(X)之定義為:
R(i,j) = C(i,j)/sqrt{C(i,i)C(j,j)}
輸入項中除XY等資料矩陣外,尚可輸入其他特定變數與常數。這些可以用 'PARAM1',VAL1成對表示,其項目包括:
參數值:
'alpha' 顯著水準,預設值為0.05(即95%信任區間)
'rows' 使用 'all' (預設值)表示使用所有列值;
'complete'表示使用沒有含NaN 值之列;
'pairwise'表示計算R(i,j)時使用不含
NaN值之 i行或 j行。
輸出值中, P表示檢驗無關係假設之P值矩陣。每一個P值代表隨機可以觀察得到之最大值域。若 P(i,j)值很小,例如小於 0.05,則R(i,j) 之關係甚為顯著。
此外,有RLO與RUP代表95%信任水準之下限與上限矩陣,其大小與R相同。
例一
>> x=1:5
x =
1 2 3 4 5
>> y=x.^3
y =
1 8 27 64 125
>> r=corrcoef(x,y)
r =
1.0000 0.9431
0.9431 1.0000
答案中r之值愈接近於1,其相關性愈高。此例中,對角線為自己對自己(即x對x;y對y)故其相關性為1,其餘x對y或y對x,兩者相關性一樣,其數值為0.9431,也相當高。
例二
利用常態分配亂數指令randn產生30X4大小之資料,開始時先利用第四行建立與其他行間之關係,以橫向加總於第四行。其後以corrcoef求相關係數r及機率p。就機率而言,p值愈小,表示兩者之相異性更強,其結果可利用find指令找出小於0.05以下之機率項目。
x = randn(20,4); % uncorrelated data
x(:,4) = sum(x,2) % introduce correlation
[r,p] = corrcoef(x)
% compute sample correlation and p-values
[i,j] = find(p<0.05);
% find significant correlations [i,j]
x =
0.0828 -0.5703 -0.0716 -0.5850
0.7662 -1.4986 -2.4146 -4.2576
2.2368 -0.0503 -0.6943 2.2430
0.3269 0.5530 -1.3914 -0.0113
0.8633 0.0835 0.3296 0.7592
0.6794 1.5775 0.5985 2.2962
0.5548 -0.3308 0.1472 -0.3822
1.0016 0.7952 -0.1014 2.6212
1.2594 -0.7848 -2.6350 -2.4089
0.0442 -1.2631 0.0281 -1.3408
-0.3141 0.6667 -0.8763 -1.7822
0.2267 -1.3926 -0.2655 -1.1188
0.9967 -1.3006 -0.3276 2.0588
1.2159 -0.6050 -1.1582 -0.2577
-0.5427 -1.4886 0.5801 -2.8740
0.9122 0.5585 0.2398 1.9573
-0.1721 -0.2774 -0.3509 -2.2362
-0.3360 -1.2937 0.8921 -0.5890
0.5415 -0.8884 1.5783 -0.4617
0.9321 -0.9865 -1.1082 -0.4434
r =
1.0000 0.1950 -0.3475 0.5143
0.1950 1.0000 0.0929