- 积分
- 205
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-1-11
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 学长吉他 于 2013-3-25 20:23 编辑
我想做60年数据的滑动t检验,步长选择 5和10,下面是我的程序请问高手需要改一下哪里?另外我的数据存放是60个数据一列这样对吗?
PROGRAM N_MTT
PARAMETER (N=60 ,K=5 ,NYEAR=1)
REAL *8 X(N),X1(N),X2(N),T(K:N-K+1)
REAL *8 V1,V2,EQ1,EQ2
OPEN (1,FILE="C:\Users\James\Desktop\001.TXT")
DO I=1,N
READ (1,*) X(I)
ENDDO
CLOSE(1)
IF (K.EQ.5) THEN
A=2.31
ELSE IF (K.EQ.10) THEN
A=2.10
ELSE IF (K.EQ.12) THEN
A=2.05
ENDIF
DO L=K,N-K+1
DO I=1,K
X1(I)=X(L-K+I)
X2(I)=X(L+I-1)
ENDDO
CALL SVAR(X1,V1,K,N)
CALL SVAR(X2,V2,K,N)
CALL SAVAG(X1,EQ1,K,N)
CALL SAVAG(X2,EQ2,K,N)
T(L)=(EQ1-EQ2)/SQRT((2.0/K)*((K-1)*(V1+V2)/(K+K-2)))
PRINT *,NYEAR+L-1
ENDDO
OPEN (2,FILE="C:\Users\James\Desktop\001.TXT")
DO L=K,N-K+1
WRITE (2,'(I4,3F18.2)') NYEAR+L-1,T(L),A,-A
ENDDO
CLOSE(2)
END
SUBROUTINE SVAR(X,V,K,N)
REAL *8 X(K),V
SUM=0
DO I=1,K
SUM=SUM+X(I)
ENDDO
AVAG=SUM/K
VAR=0
DO I=1,K
VAR=VAR+(X(I)-AVAG)**2
ENDDO
V=VAR/K
END
SUBROUTINE SAVAG(X,EQ,K,N)
REAL *8 X(K),EQ
SUMX=0
DO I=1,K
SUMX=SUMX+X(I)
ENDDO
EQ=SUMX/K
END
|
|