20 随机抽样
20.1 Inverse CDF Transformation(逆CDF变化法)
假设x的概率密度函数为f(x),累计分布函数CDF为F(x)。我们可以通过如下步骤得到非均匀分布的随机样本。
图4.1: …
20.2 accept-reject sampling method(接受-拒绝抽样)
基本思想:假设p(x)不可以直接抽样,那么找一个可以直接抽样的分布,称为建议分布(proposal distribution) 。假设q(x)是建议分布的概率密度函数,并且有 kq(x),k>0总在p(x)的上方。如图:
图20.1: …
具体算法如下:
图20.2: …
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif'] = ['FangSong']
plt.rcParams['axes.unicode_minus'] = False
def p(x): # 假设f1为我们想要进行抽样的分布
return 0.3/np.sqrt(np.pi*2)*np.exp(-(x+2)**2/2) + 0.7/np.sqrt(np.pi*2)*np.exp(-(x-4)**2/2)
def q(x,a,b): #定义建议分布q(x)
return 1/(b-a)
#初始设置
n=int(1e+6)
k=6
u = np.random.uniform(0,1,n)
z = np.random.uniform(-10,10,n)
#数据准备
data = {
'u':u,
'z':z,
'pz':p(z),
"kqz":k*q(z,-10,10)
}
df=pd.DataFrame(data)
df = df[df.u < df.pz/df.kqz]
z = df.loc[:,'z']
x = np.arange(-10,10,0.1)
y = p(x)
plt.plot([-10, 10], [k*1/10,k*1/10], label='建议分布') # 画出建议分布的图像
plt.plot(x,y,"b-")
plt.hist(z, bins=200, density=True,label='抽样数据', color='green')## (array([8.17626069e-05, 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
## 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, 8.17626069e-05,
## 1.63525214e-04, 8.17626069e-05, 1.63525214e-04, 0.00000000e+00,
## 0.00000000e+00, 3.27050428e-04, 1.63525214e-04, 4.90575642e-04,
## 1.06291389e-03, 9.81151283e-04, 1.14467650e-03, 1.38996432e-03,
## 1.55348953e-03, 1.47172693e-03, 2.69816603e-03, 3.51579210e-03,
## 4.08813035e-03, 3.18874167e-03, 4.82399381e-03, 6.54100856e-03,
## 6.29572073e-03, 9.56622501e-03, 1.12014772e-02, 1.08744267e-02,
## 1.38178806e-02, 1.73336727e-02, 1.85601118e-02, 2.29752926e-02,
## 2.44470195e-02, 2.46923073e-02, 3.24597550e-02, 3.58937845e-02,
## 3.68749357e-02, 4.56235347e-02, 5.48627093e-02, 5.44538962e-02,
## 6.14854804e-02, 6.40201212e-02, 6.64729994e-02, 7.26051950e-02,
## 8.15990817e-02, 9.07564937e-02, 9.08382563e-02, 9.13288320e-02,
## 1.00731532e-01, 1.04329086e-01, 1.06373152e-01, 1.16593478e-01,
## 1.13895311e-01, 1.21662759e-01, 1.16593478e-01, 1.14549412e-01,
## 1.18392255e-01, 1.19455169e-01, 1.25423839e-01, 1.15694089e-01,
## 1.07844879e-01, 1.15530564e-01, 1.10461282e-01, 1.03347935e-01,
## 1.01303870e-01, 9.90145170e-02, 8.91212416e-02, 8.55236869e-02,
## 8.49513486e-02, 7.29322454e-02, 7.10517054e-02, 6.28754447e-02,
## 6.09949048e-02, 5.51079971e-02, 5.14286798e-02, 4.76675999e-02,
## 4.07995409e-02, 3.84284253e-02, 3.47491080e-02, 2.91892507e-02,
## 2.81263368e-02, 2.19123787e-02, 1.92142126e-02, 1.76607231e-02,
## 1.43902188e-02, 1.35725928e-02, 9.81151283e-03, 9.32093719e-03,
## 6.94982159e-03, 6.13219552e-03, 6.37748334e-03, 5.06928163e-03,
## 4.98751902e-03, 3.02521646e-03, 5.39633206e-03, 3.51579210e-03,
## 3.76107992e-03, 4.25165556e-03, 5.64161988e-03, 6.21395813e-03,
## 7.84921027e-03, 8.42154852e-03, 9.97503805e-03, 1.32455423e-02,
## 1.30002545e-02, 1.58619457e-02, 1.83148240e-02, 2.07677022e-02,
## 2.35476308e-02, 3.13150785e-02, 3.50761584e-02, 4.31706565e-02,
## 4.63593981e-02, 5.41268458e-02, 6.26301569e-02, 6.74541507e-02,
## 8.15173191e-02, 9.15741198e-02, 1.03184410e-01, 1.10788332e-01,
## 1.15939377e-01, 1.32864236e-01, 1.42348699e-01, 1.54694852e-01,
## 1.68839783e-01, 1.79468922e-01, 2.00481912e-01, 2.11683389e-01,
## 2.15689757e-01, 2.26237133e-01, 2.31306415e-01, 2.44143144e-01,
## 2.57715737e-01, 2.55589909e-01, 2.70879517e-01, 2.68917214e-01,
## 2.82980383e-01, 2.78483439e-01, 2.77093475e-01, 2.78892252e-01,
## 2.76766425e-01, 2.79628116e-01, 2.67200200e-01, 2.50684153e-01,
## 2.49703002e-01, 2.33023430e-01, 2.40218539e-01, 2.23048392e-01,
## 2.05796482e-01, 1.98764897e-01, 1.81267700e-01, 1.72519101e-01,
## 1.64506365e-01, 1.43902188e-01, 1.37933518e-01, 1.25260314e-01,
## 1.15530564e-01, 1.03020885e-01, 9.30458467e-02, 8.02908800e-02,
## 7.62845123e-02, 6.29572073e-02, 5.73155875e-02, 5.06110537e-02,
## 4.40700451e-02, 3.66296479e-02, 2.96798263e-02, 2.68998977e-02,
## 2.55099334e-02, 1.83148240e-02, 1.61889962e-02, 1.48807945e-02,
## 1.21826284e-02, 1.06291389e-02, 7.35863463e-03, 6.54100856e-03,
## 6.29572073e-03, 4.33341817e-03, 3.51579210e-03, 3.51579210e-03,
## 2.45287821e-03, 2.20759039e-03, 1.47172693e-03, 4.90575642e-04,
## 8.99388676e-04, 5.72338249e-04, 5.72338249e-04, 1.63525214e-04,
## 3.27050428e-04, 3.27050428e-04, 2.45287821e-04, 2.45287821e-04,
## 8.17626069e-05, 2.45287821e-04, 0.00000000e+00, 8.17626069e-05]), array([-6.44277106, -6.369366 , -6.29596095, -6.2225559 , -6.14915084,
## -6.07574579, -6.00234074, -5.92893568, -5.85553063, -5.78212558,
## -5.70872052, -5.63531547, -5.56191042, -5.48850536, -5.41510031,
## -5.34169526, -5.2682902 , -5.19488515, -5.1214801 , -5.04807504,
## -4.97466999, -4.90126494, -4.82785988, -4.75445483, -4.68104978,
## -4.60764472, -4.53423967, -4.46083461, -4.38742956, -4.31402451,
## -4.24061945, -4.1672144 , -4.09380935, -4.02040429, -3.94699924,
## -3.87359419, -3.80018913, -3.72678408, -3.65337903, -3.57997397,
## -3.50656892, -3.43316387, -3.35975881, -3.28635376, -3.21294871,
## -3.13954365, -3.0661386 , -2.99273355, -2.91932849, -2.84592344,
## -2.77251839, -2.69911333, -2.62570828, -2.55230323, -2.47889817,
## -2.40549312, -2.33208806, -2.25868301, -2.18527796, -2.1118729 ,
## -2.03846785, -1.9650628 , -1.89165774, -1.81825269, -1.74484764,
## -1.67144258, -1.59803753, -1.52463248, -1.45122742, -1.37782237,
## -1.30441732, -1.23101226, -1.15760721, -1.08420216, -1.0107971 ,
## -0.93739205, -0.863987 , -0.79058194, -0.71717689, -0.64377184,
## -0.57036678, -0.49696173, -0.42355668, -0.35015162, -0.27674657,
## -0.20334151, -0.12993646, -0.05653141, 0.01687365, 0.0902787 ,
## 0.16368375, 0.23708881, 0.31049386, 0.38389891, 0.45730397,
## 0.53070902, 0.60411407, 0.67751913, 0.75092418, 0.82432923,
## 0.89773429, 0.97113934, 1.04454439, 1.11794945, 1.1913545 ,
## 1.26475955, 1.33816461, 1.41156966, 1.48497471, 1.55837977,
## 1.63178482, 1.70518987, 1.77859493, 1.85199998, 1.92540504,
## 1.99881009, 2.07221514, 2.1456202 , 2.21902525, 2.2924303 ,
## 2.36583536, 2.43924041, 2.51264546, 2.58605052, 2.65945557,
## 2.73286062, 2.80626568, 2.87967073, 2.95307578, 3.02648084,
## 3.09988589, 3.17329094, 3.246696 , 3.32010105, 3.3935061 ,
## 3.46691116, 3.54031621, 3.61372126, 3.68712632, 3.76053137,
## 3.83393642, 3.90734148, 3.98074653, 4.05415159, 4.12755664,
## 4.20096169, 4.27436675, 4.3477718 , 4.42117685, 4.49458191,
## 4.56798696, 4.64139201, 4.71479707, 4.78820212, 4.86160717,
## 4.93501223, 5.00841728, 5.08182233, 5.15522739, 5.22863244,
## 5.30203749, 5.37544255, 5.4488476 , 5.52225265, 5.59565771,
## 5.66906276, 5.74246781, 5.81587287, 5.88927792, 5.96268297,
## 6.03608803, 6.10949308, 6.18289814, 6.25630319, 6.32970824,
## 6.4031133 , 6.47651835, 6.5499234 , 6.62332846, 6.69673351,
## 6.77013856, 6.84354362, 6.91694867, 6.99035372, 7.06375878,
## 7.13716383, 7.21056888, 7.28397394, 7.35737899, 7.43078404,
## 7.5041891 , 7.57759415, 7.6509992 , 7.72440426, 7.79780931,
## 7.87121436, 7.94461942, 8.01802447, 8.09142952, 8.16483458,
## 8.23823963]), <BarContainer object of 200 artists>)
[1]
SIGNOROVITCH J E. WU E Q. YU A P. 等. Comparative effectiveness without head-to-head trials: a method for matching-adjusted indirect comparisons applied to psoriasis treatment with adalimumab or etanercept[J]. Pharmacoeconomics, 2010, 28: 935-945.