首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中多概率随机样本

R中多概率随机样本
EN

Stack Overflow用户
提问于 2013-06-08 17:35:24
回答 1查看 25.4K关注 0票数 2

我需要从一个列表中拿出一个样本,将他们作为一个控制组分配给一个必须有相似的变量组成的研究。我试图用样例函数在R中这样做,但我不知道如何为每个变量指定不同的概率。假设我有一个具有以下标题的表:

ID名称运动性别

我需要一个有以下竞选属性组成的10个科目的样本:

D2D -> 25% F2F -> 38% TM -> 17% WW -> 21%

这意味着根据我的数据,我有25%的受试者来自门到门运动(D2D),38%来自面对面运动(F2F),等等。

性别构成如下:

男性-> 54% 女性-> 46%

当我得到一个随机抽样的10个受试者,我需要它有一个类似的作文。

我已经搜索了几个小时,我能找到的最接近类似的答案是:taking data sample in R,但是我需要分配一个以上的概率。

我相信,这可以帮助任何想从数据集中获得有代表性的样本的人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-08 19:13:31

听起来你对随机分层样本很感兴趣。您可以使用来自stratsample()包的survey函数来实现这一点。

在下面的例子中,我创建了一些假数据来模拟您拥有的数据,然后定义一个函数来接受随机比例分层随机样本,然后将该函数应用于假数据。

代码语言:javascript
复制
# example data
ndf <- 1000
df <- data.frame(ID=sample(ndf), Name=sample(ndf), 
    Campaign=sample(c("D2D", "F2F", "TM", "WW"), ndf, prob=c(0.25, 0.38, 0.17, 0.21), replace=TRUE),
    Gender=sample(c("Male", "Female"), ndf, prob=c(0.54, 0.46), replace=TRUE))

# function to take a random proportional stratified sample of size n
rpss <- function(stratum, n) {
    props <- table(stratum)/length(stratum)
    nstrat <- as.vector(round(n*props))
    nstrat[nstrat==0] <- 1
    names(nstrat) <- names(props)
    stratsample(stratum, nstrat)
    }

# take a random proportional stratified sample of size 10
selrows <- rpss(stratum=interaction(df$Campaign, df$Gender, drop=TRUE), n=10)
df[selrows, ]
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17002101

复制
相关文章

相似问题

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