Проблема
У меня есть два массива, назовем их ar1 и ar2 (размер (192 289)), которые представляют карты стандартных отклонений широты и долготы, и у меня есть массив их разностей аналогичного размера. Я хочу нанести на график разницу, а сверху — штриховой рисунок, где разница между двумя массивами статистически значима для уровня достоверности 95% (альфа = 0,05).
Код
Я использовал этот пример для своего кодирования -
Я использовал решение Джоэла Корнетта, заменив X и Y на ar1
и ar2
.
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 x 289). len(ar1)
и len(ar2)
здесь не работают, так как они дают только длину первого измерения, поэтому я попытался сгладить массивы для получения правильной длины.
df1 = len(np.ndarray.flatten(sdmod)) - 2
df2 = len(np.ndarray.flatten(sdcon)) - 2
print df1, df2
55486 55486
Однако, продвигаясь вперед, я получил p-значение 9,88365269356e-289 (по сути, 0). Это единственное значение и, как я и ожидал в этом конкретном случае, статистически незначимое, но мне нужен массив значений, чтобы сделать пунктирную разметку, чтобы я мог видеть, есть ли место в сетке, где разница существенна. Я просто не уверен, как выполнить этот тест на двумерном массиве, поскольку все примеры, которые я нахожу, используют списки или другие одномерные типы данных, и я также никогда раньше не проводил подобного анализа. (Я делаю это по просьбе моего консультанта, который не использует Python).
Вопрос
Как вы выполняете f-тест для двух двумерных массивов, где результат дает массив одинакового размера, который дает вам значение p для каждой точки сетки?
Я могу исправить это, если возможно, чтобы заполнить все, что я мог пропустить из-за непонимания предмета (и дайте мне знать, что полученное мной p-значение кажется неправильным), но если это слишком сложно или неполное для получить помощь, я просто удалить его.