统计之都上有人曾给出过一个关于滚雪球抽样的R程序如下:
snow = function (x, size,...){
p = rep(0, ncol(x))
p[sample(dim(x)[1], 1)] = 1
while(sum(p) < size) {
new = colSums(matrix(x[p == 1,], ncol = ncol(x), byrow = T))
all = new + p > 0
if (sum(all) > size) {
pure = which(new - p == 1)
p[sample(pure, size - sum(p))] = 1
} else {
p = as.numeric(all)
}
}
which(p == 1)
}
x = matrix(runif(1000^2), 1000) > 0.7
x = x + t(x) > 0
x = as.numeric(x)
x = matrix(x, 1000)
snow(x, 100)
然后这个程序也确实可以跑出结果。但是我观察发现跑出来的结果好像有问题,通过这种抽样获得的某些对象在邻接矩阵中其实并没有关联,这实际上不符合滚雪球抽样的原则。不知哪位大佬能看一下是这个程序哪里有问题?亦或我理解有误?
原始链接如下:https://d.cosx.org/d/417780-417780/3