1.表中是道瓊斯工業指數(DJIA)和標准普爾500種股票指數(S&P500)1988年至1997年對應股票的收益率資料:
年份 |
DJIA收益率(%) |
S&P500收益率(%) |
年份 |
DJIA收益率(%) |
S&P500收益率(%) |
1988 |
16.0 |
16.6 |
1993 |
16.8 |
10.1 |
1989 |
31.7 |
31.5 |
1994 |
4.9 |
1.3 |
1990 |
-0.4 |
-3.2 |
1995 |
36.4 |
37.6 |
1991 |
23.9 |
30.0 |
1996 |
28.6 |
23.0 |
1992 |
7.4 |
7.6 |
1997 |
24.9 |
33.4 |
計算兩種指數收益率的相關系數,分析其相關程度,以0.05的顯著性水平檢驗相關系數的顯著性。
1 x = [16.0 31.7 -0.4 23.9 7.4 16.8 4.9 36.4 28.6 24.9]; 2 y = [16.6 31.5 -3.2 30.0 7.6 10.1 1.3 37.6 23.0 33.4]; 3 scatter(x,y,'r*'); 4 xlabel('DJIA收益率(%)'); 5 ylabel('S&P500收益率(%)'); 6 p = polyfit(x,y,1);%1表示一次函數 7 hold on; 8 xx = -5:1:40; 9 yy = polyval(p,xx); 10 plot(xx,yy,'b-');%畫出來的是光滑的曲線 11 grid; 12 title('回歸分析表') 13 hold off; 14 [r,p,rlo,rup] = corrcorf(x,y)%相關分析 15 16 >> [r,p,rlo,rup] = corrcoef(x,y) 17 18 r = 19 20 1.0000 0.9481 21 0.9481 1.0000 22 23 24 p = 25 26 1.0000 0.0000 27 0.0000 1.0000 28 29 30 rlo = 31 32 1.0000 0.7903 33 0.7903 1.0000 34 35 36 rup = 37 38 1.0000 0.9880 39 0.9880 1.0000 40 41 >> [i,j] = find(p<0.05); 42 >> [i,j] = find(p<0.05) 43 44 i = 45 46 2 47 1 48 49 50 j = 51 52 1 53 2 54 55 %r(i,j)表示相關系數 56 %P表示假設檢驗的P-value值,P-value值越小表示的相關性越顯著。 57 %一般以P < 0.05 為顯著, P<0.01 為非常顯著
附錄:r(1,2) = r(2,1) = 0.9481便是相關系數,t = r*sqrt(n-2)/sqrt(1-r^2) = 8.4335,tα/2 = 2.31,則結果是顯著的。
rlo和rup是r在%95可信度下的置信區間。
2.regress解決上題
1 x = [16.0 31.7 -0.4 23.9 7.4 16.8 4.9 36.4 28.6 24.9]; 2 y = [16.6 31.5 -3.2 30.0 7.6 10.1 1.3 37.6 23.0 33.4]; 3 4 scatter(x,y,'r*'); 5 xlabel('DJIA收益率(%)'); 6 ylabel('S&P500收益率(%)'); 7 Y = y'; 8 X = [ones(length(y),1),x']; 9 [b,bint,r,rint,stats]=regress(Y,X) 10 %下面是返回值 11 b = 12 13 -2.5086 14 1.1198 15 16 17 bint = 18 19 -9.3225 4.3052 20 0.8137 1.4259 21 22 23 r = 24 25 1.1918 26 -1.4891 27 -0.2435 28 5.7454 29 1.8221 30 -6.2040 31 -1.6784 32 -0.6522 33 -6.5177 34 8.0256 35 36 37 rint = 38 39 -10.0742 12.4578 40 -11.9810 9.0029 41 -9.6540 9.1671 42 -4.3221 15.8128 43 -8.7610 12.4052 44 -16.1645 3.7565 45 -11.9494 8.5926 46 -10.4663 9.1620 47 -15.8388 2.8034 48 -0.7121 16.7633 49 50 51 stats = 52 53 0.8990 71.1816 0.0000 23.5811 54 %ployval函數中第一個多項式系數(行向量)是按高到低,而regress中的b是從低到高,而且是個列向量,不可直 55 56 %接bb = b',若是這樣還需逆置(fliplr(bb)),或者直接順時針旋轉90 57 %B=rot90(A):矩陣B是矩陣A沿逆時針方向旋轉90。得到的 58 %B=rot90(A,k):矩陣B是矩陣A沿逆時針方向旋轉k*90。得到的(要想順時針旋轉,k取-1) 59 60 xx = -5:5:40; 61 yy = polyval(rot90(b,-1)); 62 hold on; 63 plot(xx,yy,'r') 64 grid
進行線性回歸時,有4個基本假定:
① 因變量與自變量之間存在線性關系;
② 殘差是獨立的;
③ 殘差滿足方差奇性;
④ 殘差滿足正態分布。
在Matlab軟件包中有一個做一般多元回歸分析的命令regeress,調用格式如下: [b, bint, r, rint, stats] = regress(y,X,alpha) 或者 [b, bint, r, rint, stats] = regress(y,X) 此時,默認alpha = 0.05.
這里,y是一個 的列向量,X是一個 的矩陣,其中第一列是全1向量(這一點對於回歸來說很重要,這一個全1列向量對應回歸方程的常數項),一般情況下,需要人工造一個全1列向量。
回歸方程具有如下形式: 其中, 是殘差。 在返回項[b,bint,r,rint,stats]中,
① 是回歸方程的系數; ② 是一個 矩陣,它的第 行表示 的(1-alpha)置信區間; ③ 是 的殘差列向量; ④ 是 矩陣,它的第 行表示第 個殘差 的(1-alpha)置信區間;
注釋:殘差與殘差區間杠桿圖,最好在0點線附近比較均勻的分布,而不呈現一定的規律性,如果是這樣,就說明回歸分析做得比較理想。 ⑤ 一般的, 返回4個值: 值、F_檢驗值、閾值 ,與顯著性概率相關的 值(如果這個 值不存在,則,只輸出前3項)。
注釋: (1)一般說來, 值越大越好。 (2)人們一般用以下統計量對回歸方程做顯著性檢驗:F_檢驗、t_檢驗、以及相關系數檢驗法。Matlab軟件包輸出F_檢驗值和閾值 。一般說來,F_檢驗值越大越好,特別的,應該有F_檢驗值 。 (3)與顯著性概率相關的 值應該滿足 。如果 ,則說明回歸方程中有多余的自變量,可以將這些多余的自變量從回歸方程中剔除(見下面逐步回歸的內容)。 這幾個技術指標說明擬合程度的好壞。這幾個指標都好,就說明回歸方程是有意義的。
3.解同余方程組
1 >> syms n 2 >> solve(mod(n,10) - 9,mod(n,9) - 8,mod(n,8) - 7) 3 Warning: 3 equations in 1 variables. 4 Warning: Explicit solution could not be found. 5 > In solve at 81 6 7 ans = 8 9 [ empty sym ]
注意:matlab里求余不是%也不是mod,而是rem(x,y)
上面的我估計方法不對,懂得指點下!