FORCAST线性回归预测值函数是部分软件里面的函数,不同软件函数名称有差异。
以下内容说明节选自某软件
FORCAST该函数的说明如下:
FORCAST(X,N):为X的N周期线性回归预测值。
注:
1、N包含当前k线。
2、N为有效值,但当前的k线数不足N根,该函数返回空值;
3、N为0时,该函数返回空值;
4、N为空值,该函数返回空值;
5、N可以是变量
算法举例:用最小平方法计算FORCAST(C,3)在最近一根K线上的值
1、建立一元线性方程:y=a+bi+m
2、y的估计值:y(i)^=a+bi
3、求残差:m=y(i)-y(i)=y(i)-a-bi
4、误差平方和:
Q=m(1)m(1)+…+m(3)m(3)=[y(1)-a-b1][y(1)-a-b1]+…+[y(3)-a-b3][y(3)-a-b3]
5、对线性方程中的参数a,b求一阶偏导:
2{[y(1)-a-b1]+…+[y(3)-a-b3]}(-1)=0
2[y(1)-a-b1](-1)+…+[y(3)-a-b3](-3)=0
6、联立以上两个公式,解出a,b的值:
a=(y(1)+y(2)+y(3))/3-b(i(1)+i(2)+i(3))/3
b=(y(1)i(1)+y(2)i(2)+y(3)i(3)-(3((i(1)+i(2)+i(3))/3)((y(1)+y(2)+y(3))/3))/((i(1)2+i(2)2+i(3)2)-3*((i(1)+i(2)+i(3))/3)2)
7、将a,b,i值带入1,求出y值
以上公式用麦语言函数可以表示如下:
BB3C+2REF(C,1)+REF(C,2)-(3((1+2+3)/3)MA(C,3)))/((SQUARE(1)+SQUARE(2)+SQUARE(3))-3SQUARE((1+2+3)/3));
AA:MA(C,3)-BB*(1+2+3)/3;
YY:AA+BB*3;
实际实现结果:
class forcast():
def __int__(self):
pass
def cal(self,d_list):
i=1
sumx=0
while i<=len(d_list):
sumx=i*d_list[i-1]+sumx
i=i+1
l1=list(range(1,len(d_list)+1))
r1=sum(l1)
r2=r1*np.mean(d_list)
l2=[]
for v1 in l1:
l2.append(v1*v1)
r3=sum(l2)
r4=len(d_list)*(r1/len(d_list)*(r1/len(d_list)))
r5=(sumx-r2)/(r3-r4)
r6=np.mean(d_list)-r5*r1/len(d_list)
rs=r6+r5*len(d_list)
return rs