实习五 趋势分析方法
- 资料介绍
现有全球海洋海温场资料,文件名HADISST_50y.grd. 时段:冬季1958~2007年共50年。水平分辨率:不等距(具体参考HADISST_50y文件)。
要求:
1)以热带印度洋(35~125E,20S~20N)区域平均海温时间序列为例,利用气候趋势分析的三种方法(线性倾向估计、滑动平均及累积距平)分析热带印度洋平均海温随时间的变化趋势。
2)近50年冬季全球海温变化趋势如何(线性倾向估计)?
注:附计算思路,并通过图示分析计算结果。
一、程序
1) 线性倾向估计
program main
implicit none
integer,parameter::nt=50
real sst(nt),a,b,sst1(nt),r
integer it,t(nt)
do it=1,nt
t(it)=1958-1+it
enddo
open(1,file='D:\2021tj\practice5\HASISST_1.grd',form='binary')
read(1)(sst(it),it=1,nt)
close(1)
call huigui(t,sst,nt,a,b)
! write(*,*)'x=',a,'+',b,'t'
do it=1,nt
sst1(it)=a+b*t(it)
enddo
!write(*,*)sst1
open(2,file='D:\2021tj\practice5\sst_huigui.grd',form='binary')
write(2)(sst1(it),it=1,nt)
close(2)
call relative(sst,t,nt,r)
r=r*b
write(*,*)r
end program
subroutine huigui(x,y,nt,a,b)
implicit none
integer nt
real y(nt),a,b !x,y为需要做回归分析的变量,a,b为系数
real:: xave=0.0,yave
real k,q,m !k为b的分子,q为分母
integer it,x(nt)
yave=0.0
!write(*,*)x**2
do it=1,nt
xave=xave+x(it)/nt
yave=yave+y(it)/nt
enddo
! write(*,*)xave
k=0.0
q=0.0
m=0.0
do it=1,nt
k=k+x(it)*y(it)
q=q+x(it)**2
!write(*,*)q(ix,iy)
enddo
k=k-nt*xave*yave
q=q-nt*(xave**2)
b=k/q
a=yave-b*xave
!write(*,*)q
end subroutine huigui
subroutine relative(x,t,nt,r)
implicit none
integer nt,it
real x(nt),r,q,k,tave,xave
integer t(nt)
tave=0
xave=0.0
do it=1,nt
tave=tave+t(it)*1.0/nt
xave=xave+x(it)/nt
enddo
k=0.0
q=0.0
do it=1,nt
k=k+t(it)**2
q=q+x(it)**2
enddo
k=k-nt*tave**2
q=q-nt*xave**2
r=sqrt(k/q)
end subroutine
2)滑动平均
program main
implicit none
integer,parameter::nt=50
real sst(nt),sst1(42)
integer it
open(1,file='D:\2021tj\practice5\HASISST_1.grd',form='binary')
read(1)(sst(it),it=1,nt)
close(1)
call sliding_average(sst,nt,9,sst1)
! write(*,*)'x=',a,'+',b,'t'
write(*,*)sst1
open(2,file='D:\2021tj\practice5\sliding_average.grd',form='binary')
write(2)(sst1(it),it=1,42)
close(2)
end program
subroutine sliding_average(x,nt,n,y)
implicit none
real x(nt),y(nt-n+1)
integer nt,n,it,i
do it=1,nt-n+1
do i=it,it+n-1
y(it)=y(it)+x(i)
enddo
y(it)=y(it)/n
enddo
end subroutine sliding_average
3)累积距平
program main
implicit none
integer,parameter::nt=50
real sst(nt),sst2(nt)
integer it,i
open(1,file='D:\2021tj\practice5\HASISST_1.grd',form='binary')
read(1)(sst(it),it=1,nt)
close(1)
!write(*,*)sst
call cumulative_distance(sst,nt,sst2)
write(*,*)sst2
open(2,file='D:\2021tj\practice5\cu_dis.grd',form='binary')
write(2)(sst2(it),it=1,nt)
close(2)
end program
subroutine cumulative_distance(x,nt,y)
implicit none
real x(nt),y(nt),xave
integer nt,it,i
xave=0.0
do it=1,nt
xave=xave+x(it)/nt
enddo
!write(*,*)xave
do it=1,nt
y(it)=0.0
do i=1,it
y(it)=y(it)+(x(i)-xave)
enddo
enddo
end subroutine
二、ctl和gs文件
1.热带印度洋海温区域平均海温序列
2.线性倾向估计
3.滑动平均
4.累积距平
三、图形及其分析
由以上三图可知,从线性倾向估计中,可看出,近50年热带印度洋海温呈上升趋势,且可得出其相关系数为0.3749,大于r(0.05)=0.2875, 表明这种上升趋势在α=0.05显著性水平上是显著的。
由9点滑动平均可以看出,气温变化趋势变得平缓了
由累积距平可看出,从1970年到1997年左右气温以负距平为主,表明气温低于气候平均值,在1997年之后,气温以正距平为主,说明气温高于气候平均值,并且有一直上升的趋势。