MATLAB在数据统计中的应用.docx

上传人:b****6 文档编号:5894824 上传时间:2023-01-02 格式:DOCX 页数:12 大小:19.49KB
下载 相关 举报
MATLAB在数据统计中的应用.docx_第1页
第1页 / 共12页
MATLAB在数据统计中的应用.docx_第2页
第2页 / 共12页
MATLAB在数据统计中的应用.docx_第3页
第3页 / 共12页
MATLAB在数据统计中的应用.docx_第4页
第4页 / 共12页
MATLAB在数据统计中的应用.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

MATLAB在数据统计中的应用.docx

《MATLAB在数据统计中的应用.docx》由会员分享,可在线阅读,更多相关《MATLAB在数据统计中的应用.docx(12页珍藏版)》请在冰豆网上搜索。

MATLAB在数据统计中的应用.docx

MATLAB在数据统计中的应用

MATLAB在数据统计中的应用

______________________________________________

目录:

1、一元线性回归的matlab实现(含检验)【更新】

2、一维数据滑动平均的matlab实现

3、多元线性回归的matlab实现

4、K阶自回归拟合及二阶自回归预测的Matlab实现

5、一次指数平滑预测的matlab实现

6、n次指数平滑及其预测

7、一维数据移动平滑的matlab实现

8、K阶自相关系数的matlab实现(含置信度检验)

 

说明:

1.正文中命令部分可以直接在Matlab中运行,作者(Yangfd09)在MATLABR2009a(7.8.0.347)中运行通过。

2.限于作者水平问题,文中难免疏漏和错误,如蒙赐教,不胜感激!

3.原创作品,仅供学习交流之用,会有不定期更新。

一元线性回归的matlab实现(含检验)【更新】

%求一元线性回归方程

%数据要求:

两行。

第一行存放x的观察值,第二行存放y的观察值

%数据文件名:

data_yyhg.mat;变量名:

test

%loaddata_yyhg.mat

N=length(test(1,:

));%注:

也可以用[M,N]=size(test)

%但不能用N=size(test(1,:

))

sx=0;sx2=0;sy=0;sy2=0;sxy=0;Lxy=0;Lyy=0;

fori=1:

N

sx=sx+test(1,i);

sx2=sx2+test(1,i)^2;

sy=sy+test(2,i);

sy2=sy2+test(2,i)^2;

sxy=sxy+test(1,i)*test(2,i);

Lxy=Lxy+(test(1,i)-sum(test(1,:

))/N)*(test(2,i)-sum(test(2,:

)/N));

Lyy=Lyy+(test(2,i)-sum(test(2,:

))/N)^2;

end

r=[N,sx;sx,sx2]\[sy;sxy];

a=r

(1);b=r

(2);

%F分布检验

U=b*Lxy;

Q=Lyy-U;

F=(N-2)*U/Q;

%拟合优度检验

x=test(1,:

);y=a+b*x;eq=sum(test(2,:

))/N;

ssd=0;ssr=0;

fori=1:

N

ssd=ssd+(test(2,i)-y(i))^2;

ssr=ssr+(y(i)-eq)^2;

end

sst=ssd+ssr;

RR=ssr/sst;

%命令窗口中显示回归方程

str=[blanks(5),'y=','(',num2str(a),')','+','(',num2str(b),')','*x'];

disp('')

