我需要模拟R中的数据,有一个很好的尾部分布,而且在我不确定从哪里开始之前,我从来没有模拟过数据。我已经查看了FatTailsR包,但是文档非常神秘,我似乎找不到任何明显的教程。
基本上,我想要创建一个包含10,000个观测数据的两列(X和Y)的人工数据create,它使用以下逻辑/迭代:
如有任何指导,将不胜感激。包括用于签出的包和函数的建议(可能类似于rlnorm ?)
发布于 2019-02-25 22:03:21
这可能有用(不是超级高效,但是.)
首先计算出每个结果的概率(P(1)=0.75,P(2)=0.75*0.25,P(3)=0.75*0.25^2 .)
cc <- cumprod(c(0.75,rep(0.25,9)))选择具有这些概率的多项式偏差(每个样本为N=1)
rr <- t(rmultinom(1000,size=1,prob=cc))计算每行中的哪个值等于1:
storage.mode(rr) <- "logical"
out <- apply(rr,1,which)检查结果:
tt <- table(factor(out,levels=1:10))
1 2 3 4 5 6 7 8 9 10
756 183 43 14 3 1 0 0 0 0 也许有一种更聪明的方法来根据修改后的几何分布来建立这个模型。
发布于 2019-02-25 22:29:25
这就是我从你的问题中了解到的:
data <- data.frame(X=1:10000, Y=sample(c(0,1), 10000, TRUE, prob=c(0.75, 0.25)))
head(data)
pos <- which(data$Y == 1)
pos <- sample(pos, floor(0.25*length(pos)), FALSE) # 25% of Y == 1
data[pos, "Y"] <- data[pos, "Y"] + 1
## Iterate using a while loop :
data <- data.frame(X=1:10000, Y=sample(c(0,1), 10000, TRUE, prob=c(0.75, 0.25)))
head(data)
i <- 0
while(i < 10) {
pos <- which(data$Y == (i + 1))
pos <- sample(pos, floor(0.25*length(pos)), FALSE) # 25% of Y == 1
data[pos, "Y"] <- data[pos, "Y"] + 1
i <- i + 1
}
hist(data$Y)https://stackoverflow.com/questions/54874921
复制相似问题