0

使用 SAS,我想为一个数据集生成协方差矩阵,该数据集包含一个二元类、一个类 1 的协方差矩阵和一个类 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:语句无效或使用顺序不正确。

有人可以帮帮我吗?

4

1 回答 1

1

我不认为 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 是少数几个可以互换使用的过程之一。

于 2020-06-01T14:46:34.730 回答