问题
我有两个数组,我们称它们为ar1和ar2(size(192289)),它们代表标准差的lat lon映射,我有一个大小相似的数组来表示它们的差异。我要绘制差异,并在顶部绘制一个点画图案,其中两个数组之间的差异在95%置信水平(α=0.05)下具有统计学意义。在
代码
我用这个例子来编写代码-
How do I do a F-test in python
我使用了Joel Cornett的解,用ar1
和{
F = np.var(ar1) / np.var(ar2)
print np.var(ar1), np.var(ar2)
print F
0.118586507371 0.161485609461
0.734347213766
下一部分,我需要N-2个自由度来进行分析,其中N是数组中的点数,在本例中为55848(192×289)。len(ar1)
和len(ar2)
在这里不起作用,因为它们只给出第一维的长度,所以我尝试将数组展平以获得正确的长度。在
55486 55486
然而,继续下去,我得到的p值是9.88365269356e-289(基本上是0)。这是一个单一的值,正如我在这个特殊的例子中所预期的,统计上不重要,但是我需要一个数组值来做点画,这样我就可以看到网格上是否有任何地方的差异是显著的。我只是不知道如何在二维数组上执行这个测试,因为我发现的所有示例都使用列表或其他一维数据类型,而且我以前也从未做过这样的分析。(我是应导师的要求来做的,他不使用Python)。在
问题
如何在两个二维数组上执行f检验,结果给出了一个大小相似的数组,并为每个网格点提供了一个p值?在
如果可能的话,我可以修改它,以填补由于对主题缺乏理解而遗漏的任何内容(让我知道我得到的p值似乎不正确),但如果这太复杂或不完整,无法获得帮助,我将删除它。在
这取决于你的阵列。如果步长足够大,可以将lat/long数组拆分成更小的部分,则可以计算24x24的正方形,而不是整个数组。你可以检查不同的比例,看看什么是合理的。要实现这一点,请尝试以下方法:
这将产生类似大小的输出(168265)数组,因为24x24的平方在上面的步骤1的代码中求值可能不再有意义。对于较小的步长,半重叠正方形将产生更合理的结果:
^{pr2}$这将产生(14,22)数组。
相关问题 更多 >
编程相关推荐