古语有云:数模天下,学到就是王道。当我们已经可以使用最小二乘法进行拟合后,计算出残差后,我们可以用t检验进行观察残差是否服从正态分布。因此本博文以最小二乘法拟合为基础,然后寻找残差对残差进行检验。
例子:已知数据x,y如下,建立y与x之间的函数关系,并检验残差r是否服从均值为0的正态分布
>> x= [2 3 4 5 7 8 11 14 15 16 18 19];
>> y=[106.42 108.2 109.58 110 109.93 110.49 110.59 110.6 110.9 110.76 111 111.2];
实验步骤
学习过数学建模的同学应该了解,看出这种先画出散点图,然后猜测曲线的参数表达式,求出最佳参数,得到y与x之间的函数关系,计算出残差,检验残差是否服从均值为0的正态分布。
因此转化为matlab代码步骤如下:
- 数据输入
- 作散点图
- 线性最小二乘拟合
- 绘制拟合直线
- 计算出残差
- 用t检验来检验残差是否服从正态分布
- 正态分布拟合的检验
实验代码
>> x= [2 3 4 5 7 8 11 14 15 16 18 19];
>> y=[106.42 108.2 109.58 110 109.93 110.49 110.59 110.6 110.9 110.76 111 111.2];
>> plot(x,y,'*')
>> A=polyfit(x,y,1)
A =
0.1804 108.1387
>> plot(x,y,'*',x,polyval(A,x),'r')
>> cl = y-polyval(A,x);
>> [h1,sig,ci]=ttest(cl,0,0.05)
h1 =
0
sig =
1
ci =
-0.5307 0.5307
>> [h2,P,Jbstat,CV] = lillietest(cl,0.05)
h2 =
0
P =
0.1980
Jbstat =
0.1995
CV =
0.2420
>>
实验结果分析
>> [h1,sig,ci]=ttest(cl,0,0.05)
h1 =
0
sig =
1
ci =
-0.5307 0.5307
>> [h2,P,Jbstat,CV] = lillietest(cl,0.05)
h2 =
0
P =
0.1980
Jbstat =
0.1995
CV =
0.2420
A =
0.1804 108.1387
>>
大家看代码区里的A也就是文字上方,看见0.1804和108.1387,这是它的线性拟合结果,不管是t检验的ttest还是lillietest检验的结果,都接受残差cl服从均值为0的正态分布的假设。从h1=0和h2=0看出!