蒙特卡洛模拟逻辑回归的python实例
时间: 2023-10-19 20:36:25 浏览: 120
python实现逻辑回归的示例
蒙特卡洛模拟逻辑回归是一种用于估计逻辑回归模型参数的方法。下面是一个使用Python实现蒙特卡洛模拟逻辑回归的示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成模拟数据
np.random.seed(0)
n = 100 # 样本数量
x = np.random.normal(0, 1, n)
y = np.random.binomial(1, 1 / (1 + np.exp(-3 * x)), n)
# 蒙特卡洛模拟逻辑回归
n_iterations = 1000 # 迭代次数
beta_samples = np.zeros((n_iterations, 2)) # 存储参数样本
for i in range(n_iterations):
# 随机初始化参数
beta = np.random.normal(0, 1, 2)
# Metropolis-Hastings算法进行参数采样
for j in range(100):
# 更新第一个参数
beta_new = beta + np.random.normal(0, 0.1, 2)
p_ratio = np.exp(np.sum(y * (beta_new[0] + beta_new[1] * x)) - np.sum(y * (beta[0] + beta[1] * x)))
u = np.random.uniform()
if p_ratio > u:
beta = beta_new
# 更新第二个参数
beta_new = beta + np.random.normal(0, 0.1, 2)
p_ratio = np.exp(np.sum(y * (beta[0] + beta_new[1] * x)) - np.sum(y * (beta[0] + beta[1] * x)))
u = np.random.uniform()
if p_ratio > u:
beta = beta_new
beta_samples[i] = beta
# 绘制参数估计结果
plt.figure(figsize=(10, 6))
plt.scatter(beta_samples[:, 0], beta_samples[:, 1], alpha=0.5)
plt.xlabel('Intercept')
plt.ylabel('Slope')
plt.title('Monte Carlo Simulation of Logistic Regression')
plt.show()
```
上述代码中,我们首先生成了一个模拟数据集,然后使用蒙特卡洛模拟的方法估计逻辑回归模型的参数。通过Metropolis-Hastings算法进行参数采样,并将参数样本绘制在散点图上。这样可以得到参数估计的分布情况,用于分析模型的不确定性。
请注意,这只是一个简单的示例,实际应用中可能需要进行更多的优化和改进。
阅读全文