Questions tagged «simulation»

广阔的领域包括通过计算机模型生成结果。

2
贝叶斯主义者如何使用蒙特卡洛模拟方法验证其方法?
背景:我拥有社会心理学博士学位,在我的定量课程中几乎没有涉及理论统计和数学。通过本科和研究生学校,我通过“经典”常客制框架得到了教育(可能与社会科学中的许多人一样)。现在,我也很喜欢R和使用模拟方法来验证方法,使工作方式对我来说,比数学上的证明更有意义(再次:定量社会科学的背景,而不是理论统计)。惯常方法和模拟方法对我来说意义非凡。因为常客将概率视为长期可能性(例如,如果我执行任意多次,并且这种情况发生在50%的时间中,那么就有50%的概率)。我们可以使用蒙特卡洛方法来模拟这种长期运行! 并发症:由于大学阶段,我已经很清楚的贝叶斯方法,并一直存在的人在我的生命给我打电话贝叶斯一边,说,结果更容易解释,我们得到概率的一个假设,而不是数据我真的很喜欢这个,参加了贝叶斯课程,阅读了一些贝叶斯书籍和论文,现在对Stan及其相关的R包非常熟悉。 输入Mayo:在思考了一段时间的“贝叶斯可能是未来之路”之后,我读了Deborah Mayo的“ 统计推断”作为“严格测试”。她说,她在书的开头并没有选择任何一方,但她这样做:她是一名常客,许多书都在捍卫常客的方法论。我不想讨论我们是否认为她认为证据有效的方式,但这让我思考:贝叶斯真的是广告宣传的全部吗?我的意思是,贝叶斯人群是如此分散,以至于我什至不知道经常在贝叶斯框架中分析数据的“正确”方法。通常我会用rstanarm现在的点估计值和可信区间...这通常与常客的估计和置信区间非常接近。我可能会进行模型比较,但是我总是害怕将贝叶斯因素描述为后验概率比较等。 更多思考:在梅奥的书中,我一直在思考:有一种方法可以使用计算机来确保我们的常客方法有效,因为从长远来看,概率是可以看到的,并且可以模拟。看来,贝叶斯人甚至不能就概率的确切性达成共识,这取决于贝叶斯学派(默认,主观等)。这引出我的问题: 问题:如果长期未将概率定义为费率,贝叶斯主义者如何使用蒙特卡罗模拟方法验证他们的方法是否正确定义了不确定性(即,计算有效的可信区间和后验分布)? 示例:我创建一个数据生成器。这只是从伯努利分布中以0.​​5的概率进行模拟: set.seed(1839) p <- .50 n <- 100 gen_dat <- function(n, p) { rbinom(n, 1, p) } 现在,假设我要确保逻辑回归中的置信区间实际上是有效的。我可以多次模拟回归,并确保实际总体值在95%的时间内处于95%的置信区间内。这是一个仅拦截的模型,所以我只想确保自己估计p正确: set.seed(1839) iter <- 10000 results <- sapply(seq_len(iter), function(zzz) { mod <- glm(gen_dat(n, p) ~ 1, binomial) conf <- suppressMessages(confint(mod)) log(p / (1 - p)) < …

3
使用Ahrens和Dieter(1972)的方法而不是通过逆变换的指数随机发生器的优点是什么?
我的问题是受R的内置指数随机数生成器函数启发的rexp()。当尝试生成指数分布的随机数时,许多教科书建议使用此Wikipedia页面中概述的逆变换方法。我知道还有其他方法可以完成此任务。特别是,R的源代码使用Ahrens&Dieter(1972)在论文中概述的算法。 我已经说服自己,Ahrens-Dieter(AD)方法是正确的。不过,与逆变换(IT)方法相比,我看不出使用它们的方法的好处。AD不仅比IT实施更复杂。似乎也没有速度上的好处。这是我的R代码,用于对两种方法及其结果进行基准测试。 invTrans <- function(n) -log(runif(n)) print("For the inverse transform:") print(system.time(invTrans(1e8))) print("For the Ahrens-Dieter algorithm:") print(system.time(rexp(1e8))) 结果: [1] "For the inverse transform:" user system elapsed 4.227 0.266 4.597 [1] "For the Ahrens-Dieter algorithm:" user system elapsed 4.919 0.265 5.213 比较这两种方法的代码,AD至少绘制两个统一的随机数(使用C函数unif_rand())以获得一个指数随机数。IT只需要一个统一的随机数。大概是R核心团队决定不实施IT,因为它假设采用对数可能比生成更统一的随机数慢。我了解对数的获取速度可能与机器有关,但至少对我而言是相反的。也许IT的数值精度与对数为0的奇异性有关吗?但是然后,R 源代码sexp.c揭示了AD的实现也失去了一些数值精度,因为C代码的以下部分从统一随机数u中删除了前导位。 double u = unif_rand(); while(u <= 0. || u …

2
在什么设置下,随着样本数量的增加,置信区间不会变好吗?
在博客文章中,我发现有这样的说法: “我相信Cochrane工作组首先指出(大约在1970年代),在观察环境中具有置信区间时,小样本量会导致更好的覆盖率,而足够大的样本会提供接近零的覆盖率!” 现在,我假设CI宽度应随着样本大小的增加而接近0,但是覆盖范围会同时变差的想法对我来说并不令人信服。这个说法是正确的,在什么情况下?还是我看错了? 我已经使用随机正态分布数据进行了模拟,样本大小为10000至1000000(一次样本t检验,95%CI),每个样本大小运行1000次,对于更大样本量,覆盖率并没有恶化(相反,我发现了预期的接近5%的恒定错误率)。

3
使用计算机模拟以更好地理解研究生级别的统计概念
您好,我正在修读统计学的研究生课程,并且我们涵盖了测试统计和其他概念。 但是,我通常能够运用公式并就事物的工作原理形成某种直觉,但我常常感到,如果我通过模拟实验来支持研究,那么我将对眼前的问题有更好的直觉。 因此,我一直在考虑编写简单的模拟,以更好地理解我们在课堂上讨论的一些概念。现在我可以用说Java来: 产生具有正常均值和标准差的随机总体。 然后取一个小样本,尝试尝试凭经验计算Type-I和Type-II错误。 现在我的问题是: 这是发展直觉的合法方法吗? 是否有执行此操作的软件(SAS?,R?) 统计学是一门处理此类编程的学科吗:实验统计?,计算统计?模拟?

3
仿真研究:如何选择迭代次数?
我想使用“模型1”生成数据,并使其与“模型2”匹配。基本思想是研究“模型2”的鲁棒性。我对95%置信区间的覆盖率(基于正常近似值)特别感兴趣。 如何设置迭代次数? 大于必需的复制量是否会导致虚假的偏差,这是真的吗?如果是这样,那怎么办?

2
为什么不对部分模拟的数据执行荟萃分析?
背景: 典型的心理学荟萃分析可能试图对两个变量X和Y之间的相关性进行建模。该分析通常涉及从文献中获得一组相关的相关性以及样本量。然后可以将公式应用于计算加权平均相关性。然后,可以进行分析以查看各个研究之间的相关性变化是否比随机抽样的单纯影响所暗示的变化大。 此外,可以使分析变得更加复杂。可以针对可靠性,范围限制等进行调整。相关性可以组合使用,以探索元结构方程建模或元回归等。 但是,所有这些分析都是使用摘要统计信息(例如,相关性,优势比,标准化的均值差)作为输入数据执行的。这需要使用接受汇总统计信息的特殊公式和过程。 荟萃分析的替代方法 因此,我正在考虑一种元分析的替代方法,其中将原始数据用作输入。即,对于相关性,输入数据将是用于形成相关性的原始数据。显然,在大多数荟萃分析中,即使不是大多数,实际的原始数据也无法获得。因此,基本过程可能如下所示: 与寻求原始数据的所有已发布作者联系,如果提供的话,请使用实际原始数据。 对于不提供原始数据的作者,请模拟原始数据,以使其具有与所报告的摘要统计相同的摘要统计。这样的模拟还可以合并从原始数据中获得的任何知识(例如,如果已知变量存在偏差等)。 在我看来,这种方法可能有几个好处: 使用原始数据作为输入的统计工具可用于分析 通过至少获取一些实际的原始数据,荟萃分析的作者将被迫考虑与实际数据相关的问题(例如,异常值,分布等)。 题 对真实的原始数据和模拟的数据进行荟萃分析研究是否存在任何问题,以使其具有与现有已发表研究相同的汇总统计数据? 这样的方法是否会优于对汇总统计数据执行荟萃分析的现有方法? 是否有现有文献讨论,主张或批评这种方法?

1
为什么从混合效应模型中自举残差会产生反保守的置信区间?
我通常处理的数据是,在2个或更多条件下,分别测量了多个个体。我最近一直在使用混合效果建模来评估条件之间差异的证据,individual并将其建模为随机效果。为了可视化此类建模预测的不确定性,我一直在使用自举法,其中在引导程序的每次迭代中,对个体和条件内观察进行替换抽样,并从中计算新的混合效应模型获得。这对于假定高斯误差的数据效果很好,但是当数据为二项式时,自举可能会花费很长时间,因为每次迭代都必须计算一个计算量相对较高的二项式混合效应模型。 我当时的想法是,我可以使用原始模型中的残差然后使用这些残差代替引导程序中的原始数据,这将使我能够在引导程序的每次迭代中计算一个高斯混合效果模型。将原始数据的二项式模型的原始预测与残差的自举预测相加,得出原始预测的CI为95%。 不过,我最近编码这种做法的一个简单的评价,造型两种情况之间没有区别的,计算的时间比例为95%置信区间未能包括零,而且我发现,上述基于残差,引导过程的产量相当强烈反保守的时间间隔(超过5%的时间排除零)。此外,我然后编码(与以前的链接相同)对该方法的类似评估,该评估应用于原始高斯数据,并且获得了相似的(尽管不是极端的)反保守CI。知道为什么会这样吗?

2
从p范数球()产生均匀噪声
我正在尝试编写一个函数,该函数会产生均匀分布的噪声,该噪声来自维的p范数球:nnn ||x||p≤r||x||p≤r\begin{equation} ||x||_p \leq r \end{equation} 我找到了可能的圆的解决方案()(http://mathworld.wolfram.com/DiskPointPicking.html),但是我很难将其扩展为不同值。p=2p=2p = 2ppp 我尝试通过仅从均匀分布中抽取随机样本并在不满足给定约束的情况下重绘来进行尝试。但是,除了它是一个丑陋的解决方案之外,它在高尺寸方面在计算上也不可行。
11 simulation  noise 

2
如何模拟审查数据
我想知道如何模拟n个Weibull分布寿命的样本,其中包括类型I右删失的观测值。例如,让n = 3,形状= 3,比例= 1,审查率= .15,审查时间= .88。我知道如何生成Weibull样本,但是我不知道如何生成在R中类型为I右删失的删失数据。 T = rweibull(3, shape=.5, scale=1)

2
使用ARMA-GARCH模型模拟外汇价格
我已经将ARIMA(1,1,1)-GARCH(1,1)模型拟合到几年中以一分钟为间隔采样的澳元/美元汇率记录价格的时间序列,估计模型的上百万个数据点。该数据集可在此处获得。为了清楚起见,这是一个ARMA-GARCH模型,由于对原木价格进行一阶整合,因此适合对原木进行回报。原始的AUD / USD时间序列如下所示: 然后,我尝试根据拟合模型模拟时间序列,从而得到以下结果: 我既期望也希望模拟的时间序列与原始时间序列不同,但是我并不期望会有如此大的差异。从本质上讲,我希望模拟的序列的行为或大致看起来像原始序列。 这是我用来估计模型和模拟序列的R代码: library(rugarch) rows <- nrow(data) data <- (log(data[2:rows,])-log(data[1:(rows-1),])) spec <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(1, 1), include.mean = TRUE), distribution.model = "std") fit <- ugarchfit(spec = spec, data = data, solver = "hybrid") sim <- ugarchsim(fit, …

4
为什么对重新采样的数据集进行假设检验经常会拒绝零值?
tl; dr:从空值下生成的数据集开始,我对样本进行了替换并重新采样,并对每个重新采样的数据集进行了假设检验。这些假设检验在超过5%的时间内拒绝了原假设。 在下面的非常简单的模拟中,我使用生成数据集,并为每个数据集拟合一个简单的OLS模型。然后,对于每个数据集,我通过替换替换原始数据集的行来生成1000个新数据集(该算法在Davison&Hinkley的经典文章中专门描述为适合线性回归的算法)。对于每一个,我都使用相同的OLS模型。最终,引导样本中大约16%的假设检验拒绝了null,而我们应该得到5%(就像在原始数据集中所做的那样)。X〜ñ(0 ,1 )⨿ ÿ〜ñ(0 ,1 )X〜ñ(0,1个)⨿ÿ〜ñ(0,1个)X \sim N(0,1) \amalg Y \sim N(0,1) 我怀疑这与重复观察导致虚假关联有关,因此为了进行比较,我尝试了以下代码中的两种其他方法(注释掉)。在方法2中,我修复,然后用原始数据集上OLS模型中的重采样残差替换在方法3中,我绘制了一个随机子样本而不进行替换。这两种选择均起作用,即它们的假设检验拒绝了5%的无效时间。ÿXXXÿÿY 我的问题:罪魁祸首是反复观察吗?如果是这样,考虑到这是引导程序的标准方法,那么我们到底在哪里违反标准引导程序理论? 更新#1:更多模拟 我尝试了一个更简单的方案,即的仅拦截回归模型。发生相同的问题。ÿÿY # note: simulation takes 5-10 min on my laptop; can reduce boot.reps # and n.sims.run if wanted # set the number of cores: can change this to match your machine library(doParallel) registerDoParallel(cores=8) …

2
从不正确的混合物中进行精确采样
假设我要从连续分布进行采样。如果我有的表达的形式pp (x )p(X)p(x)ppp p (x )= ∑我= 1∞一个一世F一世(x )p(X)=∑一世=1个∞一个一世F一世(X)p(x) = \sum_{i=1}^\infty a_i f_i(x) 其中和f_i是可以从中轻松采样的分布,然后我可以通过以下方式轻松地从p生成采样:一个一世⩾ 0 ,Σ一世一个一世= 1一个一世⩾0,∑一世一个一世=1个a_i \geqslant 0, \sum_i a_i= 1F一世F一世f_ippp 以概率a_i对标签一世一世i进行采样一个一世一个一世a_i 采样X〜˚F一世X〜F一世X \sim f_i 如果一个一世一个一世a_i有时为负数,是否可以推广此过程?我怀疑我已经在某个地方看到过此操作-可能在书中,或者可能是在Kolmogorov发行版中-因此,我很高兴接受参考作为答案。 如果一个具体的玩具示例有帮助,假设我要从p (X ,ÿ)∝ exp( - X - ÿ- α X ÿ--√)X ,ÿ> 0p(X,ÿ)∝经验值⁡(-X-ÿ-αXÿ)X,ÿ>0p(x,y) \propto \exp(-x-y-\alpha\sqrt{xy})\qquad x,y > 0然后出于技术上的原因,将α ∈ (0 ,2 )α∈(0,2)\alpha \in …

2
什么是随机变量的样本?
随机变量被定义为从具有基础度量一个代数到另一个代数的可测量函数。XXXσσ\sigma(Ω1,F1)(Ω1,F1)(\Omega_1, \mathcal F_1)PPPσσ\sigma(Ω2,F2)(Ω2,F2)(\Omega_2, \mathcal F_2) 我们如何谈论这个随机变量的样本?我们是否将其视为的元素?还是与具有相同的可测量功能?XnXnX^nΩ2Ω2\Omega_2XXX 我在哪里可以了解更多信息? 例: 在蒙特卡洛估计中,我们通过将样本作为函数来证明估计量的无偏性。如果将随机变量的期望定义为(Xn)Nn=1(Xn)n=1N(X^n)_{n = 1}^NXXX E[X]=∫Ω1X(ω1)dP(ω1)E[X]=∫Ω1X(ω1)dP(ω1)\begin{align} \mathbb E[X] = \int_{\Omega_1} X(\omega_1) \,\mathrm dP(\omega_1) \end{align} 并假设是函数并且,我们可以进行如下操作:XnXnX^nXn=XXn=XX^n = X E[1N∑n=1Nf(Xn)]=1N∑n=1NE[f(Xn)]=1N∑n=1NE[f(X)]=E[f(X)].E[1N∑n=1Nf(Xn)]=1N∑n=1NE[f(Xn)]=1N∑n=1NE[f(X)]=E[f(X)].\begin{align} \mathbb E\left[\frac{1}{N} \sum_{n = 1}^N f(X^n)\right] &= \frac{1}{N} \sum_{n = 1}^N \mathbb E[f(X^n)] \\ &= \frac{1}{N} \sum_{n = 1}^N \mathbb E[f(X)] \\ &= \mathbb E[f(X)]. \end{align} …

2
胖手指分布
简短的问题: 是否有胖手指分布?我敢肯定,如果它存在,那么它会有不同的名称。 我不知道如何将其表述为分析函数。您能帮我找到它的现有版本,还是以比大型模拟更干净的方式开始制定它? 它是当给定数字为预期目标时实际命中的数字分布,但是按钮比手指小得多,因此附近的按钮有时是偶然命中的一个按钮。 像这样的分配方式的使用是对手机按键的错误输入。如果我经营一家公司,必须“立即按1”或某样东西,然后按“您按1,是正确的”,那么尽管连续2个胖手指可能会弄乱胖手指的概率,但是他们可以得到相当不错的胖手指概率一些。 (胖手指的远距离距离?胖手指马尔可夫链?) 我想用它来尝试将纠错内置到按键中。我有一些自己的样本,但是手指“脂肪”或手机键盘拓扑的变化不足以使其健壮。 背景和细节: 这是正常的手机键盘布局: 想象一下,我的手指比琴键大得多,因此当我击打5时,我很可能会得到5,但是然后我也有可能会得到2、4、6或8(同样可能),那么获得1,3,7,9(同等可能性)的可能性较小(但不为零),而获得0的可能性很小。 我可以想象,如果我尝试为固定的“手指直径”键入无穷多个5,那么我将获得值的分布。如果我的手指值较小,则分布会改变。如果我尝试打不同的数字,则分布会改变。 实际上,这将取决于键的布局。如果它们处在一个巨大的环中而不是一个3x3的网格中,那将是另一种问题。在这种情况下,我希望我们只处理3x3矩形网格。我还怀疑键盘上有数字锁存器,因此只能检测到一次按键。其他按钮最多有7个频率,例如按下“ 0”时。我不确定采用哪种干净的方法。可能是目标密钥和候选触发密钥之间的归一化平方距离的倍数? 这是我如何模拟按下五个按钮时的分布(权重有些随意): #number of presses npress <- 1000 #hack this (not quadratic) myprobs <- c(0.85) myprobs <- c(myprobs, 0.1275/4, 0.1275/4, 0.1275/4, 0.1275/4) myprobs <- c(myprobs, 0.019125/4, 0.019125/4, 0.019125/4, 0.019125/4) myprobs <- c(myprobs,1-sum(myprobs) ) #order of number my_button <- …

4
它是否正确 ?(生成截断范数多元高斯)
如果 ,即 X∈Rn, X∼N(0–,σ2I)X∈Rn, X∼N(0_,σ2I)X\in\mathbb{R}^n,~X\sim \mathcal{N}(\underline{0},\sigma^2\mathbf{I})fX(x)=1(2πσ2)n/2exp(−||x||22σ2)fX(x)=1(2πσ2)n/2exp⁡(−||x||22σ2) f_X(x) = \frac{1}{{(2\pi\sigma^2)}^{n/2}} \exp\left(-\frac{||x||^2}{2\sigma^2}\right) 我想要多元情况下的截断正态分布的类似版本。 更确切地说,我想生成一个范数约束(值)的多元高斯 st ,其中ÿ ˚F ý(Ý )= { Ç 。f X(y ), 如果 | | y | | ≥ 一个0 , 否则 。c = 1≥a≥a\geq aYYYfY(y)={c.fX(y), if ||y||≥a0, otherwise .fY(y)={c.fX(y), if ||y||≥a0, otherwise . f_Y(y) = \begin{cases} c.f_X(y), \text{ if …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.