2012-11-18 139 views
2

我正在尝试使用SPSS 20计算大约30天(移动平均线之前)的移动平均线,以获取大约1200个股票代码。我想使用如下循环:移动平均线varlist

  1. 计算股票代码的30天移动平均线称AAAA或0001,并将其保存为MA30AAAA或MA300001。
  2. 拿另一个股票代码说AAAB或0002,并按照上述做。
  3. 一直持续到捕获所有代号并计算MA并保存到新列。

你认为我可以开发一个SPSS语法这一点。

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

回答

2

有今天LinkedIn(见here或以下的答案)一个非常类似的问题。

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

- 如果前面一些日期少于29日,这些新变量将不会被计算此日期。 (恕我直言,这将是误导性的信息。)

-The 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. 
+0

也FYI有一种叫做CREATE基本上执行此命令(你可以做CSUM,居中移动平均,差别等)。对于这个例子,它将是'CREATE moving_average_30 = PMA(价格,30).' –