Точное значение p корреляционного теста Пирсона с небольшими выборками?Python

Программы на Python
Anonymous
Точное значение p корреляционного теста Пирсона с небольшими выборками?

Сообщение Anonymous »

Чтобы получить корреляцию между двумя массивами в Python, я использую:

Код: Выделить всё

from scipy.stats import pearsonr
x, y = [1, 2, 3], [1, 5, 7]
cor, p = pearsonr(x, y)
Однако, как указано в документации, «значения p не совсем надежны, но, вероятно, разумны для наборов данных размером более 500 или около того». Так как же мне получить значение p, приемлемое для небольших наборов данных?
Мое временное решение:
После Читая о линейной регрессии, я придумал свой собственный небольшой скрипт, который в основном использует преобразование Фишера для получения z-показателя, на основе которого рассчитывается значение p:

Код: Выделить всё

import numpy as np
from scipy.stats import zprob
n = len(x)
z = np.log((1+cor)/(1-cor))*0.5*np.sqrt(n-3))
p = zprob(-z)
Это работает. Однако я не уверен, что это более разумно, чем значение p, заданное pearsonr(). Есть ли модуль Python, который уже имеет эту функциональность? Мне не удалось найти его в SciPy или Statsmodels.
Измените, чтобы уточнить:
Набор данных в моем пример упрощен. Мой реальный набор данных — это два массива по 10–50 значений.

Подробнее здесь: https://stackoverflow.com/questions/248 ... ll-samples

Вернуться в «Python»