2

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

  1. 计算 AAAA 或 0001 等股票代码的 30 天移动平均线,并将其保存为 MA30AAAA 或 MA300001。
  2. 取另一个股票代码,比如 AAAB 或 0002,然后按照上面的方法进行操作。
  3. 继续,直到所有代码都被捕获并计算 MA,保存到新列。

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

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

4

1 回答 1

2

今天在 LinkedIn 上有一个非常相似的问题(请参阅此处或下面的答案)。

- 假设每个日期在您的数据中只出现一次,下面的语法将计算每个日期 + 前 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.
于 2012-11-19T07:33:41.403 回答