scipy.stats实现基于概率的抽样
时间: 2024-09-06 08:02:35 浏览: 63
`scipy.stats`模块提供了一些高级的统计函数,其中包括一些用于进行概率抽样的工具。其中最常用的是`rvs`(Random Variate Sampling)函数,它可以根据各种内置的概率分布生成随机样本。下面是一些示例:
1. **均匀分布**:对于简单的均匀分布,可以直接使用`np.random.uniform`,但如果想要更通用的方式,可以使用`scipy.stats.uniform.rvs`:
```python
from scipy.stats import uniform
uniform_sample = uniform.rvs(loc=0, scale=1, size=n_samples, random_state=seed)
```
2. **正态分布(高斯分布)**:`scipy.stats.norm`对应于标准正态分布,`scipy.stats.norm.rvs`能生成指定均值和方差的随机数:
```python
from scipy.stats import norm
normal_sample = norm.rvs(mean, std_dev, size=n_samples, random_state=seed)
```
3. **泊松分布**:`scipy.stats.poisson`可用于生成泊松分布的随机样本:
```python
from scipy.stats import poisson
poisson_lambda = 5 # 指定参数λ
poisson_sample = poisson.rvs(poisson_lambda, size=n_samples, random_state=seed)
```
4. **分层抽样**:如果数据包含分类变量,你可以先对数据进行分组,然后在每个组内应用上述随机数生成方法:
```python
groups = data.groupby('category')
samples_in_each_group = groups.apply(lambda group: group[...].sample(n=per_category, replace=True, random_state=seed))
```
注意在使用这些函数时,`size`参数指定了生成的随机样本的数量,`random_state`用于保证每次运行结果的一致性。
阅读全文