【问题标题】:Simulating correlated multivariate data模拟相关的多元数据
【发布时间】:2013-10-04 09:56:33
【问题描述】:

我正在尝试从历史飓风数据中生成综合认识。在我的问题中,飓风通过一组描述符参数化(即风暴大小、风暴强度、风暴速度和风暴方向——所有这些都参考了飓风穿过某些海岸线时的值)。这些实现将用于对飓风产生的洪水进行概率预测。假设是历史飓风数据来自一些潜在的多元分布。这个想法是从这个底层分布中抽取额外的样本(保留矩、相关性、物理界限,如正风暴大小等)。

我已经实施了一种最近邻高斯色散方法,该方法是根据 Taylor 和 Thompson 开发的技术进行修改的 - 发表在 1986 年的计算统计和数据分析中。我想看看是否有更好的方法来做到这一点。

数据样本(1940-2005 年墨西哥湾飓风):

def TT_alg(data_list, sample_size, num_neighbors=5, metric=2):

    dummy_list = []
    dimension = len(data_list[0])

    # transform the data to the interval [0,1]
    aa = numpy.array([(max([row[i] for row in data_list]) - min([row[i] for row in   data_list])) for i in range(dimension)])
    bb = numpy.array([min([row[j] for row in data_list]) for j in range(dimension)])

    data_array = numpy.array(data_list)
    data_array_normed = (data_array - bb) / aa

    # setup nearest neighbor tree
    tree = scipy.spatial.KDTree(data_array_normed)

    # perform nearest neighbor random walk
    for ijk in range(sample_size):

        sample = random.choice(data_array_normed)

        kNN = tree.query(sample, k=num_neighbors, p=metric)
        x_mu = numpy.array([numpy.average([data_array_normed[i][j] for i in kNN[1]]) for j in range(dimension)])
        x_si = numpy.array([numpy.std([data_array_normed[i][j] for i in kNN[1]]) for j in range(dimension)])
        s_gs = [numpy.random.normal(mu, si) for mu, si in zip(x_mu, x_si)]
        dummy_list.append(s_gs)

    dummy_array = numpy.array(dummy_list)

    # go back to original scale
    data_array_unnormed = (dummy_array * aa) + bb

    return data_array_unnormed.tolist()

neighbour_size=5 和 distance_metric=Euclidean 的示例。

【问题讨论】:

  • 将此问题发布到 Cross-Validated(用于统计和机器学习的 SE 站点)可能会带来更好的运气。你也可以试试this paper

标签: python simulation gaussian nearest-neighbor kernel-density


【解决方案1】:

您的数据几乎肯定不是高斯的,速度、强度和大小都必须是正数,并且大小和强度明显偏斜。对数正态分布是合理的。我建议在尝试分布拟合之前对数据进行对数转换。

尝试捕获相关结构(肯定存在于您发布的数据中!)的一种方法是估计均值 M 和方差/协方差矩阵 V对数转换的数据。然后使用Cholesky decomposition分解方差/协方差矩阵得到V = transpose(C) C。如果 Z 是独立法线向量,则 X = M + transpose(C) Z 将是具有所需均值和方差/协方差结构的相关法线向量。对 X 的元素求幂将产生模拟结果。结果应避免伪影,例如上一张图中可见的负风暴大小。详情请见this paper

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-23
    • 2021-05-24
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    相关资源
    最近更新 更多