如何从 R 中增加大小的数据集中随机抽取样本?

How to take random samples from data set with increasing size in R?

我正在使用 R(该程序的新手)并负责从现有数据集 (n=1412) 中随机抽取样本,但随着大小的增加(即 n=10....n=1000)和绘制 (x) 增加的样本量与 (y) 两个变量之和的比例之间的关系(详见下文)。

我感兴趣的两个变量编码为[0"No", 1"Yes"]。我感兴趣的是说 "Yes" 的人在总样本量中所占的比例(即当 N=20 时,Y= 5/20 或 0.25)。

我知道如何为任何单一尺寸制作随机样本并绘制关系(参见下面的代码)。我不知道该怎么做,是制作多个不同大小的样本 (n=10:1000),然后将它们绘制在 x 轴上,并在 y 轴上绘制相应的比例。

datasubset1<-data[sample(nrow(data), 100, replace= FALSE), ]
Vars1<-data$pwd
Vars2<-data$sendwd

y<-(sum(data$pwd + data$sendwd)/100)

x<-100

plot(x,y,col="red", type= "p", main = "Sample Size Effects on Proportion", ylab = "Proportion", xlab= "Sample Size")

当我输入代码时,当样本量为100时,我显然得到了1个数据点(0.46);这个我可以轻松绘制。

但是,我需要绘制从 n=10 到 n=1000 (x) 的样本大小和 Vars1+Vars2/n (y) 的比例。

首先我们需要创建一些数据:

set.seed(42)
n <- 1412
dat <- data.frame(pwd=rbinom(n, 1, .25), sendwd=rbinom(n, 1, .25))

dat 是你的数据集。我们正在生成随机 1 和 0,1 的概率为 0.25。您只对两列感兴趣,因此如果您的真实数据有两列以上,只需提取您需要的两列。现在获取样本的步骤就是上面显示的步骤:

smpl <- sample.int(n, 10)
dat.s10 <- dat[smpl, ]
sum(dat.s10)/10

现在我们创建一个样本量向量并嵌套上述命令以使用 sapply():

size <- c(10, 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000)
results <- sapply(size, function(x) sum(dat[sample.int(n, x), ])/x)
plot(size, results, type="l")