北京市中關(guān)村中學(xué) 張譯方
由自己出生時(shí)體重與父親出生時(shí)體重相近而產(chǎn)生好奇,經(jīng)向同學(xué)隨機(jī)提問(wèn),作出猜想——父代新生兒體重與子代新生兒體重呈正相關(guān)關(guān)系。
1.回歸分析是數(shù)據(jù)分析中常用的一種方法,它可以提供變量間的回歸方程,并判斷所建立回歸方程的有效性。在方程有效性的前提下,可以用方程做預(yù)測(cè)和控制,并了解預(yù)測(cè)和控制的精度。多元回歸分析預(yù)測(cè)法,是指通過(guò)對(duì)兩個(gè)或兩個(gè)以上的自變量與一個(gè)因變量的相關(guān)分析,建立預(yù)測(cè)模型進(jìn)行預(yù)測(cè)的方法。當(dāng)自變量與因變量呈線(xiàn)性關(guān)系時(shí),稱(chēng)為多元線(xiàn)性回歸分析。
2.Matlab是一種以矩陣為基本單位的數(shù)據(jù)分析軟件,它將數(shù)值分析、矩陣計(jì)算、科學(xué)數(shù)據(jù)可視化以及非線(xiàn)性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能集成在一個(gè)易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計(jì)以及必須進(jìn)行有效數(shù)值計(jì)算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計(jì)語(yǔ)言(如C、Fortran)的編輯模式,代表了當(dāng)今國(guó)際科學(xué)計(jì)算軟件的先進(jìn)水平。
3.多項(xiàng)式擬合:a=polyfit(xdata,ydata,n),其中,n表示多項(xiàng)式的最高階數(shù),xdata,ydata為將要擬合的數(shù)據(jù),它是用數(shù)組的方式輸入。輸出參數(shù)a為擬合多項(xiàng)式的系數(shù),相對(duì)應(yīng)的次數(shù)為由高到低。多項(xiàng)式在x處的值y可用y=polyval(a,x)計(jì)算。
4.最小二乘法(又稱(chēng)最小平方法)是一種數(shù)學(xué)優(yōu)化技術(shù)。它通過(guò)最小化誤差的平方和尋找數(shù)據(jù)的最佳函數(shù)匹配。利用最小二乘法可以簡(jiǎn)便地求得未知的數(shù)據(jù),并使得這些求得的數(shù)據(jù)與實(shí)際數(shù)據(jù)之間誤差的平方和為最小。最小二乘法可用于曲線(xiàn)擬合。
最近,我們就父代新生兒體重與子代新生兒體重這一問(wèn)題進(jìn)行了抽樣調(diào)查。通過(guò)詢(xún)問(wèn)我的老師、同學(xué)及父母同事的有關(guān)情況,并加以篩選(如:當(dāng)一家庭有兩個(gè)或兩個(gè)以上子代新生兒時(shí),我們只取第一個(gè)新生兒的體重),最終得到36組數(shù)據(jù)。我們把程序放在附錄,這里只做輸出結(jié)果的說(shuō)明和分析。
數(shù)據(jù)的散點(diǎn)分布如下:
在此基礎(chǔ)上,我們利用一元回歸分析的方法,得到了父代新生兒體重與子代新生兒體重的線(xiàn)性回歸方程:y= 7.3356-0.0630x。
經(jīng)過(guò)殘差分析,我們?nèi)サ魯?shù)據(jù)中的2組極端值,隨后用最小二乘法進(jìn)行高次擬合。首先進(jìn)行線(xiàn)性擬合,輸出反映了函數(shù)整體下降的趨勢(shì),但具體細(xì)節(jié)部分并沒(méi)有反映出來(lái)。然后對(duì)數(shù)據(jù)進(jìn)行二次擬合,對(duì)比兩次的擬合圖,會(huì)發(fā)現(xiàn)二次擬合出來(lái)的結(jié)果比一次擬合結(jié)果更加準(zhǔn)確,但仍未反映出數(shù)據(jù)的真實(shí)情況。最后對(duì)曲線(xiàn)進(jìn)行高次擬合,輸出的圖像是進(jìn)行5次擬合的結(jié)果,基本上反映出了數(shù)據(jù)的真實(shí)變化情況。需要注意的是不可以對(duì)數(shù)據(jù)進(jìn)行太高次數(shù)的擬合,次數(shù)太高就會(huì)出現(xiàn)警告。
經(jīng)研究表明,父代新生兒體重與子代新生兒體重存在一定相關(guān)性。
本次研究模型并不精確,子代新生兒體重與父代新生兒體重相關(guān)的同時(shí),不排除空氣環(huán)境、醫(yī)生建議、飲食結(jié)構(gòu)、生活條件等因素也會(huì)對(duì)子代新生兒體重產(chǎn)生某種影響。
附錄:
數(shù)據(jù)預(yù)處理:
我們猜想兩組數(shù)據(jù)線(xiàn)性相關(guān),下面借助matlab求相關(guān)系數(shù)。
Matlab程序?yàn)椋海ㄝ斎肴缦旅睿?/p>
>> x=[9.1,6.8,9.2,7.3,6.8,7.2,8.6,6.0,9.1,6.0,4.9,7.0,6.5,8,7,6.5,5.8,6.1,7,5.5,5,6,8,7,6.6,6.6,6.8,7.8,6.5,6.5,7.8,6.8,5.3,6.5,6,6.2];
y=[7.8,8.0,6.8,7.6,7.0,6.5,6.6,7.4,5.9,7.5,6.6,7.0,3,6.9,6.3,7.3,5.8,5.1,6.5,6.9,7.8,6.6,6.9,6.6,6.5,8.8,5.4,7.5,7.8,9.2,6.2,7.4,7.9,7.5,7.2,6.8];
X=[ones(length(y),1),x’];
Y=y’;
[b,bint,r,rint,stats]=regress(Y,X);
b,bint,stats
輸出結(jié)果:
b=
7.3356
-0.0630
bint =
4.9389 9.7323
-0.4098 0.2838
stats =
0.0040 0.1362 0.7144 1.1864
因此我們可得:孩子新生兒體重和父親新生兒體重的線(xiàn)性相關(guān)的公式為:y= 7.3356-0.0630x。
>>scatter(x,y)
我們得到散點(diǎn)圖:
(殘差分析)
接著輸入 rcoplot(r,rint)
結(jié)果顯示
>> [R,P]=corrcoef(x,y)
我們得到協(xié)方差矩陣
R =
1.0000 -0.0642
-0.0642 1.0000
有前面的殘差分析,我們?nèi)サ魞蓚€(gè)極端值,再進(jìn)行相關(guān)性分析和系數(shù)估計(jì),matlab程序如下:
>> x=[9.1,6.8,9.2,7.3,6.8,7.2,8.6,6.0,9.1,6.0,4.9,7.0,8,7,6.5,5.8,6.1,7,5.5,5,6,8,7,6.6,6.6,6.8,7.8,6.5,7.8,6.8,5.3,6.5,6,6.2];
y=[7.8,8.02,6.8,7.6,7.0,6.5,6.6,7.4,5.88,7.5,6.6,7.0,6.9,6.3,7.3,5.8,5.1,6.5,6.9,7.8,6.6,6.9,6.6,6.5,8.8,5.4,7.5,7.8,6.2,7.4,7.9,7.5,7.2,6.8];
X=[ones(length(y),1),x’];
Y=y’;
[b,bint,r,rint,stats]=regress(Y,X);
b,bint,stats
b =
7.4889
-0.0783
bint =
5.7460 9.2319
-0.3297 0.1731
stats =
0.0124 0.4023 0.5304 0.6169
>> [R,P]=corrcoef(x,y)
R =
1.0000 -0.1114
-0.1114 1.0000
P =
1.0000 0.5304
0.5304 1.0000
我們看到,兩組數(shù)據(jù)的相關(guān)性明顯增強(qiáng),我們可以認(rèn)為,新生兒體重和父親的出生體重有線(xiàn)性關(guān)系:y=7.4889 -0.0783x。
求解最小二乘曲線(xiàn)擬合:
我們首先進(jìn)行線(xiàn)性擬合:
>> x=[9.1,6.8,9.2,7.3,6.8,7.2,8.6,6.0,9.1,6.0,4.9,7.0,8,7,6.5,5.8,6.1,7,5.5,5,6,8,7,6.6,6.6,6.8,7.8,6.5,7.8,6.8,5.3,6.5,6,6.2];
y=[7.8,8.02,6.8,7.6,7.0,6.5,6.6,7.4,5.88,7.5,6.6,7.0,6.9,6.3,7.3,5.8,5.1,6.5,6.9,7.8,6.6,6.9,6.6,6.5,8.8,5.4,7.5,7.8,6.2,7.4,7.9,7.5,7.2,6.8];
a=polyfit(x,y,1);
x1=4:0.1:10;
y1=a(1)*x1+a(2);
plot(x,y,’*’,x1,y1,’r’)
反映了函數(shù)整體下降的趨勢(shì),但具體細(xì)節(jié)部分并沒(méi)有反映出來(lái)。下面對(duì)曲線(xiàn)進(jìn)行二次擬合,其程序代碼如下:
>> b=polyfit(x,y,2);
x2=4∶0.1∶10;
y2=b(1)*x2.^2+b(2)*x2+b(3)
plot(x,y,’*’,x2,y2,’r’)
得到結(jié)果:
y2 =
1至15列
7.2487 7.2356 7.2226 7.2099 7.1973 7.1848 7.1726 7.1605 7.1486 7.1369 7.1253 7.1139 7.1027 7.0916 7.0808
16 至 30 列
7.0701 7.0595 7.0492 7.0390 7.0290 7.0191 7.0095 7.0000 6.9906 6.9815 6.9725 6.9637 6.9551 6.9466 6.9383
31 至 45 列
6.9302 6.9222 6.9145 6.9069 6.8994 6.8922 6.8851 6.8782 6.8714 6.8649 6.8585 6.8523 6.8462 6.8403 6.8346
46 至 60 列
6.8291 6.8237 6.8185 6.8135 6.8087 6.8040 6.7995 6.7952 6.7910 6.7871 6.7832 6.7796 6.7761 6.7729 6.7697
61 列
6.7668
對(duì)比兩次的擬合圖會(huì)發(fā)現(xiàn),二次擬合出來(lái)的結(jié)果比一次擬合結(jié)果更加準(zhǔn)確,但仍未反映出數(shù)據(jù)的真實(shí)情況。再對(duì)曲線(xiàn)進(jìn)行高次擬合:
>> c=polyfit(x,y,5);
x3=4:0.1:10;
y3=c(1)*x3.^5+c(2)*x3.^4+c(3)*x3.^3+c(4)*x3.^2+c(5)*x3+c(6);
plot(x,y,’*’,x3,y3,’-r’)
這個(gè)圖像是對(duì)曲線(xiàn)進(jìn)行5次擬合的結(jié)果,基本上反映出了數(shù)據(jù)的真實(shí)變化情況。需要注意的是,不可以對(duì)數(shù)據(jù)進(jìn)行太高次數(shù)的擬合,次數(shù)太高就會(huì)出現(xiàn)警告。