sqlite3脚本中使用变量_在双变量分布中使用蒙特卡罗模拟

智力(以IQ衡量)能有效地预测工作成功吗?

对于智商高于平均水平的员工,他/她的表现高于平均水平的概率是多少呢?研究表明智商和成功之间的相关性为0.5。表现和智商都是正态分布的。

在这篇文章中,我们将使用蒙特卡罗模拟来回答这个问题。我们将探讨联合概率分布、相关性和双变量正态分布的概念。

联合概率分布

解决这个问题最重要的想法是理解联合概率分布的概念。在这种情况下,我们希望计算“成功(Success)”和“智商(IQ)”的联合概率分布函数(PDF)。要了解联合PDF,我们可以采用最简单的投币方式。假设我们有2个硬币,我们一个接一个地抛掷它们。每次抛掷都是Bernoulli trail ,具有伯努利分布。硬币投掷的联合概率密度函数定义了每对结果的概率,如下所示。

8888c2227ebdc97ce46fa7b99d026dae.png

抛硬币的联合概率分布

计算“成功”和“智商”的联合PDF文件有点复杂,因为这些变量是连续的。但是你可以想象这样一种情况,你想计算“成功”的概率在一个特定的范围内,而“智商”在另一个范围内。作为一个例子,你可以用如下表格计算“成功”和“智商”(另外注意:这两个变量的比例是任意的)。

22ffb365f37333da0c0142565cf3b1ce.png

如果我们能够生成上表,我们将能够计算出高于平均水平的“智商”人的成功程度。但在我们做到这一点之前,我们必须理解相关性和/或协方差的概念。

相关性和协方差

在上面抛硬币的例子中,投掷次数是独立的。投掷2和投掷1没有关系。因此,当我们把正面(head)看成结果1时,我们得到正面(head)或反面(tail)的概率是相等的。在这种情况下,“成功”和“智商”的变量是相关的。关于成功和智商之间的关系有很多研究。一些研究表明相关性高,一些研究表明相关性低。这里我们坚持0.5的高相关性一些研究已经把相关性降低到0.3。

此外,我们假设“成功”和“智商”都是正态分布的。智商按定义是正态分布的。Success可能不是。许多组织使用正态曲线来评价他们的员工,但是在现实世界中,“成功”可能不是正态分布的。在我们的例子中,我们假设成功也是正态的。由于我们两个变量都是正态分布,所以我们知道联合概率分布为双变量正态分布或双变量高斯分布。

双变量正态分布

如果X和Y是两个正态分布的随机变量。他们的双变量正态分布的联合PDF由下式给出:

8dd36460a6b1360df7019f4bd4c19d5a.png

其中ρ是相关系数。

相关性

让我们来探讨一下“成功”和“智商”是相互独立的。在这种情况下相关性是零。在下面的图表中,观察PDF在x-y, x-z和y-z平面上的投影。x投影,y投影是正态分布。而z投影是圆形等高线图。

a6864b05740f7e7667a72fcdba4e42db.png

PDF with = 0

查看地址:https://plot.ly/create/?fid=csaurav:6

Z的投影非常清晰地展示了X和y的独立性,轮廓椭圆沿着X和y轴是圆形和对称的。

74e592c3463d485b3041d871f39311b7.png

Projection of the PDF along XY plane

如果“成功”和“智商”高度相关 - 比如ρ= 0.9,我们应该观察到一个细长的椭圆,其轴倾斜45度。以下几个图表演示了“成功”和“智商”高度相关的情况。

d7d9e596bc0db5ec7de0eeb32b8d9f48.png

PDF with = .9

查看地址:https://plot.ly/create/?fid=csaurav:12
423b91a928903d4a26a2e5eabff3a067.png

Projection of the PDF along XY plane

使用蒙特卡罗模拟计算概率

下图的相关性为0.5,显示了我们感兴趣的区域。为了计算概率,我们需要在我们感兴趣的区域内计算PDF下的volume。

c407902bd95c4297972e3d956f2109bb.png

使用Python中的numpy计算新员工成功的概率实际上非常简单。我们将使用函数numpy .random.multivariate_normal()。由于此函数接受协方差作为参数,我们必须将相关性转换为协方差矩阵。如果我们假设IQ和Success的方差均为1(任何其他关于方差的假设都会给出相同的结果)。协方差矩阵与相关矩阵相同。我们使用该函数绘制10000个“成功”和“智商”值。假设两个变量均值为零,相关系数为0.5。

下面的代码应该给出大约0.67的结果。我们的新员工表现优于平均水平的概率比我们对“智商”随机选择过程的预期高出约17%。Python代码如下:

1da044d5b54042cb6232a091a5aff5ff.png

在Python中创建一个双变量正态PDF图

Python完整代码如下:

# importsimport plotlyimport plotly.plotly as pyimport plotly.graph_objs as gofrom plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplotimport numpy as np# setup plotly credentialsplotly.tools.set_credentials_file(username='csaurav', api_key='')value_range = 2xx = np.sort(np.random.normal(0, 1, 300)) # draw xx from a normal distribution yy = np.sort(np.random.normal(0, 1, 300)) # drwa yy from a normal distributionx,y=np.meshgrid(xx, yy)mu_x = np.mean(xx)sd_x = np.std(xx)mu_y = np.mean(yy)sd_y = np.std(yy)rho = 0.5 # the expected correlation# the formula to generate the pdf given X, Yz = ((np.exp(-(1 / (2 * (1 - rho ** 2)))*(((x - mu_x) / sd_x) ** 2 + ((y - mu_y) / sd_y) ** 2  - 2 * rho * (x - mu_x) * (y - mu_y)/(sd_x * sd_y)))) / (2 * np.pi * sd_x * sd_y * np.sqrt(1 - rho ** 2)))init_notebook_mode(connected=True)colorscale = [[0.0, 'rgb(20,29,67)'], [0.1, 'rgb(28,76,96)'], [0.2, 'rgb(16,125,121)'], [0.3, 'rgb(92,166,133)'], [0.4, 'rgb(182,202,175)'], [0.5, 'rgb(253,245,243)'], [0.6, 'rgb(230,183,162)'], [0.7, 'rgb(211,118,105)'], [0.8, 'rgb(174,63,95)'], [0.9, 'rgb(116,25,93)'], [1.0, 'rgb(51,13,53)']]textz = [['IQ: '+'{:0.5f}'.format(x[i][j])+'
Success: '+'{:0.5f}'.format(y[i][j]) + '
z: '+'{:0.5f}'.format(z[i][j]) for j in range(z.shape[1])] for i in range(z.shape[0])]trace1 = go.Surface( x=tuple(x), y=tuple(y), z=tuple(z), colorscale=colorscale, text=textz, hoverinfo='text',)axis = dict( showbackground=True, backgroundcolor="rgb(230, 230,230)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值