如何在 sas 中执行日志转换

许多统计检验假设特定变量的值呈正态分布

然而,这些值通常不是正态分布的。解决此问题的一种方法是通过取每个值的对数来转换变量。

通过执行此变换,变量通常会接近正态分布。

以下示例显示如何对 SAS 中的变量执行对数转换。

示例:SAS 中的日志转换

假设我们在 SAS 中有以下数据集:

 /*create dataset*/
data my_data;
    input x;
    datalines ;
1
1
1
2
2
2
2
2
2
3
3
3
6
7
8
;
run ;

/*view dataset*/
proc print data =my_data;

我们可以使用PROC UNIVARIATE对变量 x 执行正态性检验,以确定它是否服从正态分布,并创建直方图来可视化值的分布:

 /*create histogram and perform normality tests*/
proc univariate data =my_data normal ; 
histogram x;
run ; 

在最后一个标题为“正态性检验”的表中,我们可以看到 Shapiro-Wilk 检验的p 值小于 0.05,这提供了变量x不呈正态分布的有力证据。

直方图还显示值的分布似乎不呈正态分布:

我们可以尝试对原始数据集进行对数转换,看看是否可以生成更正态分布的数据集。

我们可以使用以下代码在 SAS 中创建一个新数据集,其中我们获取每个原始 x 值的对数:

 /*use log transformation to create new dataset*/
data log_data;
    set my_data;
    x = log (x);
run ;

/*view log transformed data*/
proc print data =log_data; 

然后我们可以再次使用PROC UNIVARIATE对转换后的变量执行正态性测试并生成直方图:

 /*create histogram and perform normality tests*/
proc univariate data =log_data normal ; 
histogram x;
run ; 

在最后一个标题为正态性检验的表中,我们可以看到 Shapiro-Wilk 检验的p 值现在大于 0.05。

直方图还显示值的分布比转换前稍微更正常:

根据 Shapiro-Wilk 检验的结果和上面给出的直方图,我们可以得出结论,对数变换创建的变量比原始变量更加正态分布。

其他资源

以下教程解释了如何在 SAS 中执行其他常见任务:

如何识别 SAS 中的异常值
如何在SAS中计算烹饪距离
如何在 SAS 中创建直方图

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注