首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟t -distributions -随机样本

模拟t -distributions -随机样本
EN

Stack Overflow用户
提问于 2016-11-23 19:09:18
回答 1查看 1.5K关注 0票数 3

我是新的模拟演习在R,我想创建1000个样本大小25从t分布与自由度10。

我是否需要从rt生成器中创建一个数据向量,然后从它中反复进行采样?因此,例如,我可以创建向量:

singlevector <- rt(5000, 10),它从大小为5000的t分布中生成数据,df = 10。因此,我将把它作为我的总体,然后从它中取样。我在这里任意选择了5000人口。

或者,我应该创建我的1000个样本调用这个随机的t生成器每次?

换句话说,创建一个包含25行和1000列的矩阵,每个列包含对应于rt(25, 10)新调用的向量。

EN

回答 1

Stack Overflow用户

发布于 2016-11-23 19:29:24

由于您是抽样独立的,相同分布的值,所有这三种方法在统计上是等价的。

  • 调用随机数生成器一次以获得所需的多少(或更多)值,然后在不替换的情况下对该向量进行采样。
  • 调用随机数生成器1000次,每次选择25个值
  • 调用随机数生成器一次,选择25000个值,然后按顺序将向量细分为单个样本(而不是随机)。

后两者不仅是统计上的,而且在计算上是等价的。在第一种方法中,样本的顺序被加扰,但这对统计性质没有影响。

方法1:

代码语言:javascript
复制
set.seed(101)
x1 <- rt(25000,10)
r1 <- do.call(cbind,split(x1,sample(0:24999) %/% 25))

说明#2和#3的等价性:

代码语言:javascript
复制
set.seed(101)
r2 <- replicate(1000, rt(25, 10))
set.seed(101)
r3 <- matrix(rt(25000,10),nrow=25)
identical(r2,r3)  ## TRUE

一般来说,解决方案#3是最快的(但是对于这个数量级的问题,所有这些方法都是非常快的,即在我的笔记本上的25x1000个样本中,大约5毫秒(#3)比10毫秒(#2) );我会选择在读取代码时最容易理解的方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40772405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档