楼主: iRoss2007
3121 4

[问答] 如何用retain语句实现多阶滞后?? [推广有奖]

  • 0关注
  • 6粉丝

硕士生

80%

还不是VIP/贵宾

-

威望
0
论坛币
27691 个
通用积分
3.2888
学术水平
9 点
热心指数
11 点
信用等级
8 点
经验
6866 点
帖子
127
精华
0
在线时间
244 小时
注册时间
2008-12-3
最后登录
2022-9-4

楼主
iRoss2007 在职认证  学生认证  发表于 2012-1-26 22:06:07 |AI写论文
30论坛币
需求:假设有变量x,前4项观测已知,例如分别为2,5,9,10.从第5项开始,我希望令x=lag4(x)*(1+y),y是某已知变量。但是,使用lag是行不通的,因为:

1,首先对x的前4项赋值需要if函数,而if函数的使用会打破lag的序列;
2,其次由于x是其“本身”前4阶的值的函数,使用lag也会出现问题。

现在比较确定是使用retain语句,但是retain只能保留一阶的滞后值,如何让其保留4阶?

需求比较简单,但让小弟已经抓狂了,大大们快出场吧!

最佳答案

maidenhan 查看完整内容

I wish the following code could help u. data test01; input x @@; y = ceil(abs(10*rannor(0))); cards; 2 5 9 10 11 13 24 31 10 ;run; data test02(keep = x y t); retain x1-x4; set test01; if _n_
关键词:RETAIN ETA RET 如何用 lag 如何
文(伪)科(码)男(农), 弹幕爱好者,微软脑残粉,萧亚轩脑残

沙发
maidenhan 发表于 2012-1-26 22:06:08
I wish the following code could help u.

data test01;
        input x @@;
        y = ceil(abs(10*rannor(0)));
cards;
2 5 9 10 11 13 24 31 10
;run;
data test02(keep = x y t);
        retain x1-x4;
        set test01;
        if _n_ <= 4 then do;
                select (mod(_n_,4));
                        when (1) x1 = x;
                        when (2) x2 = x;
                        when (3) x3 = x;
                        otherwise x4 = x;
                end;
        end;else do;
                select (mod(_n_,4));
                        when (1) do;t = x; x = x1*(1+y); x1 = t; end;
                        when (2) do;t = x; x = x2*(1+y); x2 = t; end;
                        when (3) do;t = x; x = x3*(1+y); x3 = t; end;
                        otherwise do;t = x; x = x4*(1+y); x4 = t; end;
                end;
        end;
run;
已有 1 人评分经验 论坛币 收起 理由
crackman + 100 + 80 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 80   查看全部评分

藤椅
jingju11 发表于 2012-1-26 22:47:22
应该详细描述一下你的问题。我感觉第一个x不是第二个x,为什么要用同样的名字呢?京剧

板凳
jingju11 发表于 2012-1-26 23:10:45
maidenhan 发表于 2012-1-26 22:54
I wish the following code could help u.

data test01;
wow. amazing code!

JingJu

报纸
iRoss2007 在职认证  学生认证  发表于 2012-1-27 14:47:28
谢谢maidenhan!
文(伪)科(码)男(农), 弹幕爱好者,微软脑残粉,萧亚轩脑残

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 00:51