概述
def RHC(U,X,n): # 输入列表
'''
U是序号
X是规模测度
n是要抽的样本量
'''
import numpy as np
import pandas as pd
import random
X = np.array(X)
N = len(X) # 计算总体数量
Can = pd.DataFrame(np.vstack((U,X))).T # 合并成数据框
M = [] # 每个群中样本个数
for i in range(n):
if i <= n - N%n - 1:
M.append(N//n)
else:
M.append(N//n + 1)
# 打乱原有顺序
random.shuffle(U)
Group = []
Result = []
for i in range(n):
x = Can.iloc[U[0:M[i]],:].values # 选中分群
Group.append(x[:,0])
pk = x[:,1]/np.sum(x[:,1])
np.random.seed()
Result.append(int(x[np.random.choice(M[i],1,p = pk),0])) # 按概率抽样
U[0:M[i]] = []
print('抽取结果:',Result)
return(Group,Result)
# RHC随机分群
N = 30 # 总体数量
n = 6 # 抽取样本单元个数
U = list(range(N)) # 乡的序号
X = [42,65,52,40,75,65,45,50,43,54,49,53,32,22,37,51,30,39,47,41,43,45,121,32,443,54,54,65,67,76]
RHC(U,X,n)
结果:
抽取结果: [1, 5, 20, 29, 24, 7]
Out[467]:
([array([ 1, 9, 25, 22, 21]),
array([ 5, 16, 15, 10, 3]),
array([20, 4, 8, 0, 28]),
array([19, 23, 27, 11, 29]),
array([13, 24, 12, 6, 18]),
array([14, 2, 26, 7, 17])],
[1, 5, 20, 29, 24, 7])
最后
以上就是高贵蜜蜂为你收集整理的Python RHC随机分群抽样的全部内容,希望文章能够帮你解决Python RHC随机分群抽样所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复