【问题标题】:Moving averages varlist移动平均线变量列表
【发布时间】:2012-11-06 16:00:44
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: spss moving-average


    【解决方案1】:

    今天在 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.
    

    【讨论】:

    • 另外仅供参考,有一个名为 CREATE 的命令基本上可以执行此操作(您可以执行 csum、居中移动平均线、差异等)。对于此示例,它将是 CREATE moving_average_30 = PMA(price,30).
    猜你喜欢
    • 2017-09-01
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2017-09-01
    • 2011-06-29
    • 2019-04-24
    • 2012-05-24
    相关资源
    最近更新 更多