2012-11-18 238 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).' –