SAS SD 和百分位数

SAS SD and Percentiles

我正在用 SAS 编写公式。我需要在所有这些中使用标准偏差和百分位数。但我不确定如何在 SAS 中编写它。

data test;
set test1;
if ((the 100th percentile of X)-(99th percentile of X))>(SD of X) then delete;
run;

我只是不确定如何在 SAS 中写出这些

百分位数和标准差是整个数据的特征,而不仅仅是一个观察值。您的逻辑似乎表明您会删除所有观察结果。大概您实际上想将每个观察值与分布的某些特征进行比较。

基本方法是将您想要的百分位数和标准差作为新变量添加到数据中。您可以使用 proc univariateoutput 语句来计算您感兴趣的统计信息并将它们保存到新的数据集中。

然后您将其合并回您的原始数据,因此您现在将拥有所需的变量。那时你可以使用你已经拥有的基本相同的语法。

这应该让你开始:

data tmp;
    do i=1 to 100;
        x=rannor(123);
        output;
    end;
run;

proc univariate data=tmp noprint;
    var x;
    output out=pctls max=max p99=p99 std=std;
run;

data tmp;
    if _n_=1 then do;
        set pctls;
    end;
    set tmp;

    /* Just making up a condition here */
    if x>p99 then delete;
run;