Monte Carlo 向量数据集的模拟
Monte Carlo simulation for a data set of vectors
我有一组 N 个对象的 (x,y,z,u,v,w) 向量。
我想做的是通过使用 Monte Carlo 模拟克隆这些对象来扩展此数据集。
我想知道这是否合理。如果是这样,如何在 Python 中做到这一点,如果不是,替代方案是什么。
+)我习惯于使用向量分量的不确定值,并进行某种多元分布提取,基本上得到“克隆数据”,即代表不确定性的数据。在这种情况下,我没有不确定性,所以我试图获得一个合成分布。
为了能够使用 MC 模拟创建新数据,您需要有一些东西可以模拟。我想从你的问题中并不清楚应该如何进行这种模拟。如果您的意思是您应该创建新数据,这些新数据是现有数据的其他排列,我想您可以在某种意义上称呼该 MC。这可以通过从每个向量中随机选择一个元素来实现。代码示例(未经测试或优化,但在概念上可行):
import numpy as np
data = ...
n_new_data
new_data = np.full((n_new_data, len(data)), np.nan)
for i, vec in enumerate(data):
for j in range(n_new_data):
new_data[j, i] = vec[np.random.random_integers(len(vec)-1)]
如果您只有 data
可以使用,那么这样做可能有点合理。另一种更复杂但更现实的是,如果变量不是独立的,选项是计算每个样本中变量之间的相关性,然后根据这种相关性生成新数据。
我有一组 N 个对象的 (x,y,z,u,v,w) 向量。
我想做的是通过使用 Monte Carlo 模拟克隆这些对象来扩展此数据集。
我想知道这是否合理。如果是这样,如何在 Python 中做到这一点,如果不是,替代方案是什么。
+)我习惯于使用向量分量的不确定值,并进行某种多元分布提取,基本上得到“克隆数据”,即代表不确定性的数据。在这种情况下,我没有不确定性,所以我试图获得一个合成分布。
为了能够使用 MC 模拟创建新数据,您需要有一些东西可以模拟。我想从你的问题中并不清楚应该如何进行这种模拟。如果您的意思是您应该创建新数据,这些新数据是现有数据的其他排列,我想您可以在某种意义上称呼该 MC。这可以通过从每个向量中随机选择一个元素来实现。代码示例(未经测试或优化,但在概念上可行):
import numpy as np
data = ...
n_new_data
new_data = np.full((n_new_data, len(data)), np.nan)
for i, vec in enumerate(data):
for j in range(n_new_data):
new_data[j, i] = vec[np.random.random_integers(len(vec)-1)]
如果您只有 data
可以使用,那么这样做可能有点合理。另一种更复杂但更现实的是,如果变量不是独立的,选项是计算每个样本中变量之间的相关性,然后根据这种相关性生成新数据。