1 线性回归1.1 原理分析要研究最大积雪深度x与灌溉面积y之间的关系,测试得到近10年的数据如下表:使用线性回归的方法可以估计x与y之间的线性关系。
线性回归方程式:对应的估计方程式为线性回归完成的任务是,依据观测数据集(x1,y1),(x2,y2),...,(xn,yn)使用线性拟合估计回归方程中的参数a和b。
a,b都为估计结果,原方程中的真实值一般用α和β表示。
为什么要做这种拟合呢?答案是:为了预测。
比如根据前期的股票数据拟合得到股票的变化趋势(当然股票的变化可就不是这么简单的线性关系了)。
线性回归的拟合过程使用最小二乘法,最小二乘法的原理是:选择a,b的值,使得残差的平方和最小。
为什么是平方和最小,不是绝对值的和?答案是,绝对值也可以,但是,绝对值进行代数运算没有平方那样的方便,4次方又显得太复杂,数学中这种“转化化归”的思路表现得是那么的优美!残差平方和Q,求最小,方法有很多。
代数方法是求导,还有一些运筹学优化的方法(梯度下降、牛顿法),这里只需要使用求导就OK了,为表示方便,引入一些符号,最终估计参数a与b的结果是:自此,针对前面的例子,只要将观测数据带入上面表达式即可计算得到拟合之后的a和b。
不妨试一试?从线性函数的角度,b表示的拟合直线的斜率,不考虑数学的严谨性,从应用的角度,结果的b可以看成是离散点的斜率,表示变化趋势,b的绝对值越大,表示数据的变化越快。
线性回归的估计方法存在误差,误差的大小通过Q衡量。
1.2 误差分析考虑获取观测数据的实验中存在其它的影响因素,将这些因素全部考虑到e~N(0,δ^2)中,回归方程重写为y = a + bx + e由此计算估计量a与b的方差结果为,a与b的方差不仅与δ和x的波动大小有关,而且还与观察数据的个数有关。
在设计观测实验时,x的取值越分散,估计ab的误差就越小,数据量越大,估计量b的效果越好。
这也许能为设计实验搜集数据提供某些指导。
1.3 拟合优度检验及统计量拟合优度检验模型对样本观测值的拟合程度,其方法是构造一个可以表征拟合程度的指标,称为统计量,统计量是样本的函数。
从检验对象中计算出该统计量的数值,然后与某一标准进行比较,得出检验结论。
这是又会问了,最小二乘法不是保证了模型最好的拟合样本观测值了吗?为什么还要检验拟合程度?最小二乘法保证的是同一个样本集使用最小二乘法拟合程度最好,而拟合优度检验结果表示的是多个不同样本集各自进行拟合后对拟合效果的比较。
比如,下面的直线方程都是使用最小二乘法拟合的结果,但二者对样本观测值的拟合程度显然不同。
为构造统计量,先定义三个表达式:通过推倒可以发现:表示观测值y1,y2,y3,...yn与它们的平均值的离差平方和,越大,则观测值的波动越大。
因此称总离差平方和。
表示回归直线上点的纵坐标^y1,^y2,...,^yn与与观测值均值的离差平方和。
所以称为回归平方和。
反映出回归直线因素对的影响。
是最小二乘法中残差平方和Q的最小值,它是实际观测值yi与回归直线上的点(xi,^yi)的纵坐标^yi的离差平方和。
是扣除线性影响外的剩余平方和,因此称为残差平方和。
显然,一个拟合得比较好的模型,与应该比较接近,而应该尽可能的小。
因此,可以通过构造某种与的表达式作为拟合优度检验中的统计量。
构造统计量——相关系数因此,构造相关系数不同的r值有不同的线性相关表示,如下图结论:当|r|->0时,表示x与y之间的线性关系不明显,不适合使用线性回归建模。
反之,当|r|越接近1时,表示x与y之间的线性关系越密切。
∙构造统计量——FF值越小表示线性关系越密切,反之线性关系越弱。
∙构造统计量——t|t|越大,x与y之间的线性关系越密切;反之,越小,x与y之间的线性关系越微弱。
不管是相关系数,还是F,或者t,都能用于描述x与y之间的线性相关程度。
并且可以通过验证,这三种统计量用于下面的显著性检验是完全一致的。
1.4 显著性检验显著性检验,以开头“最大积雪深度x与灌溉面积y之间的关系”的线性关系是否显著为例,使用上面构造的统计量进行显著性检验的过程如下:在当中,计算线性回归及显著性检验使用到如下的公式,下面的公式不用记住,使用时查询即可。
相关系数的查表参见相关系数显著性检验表1.5 置信区间回归系数α以1-α为置信度的置信区间为回归系数β以1-α为置信度的置信区间为其中S都为,1.6 使用Matlab做回归分析使用最小二乘法做多元线性回归分析的函数为:[b,bint,r,rint,stats] = regress(y,X,alpha);% alpha 为显著性水平% b bint 为回归系数估计值向量及其置信区间% r rint 为残差向量及其置信区间,可用rcoplot(r,rint)绘图下面是一个使用Matlab做线性回归分析的实例:EG:x 0.10 0.11 0.12 0.13 0.14 0.15 0.16 0.17 0.18y 42.0 41.5 45.0 45.5 45.0 47.5 49.0 55.0 50.0 Matlab代码如下:clear allclfclose all% 绘制(X,Y)散点图figure,x=0.1:0.01:0.18;y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0];plot(x,y,'+')% 线性回归分析x1=x';y1=y';x2=[ones(9,1),x1];[b,bint,r,rint,stats]=regress(y1,x2);% 绘制拟合直线y = b(2)*x + b(1);hold on,plot(x,y,'r');% 绘制残差图figure,rcoplot(r,rint);结果为拟合直线图和残差图如下:在Matlab中还可以使用polyfit函数非常方便的对数据进行拟合,polyfit除了能进行线性拟合,还可以进行非线性的拟合。
使用polyfit拟合方法如下:% 绘制(X,Y)散点图figure,x=0.1:0.01:0.18;y=[42,41.5,45.0,45.5,45.0,47.5,49.0,55.0,50.0];plot(x,y,'+');% 绘制拟合直线hold on,p = polyfit(x',y',1);y = p(1).*x + p(2);plot(x,y2,'r');拟合结果与上面的一样。
1.7 回归分析的实际操作步骤回归分析的主要内容是通过试验或观测数据,寻找相关变量之间的统计规律性,再利用自变量的值有效预测因变量的可能取值。
其实际操作的步骤是:1.设定回归方程2.根据误差分析,考虑搜集数据对回归方程参数的影响,有目的的搜集数据3.确定回归系数4.进行相关性检验5.预测2 方差分析2.1 引入如上图,对A1~A4共4种不同灯丝的灯泡进行抽样检测灯泡寿命,根据测试数据,现在要问:灯泡寿命是否与灯丝材料的不同有关。
问题特点有:∙1项指标(因变量):寿命∙影响指标的因素(因子):灯丝∙因素存在多个不同状态(水平),要求分析因素的不同状态是否对指标有显著影响这就是方差分析问题:用数理统计分析试验结果、鉴别各因素对结果影响程度的方法称为方差分析(Analysis Of Variance),记作ANOVA。
2.2 单因素方差分析其它因素不变,只考虑一个因素A,因素存在多个水平,在每个水平上做若干次实验,从实验结果推断是否该因素对指标有显著影响?这就是单因素的方差分析,上面的例子就是单因素方差分析的例子。
∙前提假设设因素A的r个水平为A1,A1,...,Ar,每个水平下的指标服从正态分布N(u1,δ2),N(u2,δ2),...,N(ur,δ2)。
∙模型建立实验数据的格式:因子对指标是否有影响取决于指标的正态分布是否一致,如果有影响,则正态分布应该存在差异,而正态分布由均值和方差决定,假设中方差相同,因此各个水平下的正态分布均值直接决定因素是否对指标有影响。
所以,问题可以转化为假设检验,设H0: u1=u2=u3=...=ur检验结果如果拒绝原假设,则认为因素A对指标有显著影响,否则认为无显著影响。
设u = (1/r)\sum_1^a{ui}αi = ui - u则,H0假设改写成H0: α1=α2=α3=...=αr=0构造统计量(摘自《数学建模Matlab大全》)单因素方差分析表过对上面模型中相关参数进行计算,为计算分析方便,将结果填入下表中:表中的Pr反映的就是>F值的概率,F值通过因素A均方除以误差均方获得。
因此,有1.如果Pr大于α,则接受H0,因素对指标无显著影响2.如果Pr小于α,则拒绝H0,因素对指标有显著影响Matlab的输出结果即为上面的方差分析表,因此,用matlab很容易进行方差分析。
2.3 用Matlab进行单因素方差分析能否认为这三所小学五年级男学生的平均身高相同?取显著水平α=0.05.假设H0: 这三所小学五年级男学生的平均身高相同。
data = [...128.1134.1131.1138.9140.8127.4; ...150.3147.9136.8126.0150.7155.8; ...140.6143.1144.5143.7148.5146.4...];data = data';P=anova1(data); % 方差分析函数anova1Matlab程序的运行结果为:∵Pr=0.0275 < α∴拒绝H0,即不能认为这三所小学五年级男学生的平均身高相同。
实验数据也可以是非平衡数据,如上,假设小学2的测试数据少一组:此时,anova1调用格式有所改变,p=anova1(x,group)% x 为向量,从第 1 组到第r组数据依次排列;group 为与x 同长度的向量,标志 x 中数% 据的组别(在与 x 第i组数据相对应的位置处输入整数 i=1,2,..r)此时的Matlab代码为:x = [...128.1134.1131.1138.9140.8127.4; ...150.3147.9136.8126.0150.70; ...140.6143.1144.5143.7148.5146.4...];x = [x(1,:),x(2,1:5),x(3,:)];g = [ones(1,6),2*ones(1,5),3*ones(1,6)];P=anova1(x, g);结果为因为仅改变了一个实验数据,其结果和前面的一致。
2.4 双因素方差分析关于双因素方差分析的模型请参考[3],这里从实际角度出发: 考虑如何测试实验数据按下表测试数据,每组t各数据,共r x s组。