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):passdef cal(self,d_list):i=1sumx=0while i<=len(d_list):sumx=i*d_list[i-1]+sumxi=i+1l1=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