配对T级测试

时间:2015-02-05 14:54:02

标签: sas

我有一些看起来像这样的数据:

Date    Close   
12/31/2014  222.41  
12/30/2014  222.23  
12/29/2014  225.71
12/26/2014  227.82
12/24/2014  222.26
12/23/2014  220.97
12/22/2014  222.6
12/19/2014  219.29
12/18/2014  218.26

日期范围涵盖2013年至14年的整整两年。

我想在关闭时进行配对的T测试,但我正在努力学习语法。据推测,我需要将日期转换为年?或者我呢? 2013年的每个日期与2014年的另一个日期相符。

我可以在csv中更改我的数据并将其设置为:

   Date  | 2013_Close | 2014_Close
    Jan 1|  101       |  204
    Jan 2| 105        |  210

但如果我想避免这种情况,是否有办法对数据进行配对T检验?

这是我尝试但我收到的错误:

proc ttest data=tsla sides=2 alpha=0.05 h0=0;
class Date;
format Date year.;
var Close;
paired 2014*2013;
run;
ERROR 22-322: Syntax error, expecting one of the following: a name, (.
ERROR 76-322: Syntax error, statement will be ignored.

但即便如此,SAS如何知道2013年和14年?在英语中我需要告诉SAS在关闭时进行配对的T测试,每年的配对日期为。

这有意义吗?我该怎么做?

1 个答案:

答案 0 :(得分:1)

为了进行配对T检验,我认为你需要让你的数据看起来像这样:

DayofYear   Close2013 Close2014
365         222.41    222.26   
364         222.23    220.97   
363         225.71    222.6    
362         227.82    219.29   
361         222.26    222.41 
360         220.97    222.23
359         222.6     225.71
358         219.29    227.82
357         218.26    222.26

执行此操作的一种方法是为DayofYear创建变量,然后使用proc sql自动将表格的2013部分加入到表格的2014部分中,如下所示:

proc sql;
select
  coalesce(t1.dayofyear,t2.dayofyear) as dayofyear,
  t1.close as close2013,
  t2.close as close2014
from
  (select * from tsla where year(date)=2013) t1
  full outer join (select * from tsla where year(date)=2014) t2
  on t1.dayofyear = t2.dayofyear
;
quit;
;
quit;

要进行测试,我认为您不应该需要classvarformat语句。只是paired close2013*close2014;声明。