用python实现bootstrap采样并得到置信区间为95%的值
时间: 2024-02-24 16:58:41 浏览: 139
python实现采样定理
好的,我来给您讲一下如何用 Python 实现 bootstrap 采样并得到置信区间为 95% 的值。
首先,我们需要导入相关的库:
```python
import numpy as np
from scipy.stats import norm
```
然后,我们定义一个函数来进行 bootstrap 采样:
```python
def bootstrap_sample(data, n):
"""
data: 原始数据
n: 采样次数
"""
bootstrap_samples = []
for i in range(n):
sample = np.random.choice(data, size=len(data), replace=True)
bootstrap_samples.append(sample)
return bootstrap_samples
```
这个函数接受原始数据和采样次数作为参数,返回一个包含所有 bootstrap 采样结果的列表。
接下来,我们定义一个函数来计算样本的统计量:
```python
def statistic(data):
"""
data: 样本数据
"""
return np.mean(data)
```
这个函数接受一个样本数据作为参数,返回样本的平均值。
然后,我们使用 bootstrap 采样得到一组样本,并计算这组样本的统计量:
```python
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
bootstrap_samples = bootstrap_sample(data, 1000)
statistics = np.array([statistic(sample) for sample in bootstrap_samples])
```
这里我们使用了一个包含 10 个数字的数据集,并进行了 1000 次 bootstrap 采样。然后,我们将每个样本的统计量存储到一个数组中。
接下来,我们可以使用这个数组来计算置信区间。我们可以使用正态分布的累积分布函数(cdf)来计算置信区间的边界:
```python
lower_bound = norm.ppf(0.025, loc=np.mean(statistics), scale=np.std(statistics))
upper_bound = norm.ppf(0.975, loc=np.mean(statistics), scale=np.std(statistics))
```
这里,我们使用了 `norm.ppf` 函数来计算正态分布的累积分布函数的逆函数,即给定概率、均值和标准差,计算对应的分位数。这里我们使用了 0.025 和 0.975 作为分位数,因为我们希望得到置信区间为 95%。
最后,我们可以打印出得到的置信区间:
```python
print(f"95%置信区间为: ({lower_bound:.2f}, {upper_bound:.2f})")
```
完整的代码如下:
```python
import numpy as np
from scipy.stats import norm
def bootstrap_sample(data, n):
"""
data: 原始数据
n: 采样次数
"""
bootstrap_samples = []
for i in range(n):
sample = np.random.choice(data, size=len(data), replace=True)
bootstrap_samples.append(sample)
return bootstrap_samples
def statistic(data):
"""
data: 样本数据
"""
return np.mean(data)
data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
bootstrap_samples = bootstrap_sample(data, 1000)
statistics = np.array([statistic(sample) for sample in bootstrap_samples])
lower_bound = norm.ppf(0.025, loc=np.mean(statistics), scale=np.std(statistics))
upper_bound = norm.ppf(0.975, loc=np.mean(statistics), scale=np.std(statistics))
print(f"95%置信区间为: ({lower_bound:.2f}, {upper_bound:.2f})")
```
希望这个例子能够帮助您理解如何使用 Python 实现 bootstrap 采样并计算置信区间。
阅读全文