【问题标题】:How do you efficiently perform millions of t-tests in Python?如何在 Python 中高效地执行数百万个 t 检验?
【发布时间】:2020-07-05 03:39:12
【问题描述】:

长话短说,我需要进行数亿次 t 检验。我有两个样本列表,ysns,我想比较每个列表中的一个样本,所以ys 中的第一个样本将与ns 中的第一个样本进行比较,依此类推。结果将是一个 p 值列表,每个比较都有一个。最快的方法是什么?目前,我正在使用map 函数

p_values = [result[1] for result in list(map(ttest_ind, ys, ns))]

但它仍然很慢。 numpy.vectorize 看起来可能更快,但我不知道如何将它与以两个列表作为输入的函数一起使用。如果我硬编码 t 检验数学而不是使用 scipy.stats.ttest_ind,会更快吗?

【问题讨论】:

  • numpy.vectorize 只是隐藏了循环机制,但并没有真正将非向量化函数转变为真正的向量化函数。你看过pandas吗?
  • 我将如何使用pandas?我应该创建一个数据框的 ysns 列并将 t 检验应用于这些列吗?
  • 我对“几亿” t 检验感到畏缩。这是交叉验证的主题...
  • @Michelle 是的,这很难解释......也许我会尝试交叉验证。

标签: python optimization t-test


【解决方案1】:

整个想法是:不在 Python 中运行,而是在 C/C++ 中运行。

您有两种选择:

  1. 自己用 C/C++ 编写,并用 Python 连接。
  2. 尝试使用 Numpy 等 C/C++ 后端库。将您的数据打包为 Numpy 类型并使用 Numpy 函数对其进行操作。后端是C/C++,和1一样,会容易很多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 2014-03-18
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多