我是R的新手。我的分布正常。
{{1}}
作为练习,我想基于从值得出的概率曲线创建一个子集。例如,对于值<5,我想保留25%的随机条目,对于值> 15,我想保留75%的随机条目,对于5到15之间的值,我想线性插值概率选择范围介于25%和75%之间。似乎我想要的是“ sample”命令及其“ prob”选项,但我不清楚语法。
答案 0 :(得分:1)
对于前两个子集,我们可以使用
idx1 <- n < 5
ss1 <- n[idx1][sample(sum(idx1), sum(idx1) * 0.25)]
idx2 <- n > 15
ss2 <- n[idx2][sample(sum(idx2), sum(idx2) * 0.75)]
第三个是
idx3 <- !idx1 & !idx2
probs <- (n[idx3] - 5) / 10 * (0.75 - 0.25) + 0.25
ss3 <- n[idx3][sapply(probs, function(p) sample(c(TRUE, FALSE), 1, prob = c(p, 1 - p)))]
其中probs
是n[idx3]
的每个元素的线性插值概率。然后,使用sapply
为每个元素绘制TRUE
(获取)或FALSE
(不获取)。
答案 1 :(得分:0)
prob
中的sample()
选项为要采样的向量提供了几率的概率。
https://www.rdocumentation.org/packages/base/versions/3.5.2/topics/sample
因此,如果我理解正确的问题,您想要的是仅对<5的25%的值进行采样,对于> 75的值仅对75%的值进行采样,依此类推。
然后您必须使用n
参数
如文档所述
n 正数,即要选择的项目数。参见“详细信息”。
您可以在其中输入所需样本的百分比乘以样本向量的长度。
对于最后一个示例,您可以添加一个统一变量,其范围从.25到.75 runif()
希望这会有所帮助!