问题标签 [statistics-bootstrap]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 帮助我改进我的引导程序
考虑以下代码:
我想知道我是否可以为 boot:boot() 函数提供一个输出长度为 n > 1 的向量的函数?有可能吗?
这是我微弱的尝试,但我一定做错了什么。
我真的不明白为什么Hmisc::cut2()
在调用中不能正常工作,但是当我在循环boot()
中调用它时工作(见上面的代码)。for()
我的bootstrapDistances()
函数的逻辑是否可行boot()
?任何指针都非常感谢。
。:编辑:。
Aniko 建议我以这种方式修改我的函数,以包含一个索引。在阅读 boot() 的文档时,我不清楚它是如何工作的,这解释了为什么该函数可能无法正常工作。这是 Aniko 建议的新功能:
但是,我设法产生了一个错误,我仍在研究如何删除它。
在我重新启动我的 R 会话后(也尝试了另一个版本,2.10.1),它似乎工作正常。
r - 引导比较两组
在下面的代码中,我使用 bootstrapping 来计算 CI 和 p 值,在零假设下,两种不同的肥料施用于番茄植物对植物产量没有影响(另一种选择是“改进的”肥料更好)。第一个随机样本 (x) 来自使用标准肥料的植物,而在第二个样本 (y) 来自的植物中使用了“改良”肥料。
对于上面的代码,我不喜欢的是,重新采样的完成就像只有一个 11 个值的样本(将前 5 个作为属于样本 x 的样本分开,其余的留给样本 y)。你能告诉我应该如何修改这段代码,以便从第一个样本中提取大小为 5 的重采样并从第二个样本中分离大小为 6 的重采样,以便引导重采样模仿产生原始数据?
r - 自举估算的cem输出
我正在对估算的数据集进行粗化的精确匹配。为了验证我对 cem 的结果进行了引导。但是我无法让boot.ci
输出正常工作。我收到错误消息:
物体在那里,但由于某种原因,我无法得到偏差校正的结果。
基本上一切都运行顺利,除了我无法获得bca
引导 CI。
r - 当数据不连续时,如何随机采样最接近 y 值的 n 个值?
我有一个数据集,其中包括物种列表、它们的数量以及调查开始时的天数。由于没有采样很多天,因此一天不是连续的。因此,例如,可能在第 5、6、9、10、15、34、39 天计数鸟类等等。我将最早的日期设置为第 0 天。
示例数据:
我需要引导这些数据并获得一个结果数据集,我在其中指定何时开始、继续进行的时间间隔以及要采样的点数。
示例:假设我随机选择第 5 天作为开始日期,间隔为 30,采样的行数为 2。这意味着我将从 5 开始,添加 30,并在 35 天左右寻找 2 行(但不是第 35 天本身)。在这种情况下,我将抓取第 34 天和第 39 天的两行。
接下来,我将 30 添加到 35 并在 65 附近寻找两个点。冲洗,重复直到我到达数据集的末尾。
我编写了这个函数来进行采样,但它有缺陷(见下文):
我需要帮助的两个问题:
虽然我的函数确实返回了所需的点数,但它并不以我的搜索值为中心。这是有道理的,因为随着我变得更宽,我得到更多的点,当我对它们进行排序并选择第一个 n 时,它们往往不是低值。
其次,我如何得到实际的行?现在我有另一个函数可以使用
which
, 然后将rbind
这些行放在一起来定位这些行。似乎应该有更好的方法。
谢谢!
r - 修改后的引导
我有兴趣开发一种修改后的引导程序,该引导程序可以对长度为 x 的向量进行替换,但在停止采样之前必须满足许多标准。我试图计算种群增长率的 lambda 的置信区间,10000 次迭代,但在某些个体分组中,比如向量 13,很少有个体从组中生长出来。典型的自举会导致相当数量的实例,其中该向量不会发生增长,因此模型会崩溃。每个向量由一定数量的 1、2 和 3 组成,其中 1 表示留在一个组中,2 表示从一个组中生长出来,3 表示死亡。这是我到目前为止没有修改的内容,这可能不是最好的方法时间明智,但我是 R 新手。
目前,这个样本我的问题是:我可以通过什么方式修改样本函数以继续对这些数字进行采样,直到“索引”的长度至少与 st13 相同,并且直到至少有 1 个 2 的实例出现在“指数”?
非常感谢 Kristopher Hennig 密西西比大学牛津大学硕士生,MS,38677
matlab - 取决于投资组合的引导抽样 (MATLAB)
我在 Matlab 中编码时遇到了这个问题,我希望有人知道如何解决这个问题。
摘要:问题是我有几个不同的金融投资组合(1070 个投资组合),我需要对每个投资组合进行回归。然后使用第一个回归的残差,我想引导这些残差(获取大约 1000 个引导残差样本),但每个个人投资组合。这是因为我不能混合来自不同投资组合的残差。
详细说明:我有一个向量可以告诉我投资组合编号,这是一个随机数,但对于该特定投资组合来说是唯一的。然后我将投资组合收益收集在一个长向量中(14k 观察),所以我需要做的是某种“滚动窗口”OLS 回归,并且只回归与单个投资组合相对应的数据,提取常数和 beta 和保存这些,然后对所有不同的投资组合执行此操作。
我会得到一个由常量和 beta 组成的矩阵,然后每一行对应一个特定的投资组合。
投资组合具有不同数量的数据点,因此一个投资组合可能有 60 个观察值,而另一个投资组合可能有 150 个观察值。因此,仅按固定间隔将其拆分为单独的投资组合是不可能的。
对于自举残差,如上所述,我需要从投资组合的残差而不是整个样本中进行替换。我需要这些引导样本来进行进一步的数据操作,但我有 1000 个引导样本,其余的只是正常的加法和减法运算......
有谁知道如何做到这一点?在 Stata 中,对于回归部分,您只需使用“by()”选项,但对于引导,它并不那么容易......
我非常感谢任何帮助!
最好的问候,菲利普
r - R 引导包:没有足够的内存来获得置信区间
我已经使用引导包在 R 中运行了一个相当大的引导程序。
当我第一次运行 boot() 时,我得到了这个:
因此,为了获得引导对象,我必须使用“simple=TRUE”,它告诉 boot() 在开始时不要分配所有内存(根据 ?boot)。这工作得很好,虽然花了几分钟。
现在我需要得到置信区间:
同样的问题!但根据 ?boot.ci,没有可以与此功能一起使用的“simple = TRUE”标志(我已经尝试过)。
那么,有没有办法使用 boot.ci() 来解决这个问题?
而且,如果没有,我该怎么做才能增加它可以使用的内存量?
r - Calculating standard deviation of samples with boostrapping in R
Imagine: I have sampled 10,000 humans and measured their height in cm, and drawn the distribution as follows:
Now I want to estimate how large the standardDeviation is for each measured body height. I thought that bootstrapping my original dataset would be a good method, i.e sampling body sizes from my original dataset with replacement.
Is this a good method? How can I perform this analysis in R (e.g. standard deviation for each height in a bootstrap analysis with 1000 cycles)?
r - 使用引导包中的参数引导调整引导置信区间 (BCa)
我试图boot.ci
从 R 的boot
包中使用参数引导程序计算偏差和偏斜校正的引导程序置信区间。通过阅读手册页和实验,我得出结论,我必须自己计算折刀估计并将它们输入boot.ci
,但这在任何地方都没有明确说明。我无法找到其他文档,但公平地说,我没有看过原始的戴维森和欣克利的代码所依据的书......
如果我天真地运行b1 <- boot(...,sim="parametric")
然后boot.ci(b1)
,我得到错误influence values cannot be found from a parametric bootstrap
。当且仅当我指定type="all"
或时才会发生此错误type="bca"
;boot.ci(b1,type="bca")
给出同样的错误。也是如此empinf(b1)
。我可以让事情正常工作的唯一方法是显式计算折刀估计(使用empinf()
参数data
)并将它们输入boot.ci
.
构造数据:
引导程序:
到目前为止还好。
都给出上述错误。
这有效:
有谁知道这是否是我应该这样做的方式?
更新:包的原作者boot
回复了一封电子邮件:
...您是正确的,问题在于您正在执行参数引导。在引导中实现的 bca 间隔是非参数间隔,这应该在某处明确说明。参数 bca 区间的公式不一样,并且取决于在您的情况下存在令人讨厌的参数时最不利的家庭可能性的导数。(参见 Davison & Hinkley 中的第 206-207 页)empinf 假定统计数据是用于非参数引导的一种形式(您在示例调用 empinf 中所做的)但您最初的引导调用(正确)具有统计数据以适合参数重采样的不同形式。
您当然可以做您正在做的事情,但我不确定将参数重采样与非参数区间估计混合的理论特性。
r - R中的引导变量相关性
我的目的是编写几个函数,旨在找出两个协方差矩阵之间的总体相似性,或者通过将它们与随机向量相乘并关联响应向量,或者通过引导其中一个矩阵来获得可用于比较的相关系数分布。但在这两种情况下,我都得到了错误的结果。观察到的矩阵间相关性高达 0.93,但分布范围最高仅达到 0.2。这是函数的代码:
事实上,我很难相信两个原始矩阵之间的相关系数很高,并且第一个原始矩阵和第二个重新采样的矩阵之间的相关系数在 10000 次引导重复后最大为 0.2。
对代码的有效性有何评论?