- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我继承了一些旧的 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'才能让它工作,至少我这样做......如果我只使用'alpha'和'beta'与Python 2.7.1和SciPy 0.10.0,我会收到错误消息)。但即使在 SciPy 文档中,我也看不到这些参数的组合是否会产生平坦 CDF 范围内的平均值。
我看到了计算为该范围的中值或模式的选项,但不是意思(也不清楚这些带有 alpha 和 beta 的 SciPy 中值/模式选项是否被计算为 < em>观察值 或产生平坦 CDF 值的范围。)
任何帮助消除这些不同选项的歧义并找到一些帮助我在 Python 中重新创建 Stata 约定的文档都会很棒。请避免只说“编写您自己的分位数函数”的答案。首先,这无助于我理解 Stata 或 SciPy 的约定,其次,鉴于这些数值库,编写我自己的分位数函数应该是最后的选择。我当然可以做到,但如果我需要的话,这对周围的一切都会很糟糕。
最佳答案
scipy.stats.mquantiles 文档很差,而且在某些地方错误,现在已修复,这样可能会有帮助... http://docs.scipy.org/scipy/docs/scipy.stats.mstats_basic.mquantiles/ .当您指出 alpha/beta、alphap/betap 差异时,该过程就开始了。谢谢。
mquantiles的实现遵循R。
最大的区别在于 R 有 9 种离散类型,因为 scipy.stats.mquantiles 从 'alphap' 和 'betap' 计算 'm',scipy 有连续范围的“类型”(因为缺少更好的词)。
我承认我不了解所涉及统计数据的所有来龙去脉,因此我决定进行强力评估。我在 http://www.biostat.sdu.dk/~biostat/StataReferenceManual/StataRef.pdf 找到了一个 xtile 示例并能够将结果与 alphap=0.5 和 betap=0.5(分段线性)相匹配。不是确定的也不是详尽无遗的,但我现在拥有的一切。
In [1]: import scipy.stats as st
In [9]: st.mstats.mquantiles([23,56,67,123,99,17],prob=[0.5],alphap=0.5,betap=.5)
Out[9]: array([ 61.5])
In [10]: st.mstats.mquantiles([23,56,67,123,99,17],prob=[0.33,0.66],alphap=0.5,betap=.5)
Out[10]: array([ 38.84, 81.72])
In [11]: st.mstats.mquantiles([23,56,67,123,99,17],prob=[0.25,0.5,0.75],alphap=0.5,betap=.5)
Out[11]: array([ 23. , 61.5, 99. ])
最后一个有点问题,因为两个划分点恰好位于数据集中的值上。 Stata/xtile(至少在我发现的例子中)没有给出分位数的分割点,而是给出了分位数本身。给定排序后的数据集 [17,23,56,67,99,123],Stata/xtile 给出的分类为 [1,1,2,3,3,4] 这意味着对于 scipy.stat.mquantiles 匹配上分位数的边界大于或等于该分位数中的所有值。
关于python - 获取 SciPy 分位数以匹配 Stata xtile 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11347539/
假设我得到了两个整数 a, b 其中 a 是一个正整数并且小于 b 。我必须找到一种有效的算法,它会在 [a, b] 区间内给出 base2 位数(位数)的总和。例如,在区间 [0, 4] 中,数字之
到目前为止我已经尝试过不同的 autofilter但非选项似乎对我有用,我有许可证号列,其中应该只有 10 位数字,并且 autofilter我正在尝试查找少于或多于 10 位数字的条目, 我将该列转
谁能告诉我检查输入的数字是否为 3 位数字的正则表达式...它也不应该允许字母.... 最佳答案 3 个数字的正则表达式为 ^[0-9]{3}$ 或 ^\d{3}$ 关于javascript - 是否
我不知道这在 SQL Server 中是否可行,但我得问问它 ;-) 我在表 work 中有一个名为 duty 的列。 假设 Work.Duty 包含不同的数字,例如 (1, 2, 3, 20, 22
我正在运行一个我创建的java程序,它存储用户输入的数据。具体来说,有 4 个数组列表,分别是songName、songArtist、songYear 和songAlbum。我有一个“songYear
我不知道这在 SQL Server 中是否可行,但我得问问它 ;-) 我在表 work 中有一个名为 duty 的列。 假设 Work.Duty 包含不同的数字,例如 (1, 2, 3, 20, 22
给定一个 float ,我想使用半偶数舍入将结果四舍五入到小数点后四位,即四舍五入到下一个偶数的方法。例如,当我有以下代码片段时: #include #include int main(){
有没有一种方法可以在不使用小程序的情况下确定客户端计算机上的 jvm 位数?我确实看到了这个link但这决定了 jvm 版本而不是位数。提前致谢 最佳答案 您可以尝试确定浏览器位数 - 32 位 ja
我正在编写一个程序来计算给定数字的两个二进制表示之间的共同位数。我写的代码是: int common_bits(int a, int b) { static long binaryNo1,binary
如何使表格中的每个单元格的最小宽度为 3 位数字并且不会更大?现在我正在对 min-width 进行硬编码,但我不喜欢对值进行硬编码,因为将来我可能想更改字体。如果需要 Javascript 也没关系
我正在尝试匹配后跟一个空格或制表符和 5 个数字的单词。例如 some noise text off 12345 some noise text again. 另一个例子是: Some noise t
我在从 double 到 string 的转换时遇到问题。 我要转换: double value: 0.0772486324655191 string value: 0.077248632465519
我正在尝试实现一个使用 128 位 key 的密码。 key 计划的一部分是将 key 向右旋转 29 位,但我不确定该怎么做,因为 Java 中没有单一数据类型可以保存整个 key 。我将它存储在两
我正在尝试在 AVX2 中对 128 位数进行左旋转。由于没有直接的方法,我尝试使用左移和右移来完成我的任务。 这是我执行相同操作的代码片段。 l = 4; r = 4
我有一个 int,它的值类似于 1235 和 12890。我只想要这个 int 的前 2 位数字。我怎样才能提取它? 想了半天,想不出什么办法。 最佳答案 减少数字,直到只剩下两位数: while (
TL:DR 我想要紧跟“+”符号的任何行上的前两个数字的语法。 给定以下文本(来自熟悉的实用程序): power_meter-acpi-0 Adapter: ACPI interface power1
因此根据 cplusplus.com,当您通过以下方式将输出流的格式标志设置为科学记数法时 of.setf(ios::scientific) 您应该在指数中看到 3 位加号和一个符号。但是,我的输出似
这个问题在这里已经有了答案: How can I pad a value with leading zeros? (77 个答案) 关闭 9 年前。 如果小时数小于 10 小时,则小时数通常以个位数
我正在使用 moment.js使用根据距离/速度计算的日期时间。我也在使用 moment duration format plugin .当我将值传递给 moment.duration 然后对其进行格
我正在将一个应用程序从 .NET 移植到 Mono 运行时,并且在代码中的某个位置我可以看到一个 float 具有值 158136.422。我对 float 的理解是它是 7 位精度,那么这个数字如何
我是一名优秀的程序员,十分优秀!