disp('回归方程为:

')

disp(str)

disp('R^2拟合优度检验:

')

strin=['R^2=',num2str(RR)];

disp(strin)

disp('F-分布显著性检验:

')

stri=['F计算值:

',num2str(F),blanks(4),'自由度:

f1=1,f2=',num2str(N-2)];

disp(stri)

disp('注:

请对照F-分布表找到所需置信水平下的F临界值Fa,若F>Fa,则通过检验。

')

%绘制x-y散点图和回归直线

yy=a+b*test(1,:

);

plot(test(1,:

),test(2,:

),'r.'),holdon

plot(test(1,:

),yy,'b-'),holdoff

title(str)

 

附(可以直接粘贴到.mat文件中):

3.8

4

5.8

8

11.3

14.4

16.5

16.2

13.8

10.8

6.7

4.7

77.7

51.2

60.1

54.1

55.4

56.8

45

55.3

67.5

73.3

76.6

79.6

 

一维数据滑动平均的matlab实现

%滑动平均

%数据格式:

单行(按时间序列排序)

%数据文件名:

data_ph.mat,变量名:

test

loaddata_ph.mat

M=length(test);

disp('请输入单侧平滑点数(时距)')

k=input('(输入1对应于三点平滑,2对应五点平滑):

');

y=zeros(1,M);

if2*k+1<=M

fori=1:

M-2*k

forj=i:

i+2*k

y(i+k)=y(i+k)+test(j);

end

y(i+k)=y(i+k)/(2*k+1);

end

y([1:

k,M-k+1:

M])=NaN;

str=[int2str(k),'点滑动平均结果如下:

'];

disp(str)

formatcompact

data=test,result=y

format

else

disp('Error:

数据个数不足!

')

end

附(直接复制到.mat文件中即可):

(某城市1999-2004年用水量数据)

211.3

260.18

209.1

248.79

241

250

 

多元线性回归的matlab实现

%多元线性回归

%数据要求:

M行N列。

第一行为y的观察值,其余行分别为x1,x2,...,x(M-1)

%数据文件名:

data_dyhg.mat;变量名:

test

loaddata_dyhg.mat

[M,N]=size(test);

Y=test(1,:

)';

X=cat(2,ones(N,1),test(2:

end,:

)');

A=X'*X;

B=X'*Y;

b=A\B;

formatlongg

str=['系数按升幂排列为:

',num2str(b')];

disp(str)

%F-分布检验

eqx=sum(test(2:

M,:

),2)/N;eqy=sum(Y)/N;

Liy=zeros(1,M-1);

Lyy=0;

fori=1:

N

Lyy=Lyy+(Y(i)-eqy)^2;

end

%求回归平方和(方法一):

用y的拟合值

y=zeros(1,N);

UU=0;

fori=1:

N

forj=1:

M

y(i)=y(i)+b(j)*X(i,j);

end

UU=UU+(y(i)-eqy)^2;

end

Q0=Lyy-UU;

F0=(UU/(M-1))/(Q0/(N-M));

%求回归平方和(方法二):

用偏回归系数

fori=1:

M-1

forj=1:

N

Liy(i)=Liy(i)+(test(i+1,j)-eqx(i))*(test(1,j)-eqy);

end

end

U=0;

fori=1:

M-1

U=U+b(i+1)*Liy(i);

end

Q1=Lyy-U;

F1=(U/(M-1))/(Q1/(N-M));

%命令窗口中显示回归方程

disp('')

disp('F-分布检验:

')

stri='F计算值:

';

strin=['方法一:

',num2str(F0),'方法二:

',num2str(F1)];

string=['自由度:

','f1=',num2str(M-1),',f2=',num2str(N-M)];

st=cat(2,stri,strin);

disp(string)

disp(st)

disp('注:

1.请对照F-分布表找到所需置信水平下的F临界值Fa,若F>Fa,则通过检验。

')

disp('2.方法一求回归平方和时用到了因变量的拟合值,方法二用的是偏回归系数。

')

附(数据较多,显示不便,直接复制到.mat文件中即可):

48.25

193.72

413.94

358.6

615.04

752.42

435.43

238.55

87.85

316

503.73

554.04

502.07

611.78

603.66

501.67

540.16

264.15

427.11

513.09

478.21

395.25

650.14

480.24

85.79

144.38

39.17

65.32

71.88

58.57

54.33

106.33

257.21

114.53

127.49

194.9

331.09

110.57

194.42

163.89

389.9

541.5

573.03

521.31

645.21

466.28

558.83

621.02

515.02

545.72

786.75

584.89

574

40.5

36.6

35.53

37.48

35.43

33.82

35.63

36.57

39.77

36.05

34.2

35.38

35.62

34

34.38

34.73

34.58

37.2

35.12

35.42

34.73

35.85

33.75

33.4

41.8

41.58

40.15

40.26

40.72

40

40.3

39.37

38.83

39.15

38.93

38.78

38.45

38.63

38.23

37.92

37.2

36.58

35.73

35.73

35.15

35.52

32.95

34.03

34.7

35

34.21

35.43

36.14

1170.8

1707.2

1908.8

2072.4

2136.4

930.8

2025.1

1397.8

1477.2

1517.2

1410

1886.6

1917

3471.4

2314.6

1250

1131.7

2726.7

1765

2450

1495

1873.7

970

1079

1770

2159

1138.7

1526

1591

1270.2

1177.4

1332.2

2311.8

1453.7

1482.7

1764.6

2271

1367

1976.1

1530.8

3045.1

1255.6

1421.9

1346.6

1360

1650

1014.3

1753.2

2810.2

2915.7

3362.7

1221.2

1111.7

 

K阶自回归拟合及二阶自回归预测的Matlab实现

%k阶自回归及二阶自回归预测

%数据格式:

单行

%数据文件名:

data_zhg.mat,变量名:

test

clear,clc

loaddata_zhg.mat

M=length(test);

k=input('请输入自回归阶数:

');

y=zeros(k+1,M-k);

fori=1:

k+1

y(i,:

)=test(i:

i+M-k-1);

end

y=flipud(y);

[m,N]=size(y);

Y=y(1,:

)';

X=cat(2,ones(N,1),y(2:

end,:

)');

A=X'*X;

B=X'*Y;

b=A\B;

formatlongg

str=['首项为常数项,其余系数按距离预测值远近排列为:

',num2str(b')];

disp(str)

%二元自回归预测

ifk==2

Yuce2=b

(1)+b

(2)*test(M)+b(3)*test(M-1);

str=['二阶自回归预测下一个值为:

',num2str(Yuce2)];

disp(str)

end

附(直接粘贴到.mat文件中即可):

3149.44

3303.66

3010.3

3109.61

3639.21

3253.8

3466.5

3839.9

3894.66

4009.61

4253.25

4101.5

4119.88

4258.65

4401.79

 

一次指数平滑预测的matlab实现

%一次指数平滑及其预测

%数据格式:

单行(按时间序列排序)

%数据文件名:

data_ph.mat,变量名:

test

loaddata_ph.mat

M=length(test);

disp('参考:

时间序列稳定、数据波动较小时,a取(0.05,0.3);否则取(0.7,0.95)')

a=input('请输入平滑系数a:

');

y=zeros(1,M);

fori=1:

M

forj=0:

i-1

y(i)=y(i)+test(i-j)*a*(1-a)^j;

end

end

yy=a*test(M)+(1-a)*y(M);

formatcompact

formatshort

data=test,result=y

format

str=['下一时段数值预测:

',num2str(yy)];

disp(str)

附(直接复制到.mat文件中即可):

(某城市1999-2004年用水量数据)

211.3

260.18

209.1

248.79

241

250

 

n次指数平滑及其预测

%数据格式:

单行(按时间序列排序)

%数据文件名:

data_ph.mat,变量名:

test

loaddata_ph.mat

M=length(test);

disp('参考:

时间序列稳定、数据波动较小时,a取(0.05,0.3);否则取(0.7,0.95)')

a=input('请输入平滑系数a:

');

k=input('请输入平滑次数:

');

y0=test;

y=zeros(1,M);

fort=1:

k

fori=1:

M

forj=0:

i-1

y(i)=y(i)+y0(i-j)*a*(1-a)^j;

end

end

ift~=k

y0=y;

end

end

yy=a*y0(M)+(1-a)*y(M);

formatcompact

formatshort

data=test,result=y

format

附(直接复制到.mat文件中即可):

(某城市1999-2004年用水量数据)

211.3

260.18

209.1

248.79

241

250

 

一维数据移动平滑的matlab实现

%平滑是为了消除偶然因素对地理变量的影响

%以使地理变量随时间发展变化的趋势和方向明显化

%常用的有三种:

移动平均、滑动平均、指数平滑

%数据格式:

单行(按时间序列排序)

%数据文件名:

data_ph.mat,变量名:

test

loaddata_ph.mat

M=length(test);

k=input('请输入移动点数(时距):

');

y=zeros(1,M);

ifk

fori=1:

M-k

forj=1:

k

y(i+k)=y(i+k)+test(i+k-j);

end

y(i+k)=y(i+k)/k;

end

y(1:

k)=NaN;yy=y(M)+(y(M)-y(M-k))/k;

str=[int2str(k),'点移动平均结果如下:

'];

disp(str)

formatcompact

formatshort

data=test,result=y

if~isnan(y(M-k))

stri=['预测下一时段数值为:

',num2str(yy)];

disp(stri)

else

disp('移动点数太大,无法预测下一时段数值!

')

end

format

else

disp('Error:

数据个数不足!

')

end

附(直接复制到.mat文件中即可):

(某城市1999-2004年用水量数据)

211.3

260.18

209.1

248.79

241

250

 

K阶自相关系数的matlab实现(含置信度检验)

%k阶自相关系数的计算

%数据格式:

单行

%数据文件名:

data_zxgk.mat,变量名:

test

clear,clc

loaddata_zxgk.mat

M=length(test);

k=input('请输入自相关阶数K:

');

ifk<=M-1

eqt=sum(test(1:

M-k))/(M-k);

eqtk=sum(test(1+k:

M))/(M-k);

A=0;B=0;C=0;

fori=1:

M-k

A=A+(test(i)-eqt)*(test(i+k)-eqtk);

B=B+(test(i)-eqt)^2;

C=C+(test(i+k)-eqtk)^2;

end

rk=A/sqrt(B*C);

str=['##',int2str(k),'阶自相关系数为:

r(',int2str(k),')=',num2str(rk)];

disp(str)

stri=['##自由度(f=n-K):

',int2str(M-k)];

disp(stri)

disp('##欲检验置信度,请查阅相关系数检验临界值ra.若r>ra则通过检验')

else

disp('Error:

K值太大!

')

end

附(直接复制到.mat文件中即可):

3149.44

3303.66

3010.3

3109.61

3639.21

3253.8

3466.5

3839.9

3894.66

4009.61

4253.25

4101.5

4119.88

4258.65

4401.79

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 制度规范

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1