董亚
Precipitation Estimation Based on Weighted Markov Chain Model
概括
序号 研究方向 研究问题 研究方法 研究结论 1 数据处理 中长期降水预报 首先对数据平滑预处理;然后采用均值-方差法建立降水状态的分类标准;最后根据分类标准,确定历史降水状态,最终得到状态转移矩阵 略
方法/模型
对每年的降雨数据进行平滑预处理以消除异常值,本文采用三重移动平均线对数据进行平滑处理:
X
i
=
(
X
i
+
X
i
+
1
+
X
i
+
2
)
/
3
X_i=(X_i+X_{i+1}+X_{i+2})/3
X i = ( X i + X i + 1 + X i + 2 ) / 3 利用均值-方差法建立年降雨状态的分类标准,通常将降雨状态分为5类。 k应该是转移步数
程序
import numpy as np
def smoothing ( data) :
newdata= [ ]
n= len ( data) - 2
for i in range ( n) :
smresult= ( data[ i] + data[ i+ 1 ] + data[ i+ 2 ] ) / 3
newdata. append( smresult)
return newdata
def datatostate ( newdata) :
data= np. array( newdata)
meanfdata= np. mean( data)
stdofdata= np. std( data)
state= [ ]
for i in newdata:
if i< ( meanfdata- stdofdata) :
state. append( 0 )
elif i>= ( meanfdata- stdofdata) and i< ( meanfdata- stdofdata* 0.5 ) :
state. append( 1 )
elif i>= ( meanfdata- stdofdata* 0.5 ) and i< ( meanfdata+ stdofdata* 0.5 ) :
state. append( 2 )
elif i>= ( meanfdata+ stdofdata* 0.5 ) and i< ( meanfdata+ stdofdata) :
state. append( 3 )
elif i>= ( meanfdata+ stdofdata) :
state. append( 4 )
return state
def stpm ( state) :
n= len ( state) - 1
p= np. zeros( ( 5 , 5 ) , dtype= int )
for i in range ( n) :
a= state[ i]
b= state[ i+ 1 ]
if state[ i] == a and state[ i+ 1 ] == b:
p[ a, b] = p[ a, b] + 1
return p
data= np. loadtxt( "test" , delimiter= '\n' )
newdata= smoothing( data)
state= datatostate( newdata)
print ( state)
p= stpm( state)
print ( p)
print ( type ( p) )