【问题标题】:Divided two different distributions in python在python中划分了两个不同的分布
【发布时间】:2020-03-08 11:16:05
【问题描述】:

我有两个数据集,例如:

A=[ 1, 1.1, 1.2, 1.3, 1.1, 1.1, 1.2, 1.1, 1, 1, 1, 1, 1, 1, 1.1, 1.1, 1.1]
B=[1.4, 1.4, 1.3, 1.4, 1.4, 1.5, 1.4, 1.4, 1.3, 1.3, 1.3, 1.4, 1.3, 1.3, 1.2, 1.2, 1.4]

我想划分它们的分布,distributionA/distributionB,但我找不到任何解决方案,因为它们不是容易划分的列表。其实我想在python中计算distributionA/distributionB的上限值。我在 R 中找到了一个做同样事情的工具箱:

https://github.com/hoxo-m/densratio

但我想在 Python 中执行此操作

【问题讨论】:

  • 这能回答你的问题吗? Divide two lists in python
  • 很遗憾没有。我应该划分两个分布,但在这里他们划分了两个列表。
  • “分发”到底是什么意思?您的问题中有两个列表。
  • 例如,我们将 A 视为均值为 1.08 的正态分布,将 B 视为另一个正态分布。
  • 但是不管内容如何,​​如果没有列表,你会以什么格式获得 A 和 B?如果您想将 A 除以 B,则实际数字无关紧要,但它们存储的对象却很重要。您的示例表明它们位于两个相等长度的列表中,但如果不正确,您需要告诉人们它们采用什么格式。

标签: python numpy matplotlib statistics distribution


【解决方案1】:

这会将 A 中的每个元素除以 B 中的每个元素。如果这不是您需要的,请扩展您的答案或发布预期结果。

res = [i / j for i, j in zip(A, B)] 

【讨论】:

    【解决方案2】:

    您可以只使用maptruediv 运算符:

    from operator import truediv
    
    list(map(truediv, A, B))
    # [0.7142857142857143, 0.7857142857142858, 0.923076923076923, 0.9285714285714287...
    

    【讨论】:

      【解决方案3】:

      那个 R 包通过相同的 author 链接到 Python module,我就用它!要安装,只需执行正常操作:

      pip3 install -U densratio
      

      然后按照文档中的示例使用:

      from densratio import densratio
      
      result = densratio(A, B)
      print(result)
      

      请注意,这会对您的数据造成疯狂的影响。我假设是因为它被四舍五入太多了。

      我会通过以下方式开始估算最高值:

      import numpy as np
      
      x = np.linspace(-10, 10, 500)
      y_hat = result.compute_density_ratio(x)
      
      print(max(y_hat), x[np.argmax(y_hat)])
      

      但您可能想要做很多情节以确保 densratio 正在做正确的事情,例如开始:

      import matplotlib.pyplot as plt
      
      plt.plot(x, y_hat)
      

      注意我以前没见过这个包,以前用过这个包的人可能会提供更多帮助

      【讨论】:

        猜你喜欢
        • 2017-04-08
        • 1970-01-01
        • 2021-08-30
        • 1970-01-01
        • 2017-01-03
        • 2015-06-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多