如何在 SAS 中为每个 class 生成不同的协方差矩阵?

How to generate distinct covariance matrices for each class in SAS?

我想使用 SAS 为包含二进制 class 的数据集生成协方差矩阵,一个 class 1 的协方差矩阵和一个 class 2 的协方差矩阵。

PROC MEANS DATA=my_dataset MAXDEC=2 MEAN STD;
CLASS binary_class;
VAR x1 x2 x3;
RUN;

PROC CORR DATA=my_dataset noprob COV;
CLASS binary_class;
VAR x1 x2 x3;
run;

但是当我 运行 第二条语句时,我得到:

错误 180-322:语句无效或使用顺序不正确。

有人可以帮帮我吗?

我认为 PROC CORR 没有 CLASS 语句,您需要一个 BY (#2) 语句,这确实需要您提前对数据进行排序。

您可以添加 ODS OUTPUT 语句 (#1) 以将协方差数据存储到数据集中。

proc sort data=my_dataset;
by binary_class;
run;

ods output cov=cov_by_binary; /*#1*/
proc corr data=my_dataset noprob cov;
by binary_class; /*2*/
var x1-x3;
run;

编辑:一般来说,CLASS 语句只告诉 SAS proc 你的变量是分类的,它不一定进行 BY 组处理。 PROC MEANS 是为数不多的可以互换使用的过程之一。