matlab交通事故预测,MATLAB交通事故预测.doc

MATLAB交通事故预测.doc

交通事故预测问题

问题

采用1982~1998年全国交通事故统计数据作为预测样本,1999~2002年的事故数据作为检验样本。

要用不同的方法得出不同的平面图线,找到最接近1999到2002数据的图形。

年份事故次数年份事故次数198210377719932423431983107758199425353719841188861995271843198520239419962876851986295136199730421719872981471998346129198827607119994128601989258030200061697419902502972001754919199126481720027731371992228278

二、模型的建立与求解

1.直接作图。

MATLAB 程序:

得到图形如下:

可以看出,这个图形几乎是没办法得到预测答案的。

2.带常数项的一次线性回归模型。

,(x为表示年份的编号,1982年时x=1)

由此,编写MATLAB程序如下:

得到b1=1.4794e+005,b2=1.0420e+004,则整个模型为:

代入x2=[18,19,20,21],即1999~2002年,得到事故数为:

fy2 =[335510 345930 356350 366770]

该预测结果与检验样本相比明显偏低。

模型图像为:

3.在2的基础上增加一个指数项。

,(x为表示年份的编号,1982年时x=1)

由此,编写MATLAB程序如下:

得到b1= 1.5116e+005,b2= 9.8618e+003,b3= 8.0385e-004,则整个模型为:

代入x2=[18,19,20,21],即1999~2002年,得到事故数为:

fy2 =[ 381500,482000,738400,1418400]

可以看到,新的模型拟合度有所提高,但2001年之后结果明显过高。

模型图像为:

4.综合以上结果重新修正的模型。

,(x为表示年份的编号,1982年时x=1)

由此,编写MATLAB程序如下:

得到b1= 7.9172e+004,b2= -1.8220e+004,b3= 3.3280e-004,b4=1.5484e+005,则整个模型为:

代入x2=[18,19,20,21],即1999~2002年,得到事故数为:

fy2 =[ 402500,486390,604610,767360]

与检验样本对比:

年份事故次数预测值实际值1999402500412860200048639061697420016046107549192002767360773137

可以看到,新的模型与检验样本有一定的拟合度。

模型图像为:

三、总结

一般的线性回归是建立在一些基础影响值之上的,在本例中,只有单一的结果数据。单纯根据结果进行线性回归具有较大的不准确性,通过不断地修正模型公式,得到了具有一定拟合度的结果,但如果进行D-W检验(本例中未进行),结果很可能无法让人满意。

综上所述,在解答此类问题时还需要换用不同于线性回归的其他方法。

clear,clc

years=[1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002]';

x1=[103777,107758,118886,202394,295136,298147,276071,258030,250297,264817,228278,242343,253537,271843,287685,304217,346129,412860,616974,754919,773137]';

plot(years,x1)

clear,clc %清屏

x1=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]';

y=[103777,107758,118886,202394,295136,298147,276071,258030,250297,264817,228278,242343,253537,271843,287685,304217,346129]';

x=[ones(17,1),x1]; %带常数项的X矩阵

[b,bint,r,rint,stats]=regress(y,x); %回归分析

fy=b(1)+b(2)*x1

plot(x1

你可能感兴趣的:(matlab交通事故预测)