移动平均线varlist

时间:2012-11-18 16:04:26

标签: spss moving-average

我正在尝试使用SPSS 20计算大约1200个股票代码的跨越30天(之前移动平均线)的移动平均线。我想使用一个循环:

  1. 计算代码为AAAA或0001的30天移动平均线,并将其保存为MA30AAAA或MA300001。
  2. 另一个自动收录器说AAAB或0002并按上述方式行事。
  3. 继续,直到捕获所有代码并计算MA,保存到新列。
  4. 你认为我可以为此开发一个SPSS语法。

    如果我尝试以下操作,我会收到错误警告。请你能帮我找一个结构合理的语法来完成我的工作。

1 个答案:

答案 0 :(得分:2)

今天在LinkedIn上有一个非常类似的问题(请参阅here或以下的答案)。

- 假设每个日期在您的数据中只出现一次,下面的语法将计算每个日期的移动年度总数和平均值+前29个日期。

- 如果在某个日期之前不到29天,则不会计算此日期的这些新变量。 (恕我直言,这将是误导性的信息。)

- 2个新变量将出现在每个列中,但如果需要,可以使用一些额外的行将每个值放入其自己的列中。

亲切的问候,

鲁本

*Generate test data. 
set seed 1. 
input program. 
loop #=1 to 60. 
if #=1 date=date.dmy(21,11,2012). 
if #>1 date=datesum(lag(date),1,"days"). 
end case. 
end loop. 
end file. 
end inp pro. 
if $casenum=1 price=100. 
if $casenum ne 1 price=lag(price)+tru(rv.nor(0,5)). 
for date(edate10). 
exe. 

*Compute moving total + average. 
comp moving_total_30=price. 
do rep dif=1 to 29. 
comp moving_total_30=moving_total_30+lag(price,dif). 
end rep. 
comp moving_average_30=moving_total_30/30. 
exe.