最近有一个关于怎样构建数列的问题。
比如最普遍的就是 fibonacci 数列
data fibo;
do i = 1 to 10;
fib = sum(fib, lag(fib));
if i eq 1 then fib = 1;
output;
end;
run;
proc print data=fibo;
run;
我的问题就是如果我的数列是基于某几个预定值的话,比如我的数据是data new;
input x;
datalines;
1
3
7
;
我想要得到的第四个数据是
y = 0.5*lag(x)+0.3*lag2(x)+0.2*lag3(x),
以此类推。这个问题的难点是从第四个x开始已经是空值了,所以也就是借用了前三个x的值,生成第四个x也就是第一个y值,然后第二个y值应该是由第一个y值,加上第三个x值,以及第二个x值来得到,以此类推,也就是用y值来得到y值本身
所以我期待得到的数列是
y
1
3
7
3.5+0.9+0.2=4.6
2.3+2.1+0.6=5
2.5+1.38+1.4=5.28
希望得到大家的帮助,谢谢