您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 药学 > Matlab与统计分析
Matlab与统计分析一、回归分析1、多元线性回归1.1命令regress(),实现多元线性回归,调用格式为[b,bint,r,rint,stats]=regress(y,x,alpha)其中因变量数据向量Y和自变量数据矩阵x按以下排列方式输人nnknnkkyyyyxxxxxxxxxx21212222111211,111对一元线性回归,取k=1即可。alpha为显著性水平(缺省时设定为0.05),输出向量b,bint为回归系数估计值和它们的置信区间,r,rint为残差及其置信区间,stats是用于检验回归模型的统计量,有三个数值,第一个是2R,其中R是相关系数,第二个是F统计量值,第三个是与统计量F对应的概率P,当P时拒绝0H,回归模型成立.注:1、两组数据的相关系数在概率论的标准定义是:R=E{(x-E{x})*(y-E{y})}/(sqrt({(x-E{x})^2)*sqrt({(y-E{y})^2))E{}求取期望值。也就是两组数据协方差与两者标准差乘积的商。如果|R|=1说明两者相关,R=0说明两者不相关.1、F是方差分析中的一个指标,一般方差分析是比较组间差异的。F值越大,P值越小,表示结果越可靠.1.2命令rcoplot(r,rint),画出残差及其置信区间.1.3实例1已知某胡八年来湖水中COD浓度实测值(v)与影响因素湖区工业产值(x1)、总人口数(x2)、捕鱼量(x3)、降水量(x4)资料,建立污染物Y的水质分析模型.Step1输入数据x1=[1.376,1.375,1.387,1.401,1.412,1.428,1.445,1.477];x2=[0.450,0.475,0.485,0.500,0.535,0.545,0.550,0.575];x3=[2.170,2.554,2.676,2.713,2.823,3.088,3.122,3.262];x4=[0.8922,1.1610,0.5346,0.9589,1.0239,1.0499,1.1065,1.1387];Y=[5.19,5.30,5.60,5.82,6.00,6.06,6.45,6.95];Step2保存数据(以数据文件.mat形式保存,便于以后调用)savedatax1x2x3x4yloaddata%取出数据Step3执行回归命令x=[ones(8,1),x1,x2,x3,x4];[b,bint,r,rint,stats]=regress(y,x)得到结果:b=(-16.5283,15.7206,2.0327.-0.2106,-0.1991)'stats=(0.9908,80.9530,0.0022)'即Y=-16.5283+15.7206x1+2.0327x2-0.2106xl+0.1991x42R=0.9908,F=80.9530,P=0.00222、非线性回归2.1命令nlinfit()实现非线性回归,调用格式为[beta,r,J]=nlinfit(x,y,‘model’,beta0)其中,输入数据x,y分别为n×m矩阵和n维列向量,对一元非线性回归,x为n维列向量;model是事先用m-文件定义的非线性函数,beta0是回归系数的初值.beta是估计出的回归系数,r是残差,J是Jacobian矩阵,它们是估计预测误差需要的数据.2.2命令nlpredci()预测和预测误差的估计,调用格式为[y,delta]=npredci('model',x,beta,r,j)2.3实例2对实例1中COD浓度实测值(Y),建立时序预测模型,这里选用logistic模型,即ktbeay1Step1建立非线性函数对所要拟合的非线性模型建立m-文件model.m如下functionyhat=model(beta,t)yhat=beta(1)./(1+beta(2)*exp(-beta(3)*t))Step2输入数据t=1:8loaddatay(在data.mat中取出数据y)beta0=[50,10,1]’Step3求回归系数[beta,r,J]=nlinfit(t,Y,‘model’,beta0)得结果:beta=(56.1157,10.4006,0.0445)’即0445.04006.1011157.56eyStep4预测及作图[YY,delta]=nlpredci(‘model’,x',beta,r,J);plot(x,y,'k+',x,YY,'r')3、逐步回归逐步回归的命令是stepwise,它提供了一个交互式画面.通过此工具可自由地选择变量,进行统计分析.调用格式为:stepwise(x,y,inmodel,alpha)其中x是自变量数据,是mn阶矩阵,y是因变量数据,1n阶矩阵,inmodel是矩阵的列数指标(给出初始模型中包括的子集(缺省时设定为全部自变量),alpha是显著性水平(缺省时为0.5).运行stepwise命令时产生三个图形窗口:StepwisePlot,StepwiseTable,StepwiseHistory.在StepwisePlot窗口,显示出各项的回归系数及其置信区间.StepwiseTable窗口中列出了一个统计表,包括回归系数及其置信区间,以及模型的统计量剩余标准差(RMSE)、相关系数(R-square)、F值、与F对应的概率P.二、主成分分析这里给出江苏省生态城市主成份分析实例。我们对江苏省十个城市的生态环境状况进行了调查,得到生态环境指标的指数值,见表1。现对生态环境水平进行分析和评价。我们利用Matlab6.5中的princomp命令实现。具体程序如下x=[0.78830.73910.81110.65870.65430.82590.84860.68340.84950.78460.76330.72870.76290.85520.75640.74550.78000.94900.89180.89540.47450.51260.88100.89030.82880.78500.80320.88620.39870.39700.82460.76030.68880.89770.79260.78560.65090.89020.67990.98770.87910.87360.81830.94460.92020.92630.91850.95050.86200.88730.95380.92570.92850.94340.91540.88710.93570.87600.95790.97410.87850.85420.85370.90270.87290.84850.84730.90440.88660.90350.63050.61870.63130.74150.63980.61420.57340.89800.61860.73820.89280.78310.56080.84190.84640.76160.82340.63840.96040.8514]x=x';stdr=std(x);%求各变量标准差[n,m]=size(x);sddata=x./stdr(ones(n,1),:);%标准化变换[p,princ,egenvalue]=princomp(sddata)%调用主成分分析程序p3=p(:,1:3)%输出前三个主成分系数sc=princ(:,1:3)%输出前三个主成分得分egenvalue%输出特征根per=100*egenvalue/sum(egenvalue)%输出各个主成分贡献率执行后得到所要结果,这里是前三个主成分、主成分得分、特征根。即egenvalue=[3.8811,2.6407,1.0597]',per=[43.12,29.34,11.971]'.这样,前三个主成分为Zl=-0.3677xl+0.3702x2+0.1364x3+0.4048x4+0.3355x5-0.1318x6+0.4236x7+0.4815x8-0.0643x9Z2=0.1442xl+0.2313x2-0.5299x3+0.1812x4-0.1601x5+0.5273x6+0.3116x7-0.0267x8+0.4589x9Z3=-0.3282xl-0.3535x2+0.0498x3+0.0582x4+0.5664x5-0.0270x6-0.0958x7-0.2804x8+0.5933x9第一主成分贡献率为43.12%,第二主成分贡献率为29.34%,第三主成分贡献率为11.97%,前三个主成分累计贡献率达84.24%。如果按80%以上的信息量选取新因子,则可以选取前三个新因子。第一新因子Z1包含的信息量最大为43.12%%,它的主要代表变量为x8(城市文明)、x7(生产效率)、x4(城市绿化),其权重系数分别为0.4815、0.4236、0.4048,反映了这三个变量与生态环境水平密切相关,第二新因子Z2包含的信息量次之为29.34%,它的主要代表变量为x3(地理结构)、x6(资源配置)、x9(可持续性),其权重系数分别为0.5299、0.5273、0.4589,第三新因子Z3包含的信息量为11.97%,代表总量为x9(可持续性)、x5(物质还原),权重系数分别为0.5933、0.5664。这些代表变量反映了各自对该新因子作用的大小,它们是生态环境系统中最重要的影响因素。根据前三个主成分得分,用其贡献率加权,即得十个城市各自的总得分F=43.12%princ(:,1)+29.34%princ(:,2)+11.97%princ(:,3)=[0.0970,-0.6069,-1.5170,1.1801,0.0640,-0.8178,-0.9562,1.1383,0.1107,1.3077]'根据总得分排序,结果见表1。三、聚类分析我们对苏州所辖张家港市2003年七条河流中主要污染因子(指标),即CODmn,BOD5,非离子氨,氨氮,挥发酚,石油类共6个变量(资料见表2,来源于张家港市2003年环境质量报告书),进行聚类分析。我们利用Matlab6.5中的cluster命令实现。具体程序如下x=[3.148.4123.7825.794.176.475.479.5726.4823.796.426.583.14.3121.222.485.346.545.679.5410.2320.874.26.86.819.0516.1824.565.25.456.217.0821.0531.566.158.214.878.9726.5434.565.588.07];[n,m]=size(x);stdr=sta(x);xx=x./stdr(ones(n,1),:);%标准化变换y=pdist(xx);%计算各样本间距离(这里为欧氏距离)z=linkage(y);%进行聚类(这里为最短距离法)h=dendrogram(z);%画聚类谱系图t=cluster(z,3)%将全部样本分为3类find(t==2);%找出属于第2类的样品编号执行后得到所要结果,聚类谱系图见图1.t=[3,1,3,1,1,2,2]'即全部样本分为3类,结果见表2.从图1可以看出:七条河流中,二干河、横套河、四千河属于一类,污染较重,主要是CODmn、BOD5超标多;华妙河、盐铁塘属于一类,污染一般,主要是氨氮、石油类超标;张家港河、东横河属于一类,污染较轻。总的来说,各河流都存在不同程度的污染,因此全市应对各河流严格监督管理,着力实施水污染防治工作,太湖流域水污染源应限期治理达标排放,巩固水污染防治工作成果,加大投入,新建或改、扩建废水治理工程,确保达标排放。
本文标题:Matlab与统计分析
链接地址:https://www.777doc.com/doc-2881903 .html