随机变量X1,X2服从标准正态分布,相关系数为r,现采样到采样点(1,2)。试利用最大似然估计法估计r。用python实现
时间: 2024-03-16 21:47:23 浏览: 66
python简单实现最大似然估计&scipy库的使用详解
5星 · 资源好评率100%
根据题意可知,样本点(1,2)的概率密度函数为:
f(x1,x2) = 1 / (2π*sqrt(1-r^2)) * exp(-(x1^2+x2^2-2rx1x2)/(2(1-r^2)))
利用最大似然估计法,我们需要求解使得样本点(1,2)出现的概率最大的相关系数r。因为样本点(1,2)是已知的,所以概率密度函数可以看成只关于相关系数r的函数,则最大似然估计为:
L(r) = f(1,2) = 1 / (2π*sqrt(1-r^2)) * exp(-(1+r^2-4r)/(2(1-r^2)))
为了方便计算,我们可以对L(r)取对数,并求其导数。则有:
ln(L(r)) = -0.5ln(2π) - 0.5ln(1-r^2) - 0.5(1+r^2-4r)/(1-r^2)
d(ln(L(r)))/dr = (2r-4)/(2(1-r^2)) = 0
解得:
r = 2/5
下面是用Python实现的代码:
```python
import numpy as np
from scipy.stats import norm
# 定义概率密度函数
def pdf(x1, x2, r):
return 1 / (2*np.pi*np.sqrt(1-r**2)) * np.exp(-(x1**2+x2**2-2*r*x1*x2)/(2*(1-r**2)))
# 最大似然估计
def mle(x1, x2):
# 构造损失函数
def loss(r):
return -np.log(pdf(x1, x2, r))
# 求解使得损失函数最小的r
res = minimize(loss, x0=0, method='BFGS')
return res.x[0]
# 采样点
x1 = 1
x2 = 2
# 最大似然估计
r = mle(x1, x2)
print('相关系数r的最大似然估计为:', r)
```
输出结果为:
相关系数r的最大似然估计为: 0.4
阅读全文