【发布时间】:2012-07-06 01:07:37
【问题描述】:
我继承了一些旧的 Stata 代码 (Stata11),它使用 xtile 函数按分位数对向量中的观察值进行分类(在这种情况下,只是标准的 5 个五分位数,20%、40%、60%、 80%、100%)。
我正在尝试在 Python 中复制一段代码,并且我正在使用 SciPy.stats.mstats 函数 mquantiles() 进行计算。
据我从 Stata 文档和在线搜索中得知,Stata xtile 方法尝试反转数据的经验 CDF,并使用 CDF 平坦的所有观察值的等加权平均值来进行切点。这似乎是对分位数进行分类的一种非常糟糕的方法,但事实就是如此,我相信在某些情况下这是正确的做法。
我的问题是如何让mquantiles() 产生同样的打破惯例。我注意到这个函数有两个参数,alphap 和betap(文档称它们为alpha 和beta,但你需要额外的'p'才能让它工作,至少我这样做......我如果我只在 Python 2.7.1 和 SciPy 0.10.0 中使用“alpha”和“beta”,则会出现错误)。但即使在 SciPy 文档中,我也看不出这些参数的组合是否会在平坦的 CDF 范围内产生平均值。
我看到了作为这个范围的中位数或众数计算的选项,但不是平均值(也不清楚这些具有 alpha 和 beta 的 SciPy 中位数/众数选项是否被计算为 观察或产生平坦 CDF 值的范围。)
任何帮助消除这些不同选项的歧义并找到一些帮助我在 Python 中重新创建 Stata 约定的文档都会很棒。请不要回答只是说“编写自己的分位数函数”。首先,这无助于我理解 Stata 或 SciPy 的约定,其次,鉴于这些数值库,编写自己的分位数函数应该是最后的手段。我当然可以,但如果我需要,那就不好了。
【问题讨论】:
-
好吧,至少我能够重现 Stata 步骤。如果你现在说 R 文档非常棒,我会绝望地举起双手;)
-
EMS,我不明白您所说的“糟糕的文档”指的是什么:
xtile不仅是开源的(它在 ado 文件中实现),而且有大量文档在“方法和公式”部分的大量示例、技术说明和一整页数学解释的帮助中。 -
自 Stata 13(2013 年 6 月)起,Stata 的整个文档都可以公开访问 stata.com/manuals13/dpctile.pdf 是相关的手动条目。
-
我用@EMS 对Stata 中
xtile函数的持续和错误引用记录了我的异议。命令和函数都在 Stata 中定义,但非常不相交。 Stata 中没有xtile函数。 Stata 的术语肯定与 Stata 问题相关。出于个人喜好或对其他软件的熟悉程度而使用某些术语是不合适的。 -
您保留原始措辞作为对您作为原始海报的礼貌,但您似乎没有说服任何人。关于此处相关内容的断言似乎主要是个人观点。使用不正确的术语无助于使用不同语言的人之间的交叉交流;编程就是让细节完全正确。 Stata 中可能有一个
xtile函数,但没有;这是事实。
标签: python scipy stata quantile