门限回归模型的思想_python实现门限回归方式

门限回归模型(TRM)通过门限变量控制,根据预报因子和门限阈值来决定不同情况下的预报方程,适用于处理跳跃和突变现象。本文介绍了采用二分割方法建模的步骤,包括计算互相关系数、确定门限元、数据排序、分割与回归,并展示了Python代码示例,最后进行了预测值与实际值的可视化对比。
摘要由CSDN通过智能技术生成

门限回归模型(Threshold Regressive Model,简称TR模型或TRM)的基本思想是通过门限变量的控制作用,当给出预报因子资料后,首先根据门限变量的门限阈值的判别控制作用,以决定不同情况下使用不同的预报方程,从而试图解释各种类似于跳跃和突变的现象。其实质上是把预报问题按状态空间的取值进行分类,用分段的线性回归模式来描述总体非线性预报问题。

多元门限回归的建模步骤就是确实门限变量、率定门限数L、门限值及回归系数的过程,为了计算方便,这里采用二分割(即L=2)说明模型的建模步骤。

基本步骤如下(附代码):

1.读取数据,计算预报对象与预报因子之间的互相关系数矩阵。

数据读取

#利用pandas读取csv,读取的数据为DataFrame对象

data = pd.read_csv('jl.csv')

# 将DataFrame对象转化为数组,数组的第一列为数据序号,最后一列为预报对象,中间各列为预报因子

data= data.values.copy()

# print(data)

# 计算互相关系数,参数为预报因子序列和滞时k

def get_regre_coef(X,Y,k):

S_xy=0

S_xx=0

S_yy=0

# 计算预报因子和预报对象的均值

X_mean = np.mean(X)

Y_mean = np.mean(Y)

for i in range(len(X)-k):

S_xy += (X[i] - X_mean) * (Y[i+k] - Y_mean)

for i in range(len(X)):

S_xx += pow(X[i] - X_mean, 2)

S_yy += pow(Y[i] - Y_mean, 2)

return S_xy/pow(S_xx*S_yy,0.5)

#计算相关系数矩阵

def regre_coef_matrix(data):

row=data.shape[1]#列数

r_matrix=np.ones((1,row-2))

# print(row)

for i in range(1,row-1):

r_matrix[0,i-1]=get_regre_coef(data[:,i],data[:,row-1],1)#滞时为1

return r_matrix

r_matrix=regre_coef_matrix(data)

# print(r_matrix)

###输出###

#[[0.048979 0.07829989 0.19005705 0.27501209 0.28604638]]

2.对相关系数进行排序,相关系数最大的因子作为门限元。

#对相关系数进行排序找到相关系数最大者作为门限元

def get_menxiannum(r_matrix):

row=r_matrix.shape[1]#列数

for i in range(row):

if r_matrix.max()==r_matrix[0,i]:

return i+1

return -1

m=get_menxiannum(r_matrix)

# print(m)

##输出##第五个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值