Hmisc wtd.var和SAS proc之间的差异意味着生成加权方差

时间:2014-01-09 19:37:05

标签: r sas hmisc

当我尝试计算加权方差时,我得到了R和SAS的不同结果。有谁知道造成这种差异的原因是什么?

我创建了权重和值的向量,然后我使用。来计算加权方差 Hmisc库wtd.var函数:

library(Hmisc)
wt <- c(5,  5,  4,  1)
x <- c(3.7,3.3,3.5,2.8)
wtd.var(x,weights=wt)

我得到了答案:

[1] 0.0612381

但如果我尝试在SAS中重现这些结果,我会得到一个完全不同的结果:

data test;
  input wt x;
cards;
5 3.7
5 3.3
4 3.5
1 2.8
;
run;
proc means data=test var;
var x;
weight wt;
run;

结果回答

0.2857778

1 个答案:

答案 0 :(得分:1)

您可能在如何计算方差方面存在差异。 SAS为您提供了一个选项VARDEF,这可能对此有所帮助。

proc means data=test var vardef=WDF;
var x;
weight wt;
run;

在您的数据集上,它会给出与r类似的差异。两者都是“正确的”,具体取决于您选择如何计算加权方差。 (在我的商店,我们计算第三种方式,当然......)

来自PROC MEANS documentation的完整文字:

  

VARDEF = divisor指定在计算中使用的除数   方差和标准差。下表显示了   除数和相关除数的可能值。

Possible Values for VARDEF=
Value            Divisor                     Formula for Divisor
DF               degrees of freedom          n - 1
N                number of observations      n
WDF              sum of weights minus one    ([Sigma]iwi) - 1
WEIGHT | WGT     sum of weights              [Sigma]iwi
  

该过程将方差计算为CSS/Divisor,其中CSS   是校正的平方和和等于和((Xi-Xbar)^ 2)。当你   权重分析变量,CSS等于总和(Wi *(Xi-Xwbar)^ 2),其中   Xwbar是加权平均值。

     

默认值:DF要求:要计算均值的标准误差,   平均值的置信限,或学生的t检验,使用   VARDEF的默认值=。

     

提示:当您使用WEIGHT语句时   VARDEF = DF,方差是Sigma ^ 2的估计值,其中   第i次观察的方差是Sigma ^ 2 / wi,而wi是   第i次观察的重量。这种方法产生了估计值   观察单位重量的方差。

     

提示:当你使用时   WEIGHT语句和VARDEF = WGT,计算的方差是   渐近(对于大n)估计的Sigma ^ 2 / wbar,其中   wbar是平均重量。这种方法产生渐近   估计平均重量的观察方差。