Class 配对 T 检验

Paired T Test With a Class

我有一些数据是这样的:

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

日期范围涵盖 2 整年 2013 - 14。

我想在 Close 上进行配对 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 测试,其中配对在每年的日期。

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

为了进行配对 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 将 table 的 2013 年部分自动加入 [=2014 年的部分 table 像这样:

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; 语句。