| 
 
	积分205贡献 精华在线时间 小时注册时间2013-1-11最后登录1970-1-1 
 | 
 
| 
本帖最后由 学长吉他 于 2013-3-25 20:23 编辑
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  
 我想做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
 
 | 
 |