【发布时间】:2012-07-10 13:13:42
【问题描述】:
我正在用 R 中的一篇学术论文(参见末尾的引文)实现一种统计方法。我认为有一种方法可以在不使用循环的情况下执行其中一个步骤,但我在决定如何攻击时遇到了麻烦它。
此方法对具有三个变量的数据框进行操作:x、n 和 p。只有当 p[i]
这种平滑的问题是 a) 循环在 R 中是不好的形式,并且 b) 如果一行中有多个点使得 p_i > p_(i+1) >= p_(i+2),则方法可能无法终止或需要很长时间才能收敛。例如,如果发生这样的序列:
x n p
2 10 0.6
5 10 0.5
10 10 0.5
smooth 会将 p 的前两个值设置为 0.55,然后将后两个设置为 0.525,然后将前两个设置为 0.5325,依此类推并永远循环(或者如果我很幸运达到了数十亿次迭代)。通过识别相邻的递减数据点并将它们作为一个组进行平均,应该有一种数学上等效但更有效的方法,但我不确定如何在 R 中处理它。
如果您需要更多背景知识,相关论文是Martin A. Hamilton, Rosemarie C. Russo, Robert V. Thurston. "Trimmed Spearman-Karber method for estimating median lethal concentrations in toxicity bioassays." Environ. Sci. Technol., 1977, 11 (7), pp 714–719。我指的是第 716 页上的“第一步”部分。
【问题讨论】:
-
这是您需要的en.wikipedia.org/wiki/Isotonic_regression 吗?如果是这样,也许这很有价值 - statistics.ucla.edu/preprints/uclastat-preprint-2009:4
-
我正要问和 Glen 一样的问题——这是否等同于 Robertson 1988 中的 pool-adjacent-violators 算法?
-
是的。我想汉密尔顿公司。在它出版前 11 年不知道用那个名字来称呼它...@Glen_b,请写一个答案,以便我接受。
标签: r loops statistics