我有两个3x3矩阵p和q, p是概率矩阵。我想根据P在不同样本量下的概率在Q中找到随机样本
例如,我想基于p[1,]找到Q[1,]中大小为10的样本,基于p[2,]找到Q[2,]中大小为6的样本,基于p[3,]找到Q[3,]中大小为3的样本
下面是我的代码:P=matrix(c(0.5,0.3,0.2,0.7,0.2,0.1,0,0.2,0.8),ncol=3,nrow=3,byrow=T)
Q=matrix(c(50,100,150,0,4,200,0,10,600),ncol=3,nrow=3,byrow=T)
samplesize=c(10,6,3)
for(i in samplesize){
for(x in 1:3){
p=P[x,]
s=sample(Q[x,],size=i,p=p,replace=T)}
print(s)}
我试图运行代码,这里是我的结果,这是错误的,因为样本不是从相应的行中选择的,要详细说明,值可以选择在第一个结果只能是50,100和150,600不应该选择。
[1] 10 600 600 600 600 600 600 600 600 600
[1] 600 10 600 600 600 600
[1] 600 600 600
谁能帮我找出问题在我的代码,并帮助我?非常感谢!
应该只需要一个循环。尝试——
#To store the result
result <- vector('list', length(samplesize))
for(i in seq_along(samplesize)){
#get value from i'th row in Q,
#probability from i'th row in P
#and sample size from i'th value in samplesize
result[[i]] = sample(Q[i,],size=samplesize[i],p=P[i, ],replace=T)
}
result