本人刚接触Stata,今天发现Stata中codebook命令给出的变量的百分位数结果与centile命令给出的结果不同。比如一列简单数据:1,2,3,4,5,6,7,8,9,10。codebook命令90%结果为9.5,而centile varlist,centile(90)命令90%结果为9.9。
想了半天,猜测可能计算公式用的不一样。百度了一下,确实有两种计算方法:
第一种方法:
第1步:以递增
顺序排列原始数据(即从小到大排列)。
第2步:计算指数i=np%
第3步:1)若 i 不是整数,将 i 向上取整。大于i的毗邻整数即为第p
百分位数的位置。
            2)若 i 是整数,则第p
百分位数是第i项与第(i+1)项数据的平均值。
第二种方法,这种方法是SPSS所用方法,也是SAS所用方法之一。
第一步:将n个变量值从小到大
排列,X(j)表示此数列中第j个数。
第二步:计算指数,设(n+1)P%=j+g,j为整数部分,g为小数部分。
第三步:1)当g=0时:P
百分位数=X(j);
             2)当g≠0时:P
百分位数=g*X(j+1)+(1-g)*X(j)=X(j)+g*[X(j+1)-X(j)]。
在这里向高手们请教,为何Stata里连这种基本计算都不一致,这么做有什么道理吗?而且好像第二种百分位数计算方法现在用的比较多啊。