SAS Proc单变量和R分位数函数的不同结果
问题描述:
我在R中使用函数分位数来计算第90,第75,第50,第25百分位数,但是我的同事使用SAS proc单变量来做相同的计算,不同的结果(例如,来自R的第90百分位数是47.36,但来自SAS的第90百分位数是50.64)。我试图找出原因。有人能给我一些指导吗?SAS Proc单变量和R分位数函数的不同结果
R代码里面:
位数(C(43.55,41.30,39.40,40.93,38.74,39.97,45.38,41.48,45.01,42.03,44.71,43.42,45.83,43.44,37.84,50.64,53.16,45.95 ),概率= C(0.90,0.10,0.75,0.50,0.25))
SAS代码:R中
data x;
input x;
datalines;
43.55
41.30
39.40
40.93
38.74
39.97
45.38
41.48
45.01
42.03
44.71
43.42
45.83
43.44
37.84
50.64
53.16
45.95
;
run;
proc univariate data=x noprint ;
var x;
output out=new p90=p90 p10=p10 q3=p75 median=p50 q1=p25 ;
run;
答
默认方法是7而在SAS默认大概empirical distribution function with averaging。
如果您在R中使用添加选项type = 1
,您将得到与SAS中相同的结果。
quantile(c(43.55,41.30,39.40,40.93,38.74,39.97,45.38,41.48,45.01,
42.03,44.71,43.42,45.83,43.44,37.84,50.64,53.16,45.95),
prob=c(0.90, 0.10, 0.75, 0.50, 0.25),
type = 1)
90% 10% 75% 50% 25%
50.64 38.74 45.38 43.42 40.93
+0
非常感谢! –
在R中,'quantile()'有'type ='参数。 (关于分位数是什么没有统一的定义。)尝试'type = 3'(应该符合SAS定义)。有关不同的定义,请参阅“?quantile”。 – MrFlick