拉丁超立方抽样法代码
时间: 2024-09-21 18:04:16 浏览: 55
拉丁超立方抽样(LHS,Latin Hypercube Sampling)是一种常用的统计抽样技术,用于模拟复杂系统中的输入变量分布。它将样本空间划分为相等大小的小立方体,每个维度上选择不同的点作为样本,使得每个样本在一个维度上均匀分布在区间内,而各个维度之间又是独立的。
以下是使用Python中的Scipy库实现拉丁超立方抽样的简单代码示例:
```python
from scipy.stats import quniform
import numpy as np
def latin_hypercube(n_samples, n_variables, variable_ranges):
"""
使用拉丁超立方抽样生成随机样本
:param n_samples: 抽取的样本数
:param n_variables: 输入变量的数量
:param variable_ranges: 变量范围列表,如 [(a1, b1), (a2, b2), ...]
:return: 返回形状为 (n_samples, n_variables) 的随机矩阵
"""
lhs = np.zeros((n_samples, n_variables))
# 分配每个维度的均匀分布范围
for i in range(n_variables):
lhs[:,i] = quniform(*variable_ranges[i], n_samples)
return lhs
# 示例:5个样本,2个变量,范围分别为[0, 10] 和 [0, 20]
ranges = [(0, 10), (0, 20)]
samples = latin_hypercube(5, 2, ranges)
```
在这个例子中,`quniform(a, b, size)`函数生成了指定大小的均匀分布数组,其值介于`a`和`b`之间。
阅读全文