如何在 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 是为数不多的可以互换使用的过程之一。
我想使用 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 是为数不多的可以互换使用的过程之一。