我试图从截断正态分布中,用树干.rvs. 截断不是标准的:我试图从右边被0截断的N(x_i^T*beta, 1/lambda_i)
中提取。
我使用了以下代码:
b0 = np.dot(1/lambd[np.where(y ==0)],(0-meanZ[np.where(y ==0)]))
Z[np.where(y ==0)] = truncnorm.rvs(a = -np.inf, b = 0, loc = meanZ[np.where(y ==0)], scale = 1/lambd[np.where(y ==0)])
我的两个问题是:
-我仍然得到Z的正值
-我也得到-np.inf文件值会弄乱代码的其余部分
例如,使用b0= -2445.6
loc = [ -4.262042 -11.300968 -5.482057 -5.660079 -5.586314 3.926029
-3.998386 -7.042979 -9.910377 -1.485213 -5.607546 -3.452188
-3.808936 -3.890414 -6.015614 -4.298134 -6.732967 -7.896627
-10.468604]
而且
scale = [1.416786e+01 9.202257e+01 2.927436e+00 1.769420e+01 2.318473e+00
1.053422e+03 8.480848e-01 1.023893e+00 1.837827e+00 1.849986e+01
6.647380e+00 4.088136e+01 1.860682e+00 1.490134e+01 2.811685e+00
3.485057e+00 1.108821e+00 1.344376e+01 1.463855e+00]
由参数
a
和b
设置的形状根据标准正态分布(平均值0,方差1)定义。你知道吗您想要将分布
N(mu, sigma**2)
限制为负值;也就是说,您想要N(mu, sigma**2)
<;0。使用正态分布的属性将其写成:或者
所以必须将
b
设置为-mu/sigma
。你知道吗下面是一个简短的脚本来演示:
脚本生成以下绘图:
相关问题 更多 >
编程相关推荐