我有一些看起来像这样的数据:
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测试,每年的配对日期为。
这有意义吗?我该怎么做?
答案 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;
要进行测试,我认为您不应该需要class
,var
或format
语句。只是paired close2013*close2014;
声明。