例取
,求
.
的含义是:
P{X<
}=
时,P=0.975,
norminv(0.975)=1.96
4)随机数生成:
normrnd(mu,sigma,m,n).产生m*n阶的正态分布随机数矩阵.
4、频数直方图的描绘
1)给出数组data的频数表的命令为:
[N,X]=hist(data,k)
此命令将区间[min(data),max(data)]分为k个小区间(缺省为10),返回数组data落在每一个小区间的频数N和每一个小区间的中点X.
2)描绘数组data的频数直方图的命令为:
hist(data,k)
5、参数估计
1)设总体服从正态分布,则其点估计和区间估计可同时由以下命令获得:
[muhat,sigmahat,muci,sigmaci]=normfit(X,alpha)
此命令在显著性水平alpha下估计数据X的参数(alpha缺省时设定为0.05),返回值muhat是X的均值的点估计值,sigmahat是标准差的点估计值,muci是均值的区间估计,sigmaci是标准差的区间估计.
2)总体为其他分布,可以用函数[phat,pci]=mle(‘分布类型’,data,alpha),data为数据向量,phat为未知参数的最大似然估计值,pci为置信度1-alpha的置信区间。
例如:
x=poissrnd(2,1,100);[x1,x2]=mle('poiss',x,0.01)
注:
使用Matlab工具箱中具有特定分布总体的估计命令:
(a)[muhat,muci]=expfit(X,alpha)-----在显著性水平alpha下,求指数分布的数据X的均值的点估计及其区间估计.
(b)[lambdahat,lambdaci]=poissfit(X,alpha)-----在显著性水平alpha下,求泊松分布的数据X的参数的点估计及其区间估计.
(c)[phat,pci]=weibfit(X,alpha)-----在显著性水平alpha下,求Weibull分布的数据X的参数的点估计及其区间估计.
6、假设检验
在总体服从正态分布的情况下,可用以下命令进行假设检验.
1)总体方差sigma2已知时,总体均值的检验使用z-检验
[h,sig,ci]=ztest(x,m,sigma,alpha,tail)
检验数据x的关于均值的某一假设是否成立,其中sigma为已知均方差,alpha为显著性水平,究竟检验什么假设取决于tail的取值:
tail=0,检验假设“x的均值等于m”
tail=1,检验假设“x的均值大于m”(左侧)
tail=-1,检验假设“x的均值小于m”(右侧)
tail的缺省值为0,alpha的缺省值为0.05.
返回值h为一个布尔值,h=1表示可以拒绝假设,h=0表示接受假设,sig为假设成立的概率,ci为均值的1-alpha置信区间.
2)总体方差sigma2未知时,总体均值的检验使用t-检验
[h,sig,ci]=ttest(x,m,alpha,tail)
检验数据x的关于均值的某一假设是否成立,其中alpha为显著性水平,究竟检验什么假设取决于tail的取值:
tail=0,检验假设“x的均值等于m”
tail=1,检验假设“x的均值大于m”
tail=-1,检验假设“x的均值小于m”
tail的缺省值为0,alpha的缺省值为0.05.
返回值h为一个布尔值,h=1表示可以拒绝假设,h=0表示不可以拒绝假设,sig为假设成立的概率,ci为均值的1-alpha置信区间.
3)单正态方差的检验:
h=sctest(x,sigma2,alpha)
4)两总体均值的假设检验使用t-检验
[h,sig,ci]=ttest2(x,y,alpha,tail)
检验数据x,y的关于均值的某一假设是否成立,其中alpha为显著性水平,究竟检验什么假设取决于tail的取值:
tail=0,检验假设“x的均值等于y的均值”
tail=1,检验假设“x的均值大于y的均值”
tail=-1,检验假设“x的均值小于y的均值”
tail的缺省值为0,alpha的缺省值为0.05.
返回值h为一个布尔值,h=1表示可以拒绝假设,h=0表示不可以拒绝假设,sig为假设成立的概率,ci为与x与y均值差的的1-alpha置信区间.
注:
双正态其他两个检验matlab中没有函数,所以只能按照算法自行编程实现。
5)非参数检验:
总体分布的检验
主要函数youdu(p0,N),N为随机变量X的取值,即频数,p0为原假设的行向量.
注:
总体分布检验没有现成的程序可以完成,需要自行编程实现,但是可以借助主要函数youdu(p0,N)来编程,这样较为方便。
例如:
投色子120次统计如下频数
点数
123456
频数
212819241612
问色子是否均匀?
(
)
程序:
alpha=0.05
p0=[1/61/61/61/61/61/6];
N=[21,28,19,24,16,12];
h=youdu(p0,N,alpha)
注:
h=0表示接受假设,h=1拒绝原假设。
Matlab工具箱提供了两个对总体分布进行检验的命令:
(1)h=normplot(x)
此命令显示数据矩阵x的正态概率图.如果数据来自于正态分布,则图形显示出直线性形态.而其它概率分布函数显示出曲线形态.
(2)h=weibplot(x)
此命令显示数据矩阵x的Weibull概率图.如果数据来自于Weibull分布,则图形将显示出直线性形态.而其它概率分布函数将显示出曲线形态.
注:
其它分布需要编程实现,matlab中没有命令。
例1某校60名学生的一次考试成绩如下:
937583939185848277767795948991888683968179977875676968848381756685709484838280787473767086769089716686738094797877635355
1)计算均值、标准差、极差、偏度、峰度,画出直方图;
2)检验分布的正态性;
3)若检验符合正态分布,估计正态分布的参数.
例2、在某盒中存放有白球和黑球,现作下面这样的实验:
用返回抽取方式从此盒中摸球,直到摸取的是白球为止,记录下摸取的次数,重复如此的实验100次,结果见表:
摸取次数
1234
频数
43311565
找到一定方法推断盒子中的白球与黑球个数是否一样多?
程序chengxu9
二、一元线性回归分析的Matlab实现
一元线性回归分析在matlab中用regress命令实现,用法是
b=regress(y,x)
[b,bint,r,rint,s]=regress(y,x,alpha);
输入y(因变量,列向量),X(1与自变量组成的矩阵),alpha是显著性水平。
输出b系数向量,bint为系数置信区间,r为残差向量,rint为残差置信区间(
为随机误差,也称残差),s包含四个统计量(以前版本只有前三个):
第一个是样本决定系数
,第2个是
值,第3个是
分布大于
的概率p,
时拒绝假设,认为回归方程有效,第4个参数是
---剩余方差。
注:
一元线性回归方程检验,可建立F统计量,
若
,则拒绝假设,方程显著;否则接受假设,方程不显著。
rcoplot(r,rint)残差分析函数
例:
1、输入数据:
x=[143145146147149150153154155156157158159160162164]';
X=[ones(16,1)x];
Y=[8885889192939395969897969899100102]';
2、回归分析及检验:
[b,bint,r,rint,stats]=regress(Y,X);b,bint,stats
得结果:
b=
-16.0730
0.7194
bint=
-33.70711.5612
0.60470.8340
stats=0.9282180.95310.00001.7437
即
;
的置信区间为[-33.7017,1.5612],
的置信区间为[0.6047,0.834];r2=0.9282,F=180.9531,p=0.0000,p<0.05,可知回归模型y=-16.073+0.7194x成立.
例:
在研究我国人均消费水平的问题中,把全国人均消费金额记作y(元),把人均国民收入记为x(元)。
我们收集到1981-1993年13年的样本数据,i=1,2,……,13,数据见表:
年份
人均国民收入x(元)
人均消费金额y(元)
年份
人均国民收入x(元)
人均消费金额y(元)
1981
1982
1983
1984
1985
1986
1987
393.8
419.14
460.86
544.11
668.29
737.73
859.97
249
267
289
329
406
451
513
1988
1989
1990
1991
1992
1993
1068.8
1169.2
1250.7
1429.5
1725.9
2099.5
643
699
713
803
947
1148
(1)画散点图;
(2)判断x与y之间是否大致成线性关系;
(3)估计出回归方程;
(4)求出随机误差
的方差
的估计值;
(5)给出
、
的95%的区间估计;
(6)求出x与y的决定系数;
(7)对方程进行回归分析;
(8)对回归方程作残差分析;
(9)预测国民收入为2300元时人均消费金额,并给出预测区间;
解:
chengxu3
三、多元线性回归
多元线性回归分析在matlab中也主要用regress命令实现,与一元的区别在于自变量数据
[b,bint,r,rint,s]=regress(y,x,alpha);其中X是矩阵,而不是向量。
X=
利用regress命令主要是估计参数
,求出残差,以及方程显著性的检验,但是要进行具体回归分析还要用到前面所涉及的知识点计算。
下面举例说明多元分析的全过程:
例:
设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为1000、价格为6时的商品需求量.
需求量
100
75
80
70
50
65
90
100
110
60
收入
1000
600
1200
500
300
400
1300
1100
1300
300
价格
5
7
6
6
8
7
5
4
3
9
解:
首先用一次函数分析:
y=[10075807050659010011060];
x1=[10006001200500300400130011001300300];
x2=[5766875439];
subplot(1,2,1),plot(x1,y,'g*')
subplot(1,2,2),plot(x2,y,'ro')
pause
X=[ones(10,1)x1'x2'];
[b,bint,r,rint,stats]=regress(y',X);
b=b',bint=bint',r,rint=rint',stats
见结果:
b=111.69180.0143-7.1882
bint=56.0503-0.0120-13.2306
167.33340.0406-1.1458
r=9.95235.0477-5.7188-5.7109-8.4750-2.0929-4.33681.33441.28678.7133
rint=
-4.2550-11.3965-17.7850-19.9338-22.0427-18.1130
24.159721.49186.34748.51215.092713.9271
-18.5571-14.5248-12.6974-2.5272
9.883617.193615.270919.9537
stats=0.894429.65330.000452.0311
明显不太理想,所以选择二次函数
将
化为多元线性回归:
X=[ones(10,1)x1'x2'(x1.^2)'(x2.^2)'];
[b,bint,r,rint,stats]=regress(y’,X);
b,stats
结果为:
b=110.53130.1464-26.5709-0.00011.8475
bint=57.26020.0408-43.2247-0.00010.3745
163.80240.2521-9.9171-0.00003.3205
r=5.2724-0.7162-4.5158-1.9390-3.33153.45663.4843-3.4452-0.09761.8320
rint=
-2.8991-10.7426-11.2788-11.3778-12.3214-5.9980
13.44389.31032.24727.49975.658312.9111
-3.5514-13.0340-6.3831-3.3221
10.52006.14376.18786.9862
stats=0.970240.66560.000520.5771
预测:
y=b*[1,1000,6,1000^2,36]'结果:
y=88.4791
例:
财政收入预测问题:
财政收入与国民收入、工业总产值、农业总产值、总人口、就业人口、固定资产投资等因素有关。
下表列出了1952-1981年的原始数据,试构造预测模型。
年份
国民收入(亿元)
工业总产值(亿元)
农业总产值(亿元)
总人口(万人)
就业人口(万人)
固定资产投资(亿元)
财政收入(亿元)
1952
598
349
461
57482
20729
44
184
1953
586
455
475
58796
21364
89
216
1954
707
520
491
60266
21832
97
248
1955
737
558
529
61465
22328
98
254
1956
825
715
556
62828
23018
150
268
1957
837
798
575
64653
23711
139
286
1958
1028
1235
598
65994
26600
256
357
1959
1114
1681
509
67207
26173
338
444
1960
1079
1870
444
66207
25880
380
506
1961
757
1156
434
65859
25590
138
271
1962
677
964
461
67295
25110
66
230
1963
779
1046
514
69172
26640
85
266
1964
943
1250
584
70499
27736
129
323
1965
1152
1581
632
72538
28670
175
393
1966
1322
1911
687
74542
29805
212
466
1967
1249
1647
697
76368
30814
156
352
1968
1187
1565
680
78534
31915
127
303
1969
1372
2101
688
80671
33225
207
447
1970
1638
2747
767
82992
34432
312
564
1971
1780
3156
790
85229
35620
355
638
1972
1833
3365
789
87177
35854
354
658
1973
1978
3684
855
89211
36652
374
691
1974
1993
3696
891
90859
37369
393
655
1975
2121
4254
932
92421
38168
462
692
1976
2052
4309
955
93717
38834
443
657
1977
2189
4925
971
94974
39377
454
723
1978
2475
5590
1058
96259
39856
550
922
1979
2702
6065
1150
97542
40581
564
890
1980
2791
6592
1194
98705
41896
568
826
1981
2927
6862
1273
100072
73280
496
810
三、逐步回归分析
当多元线性回归方程的自变量个数不是很多时,我们有多种方法来找到‘最优’的回归方程,比如:
(1)从拟合的角度考虑主要的两个准则:
1.自由度调整复相关系数达到最大;2.平均残差和达到最小;
(2)从极大似然估计法考虑的准则:
赤池信息量AIC达到最小;(3)从预测角度考虑的准则:
统计量
达到最小等等方法。
但是自变量
的变量子集共有
,当p很大时,以上方法的计算量是非常大的,为了解决这个问题人们提出了逐步回归的方法,帮助找到最优方程。
具体过程方法前面理论部分已经详细阐述,借助于数学软件可以简化很多运算,下面用matlab加以说明。
逐步回归的命令是:
stepwise(x,y,[inmodel],penter,premove)
x自变量数据,n*m阶矩阵;y因变量数据,n*1阶矩阵;
inmodel:
矩阵的列数的指标,给出初始模型中包括的子集(缺省时设定为全部自变量)
penter:
引入显著性水平,默认为0.05
premove:
剔除显著性水平,默认为0.1,剔除比引入要求宽松一些。
运行stepwi