Я пытаюсь использовать numpy.ma.corrcoef для расчета корреляций при наличии отсутствующих данных.
Согласно документации: За исключением обработки отсутствующих данных, эта функция делает то же самое, что и numpy.corrcoef
. Дополнительные сведения и примеры см. в разделе numpy.corrcoef
.
Вот двумерный набор данных, для которого только первая и вторая точки имеют данные для обеих переменных.
array([[ 0.00494576, -0.01331578],
[-0.00146498, -0.01349548],
[ 0.00430321, nan],
[-0.00937105, nan],
[ nan, -0.01356873],
[ nan, -0.01375538],
[ nan, -0.00277393],
[ nan, 0.0082988 ],
[ nan, 0. ],
[ nan, 0.00275103],
[ nan, 0.00547947],
[ nan, -0.01375538],
[ nan, 0.0110194 ],
[ nan, -0.00549452],
[ nan, 0.01910017],
[ nan, -0.02462505],
[ nan, -0.01676017],
[ nan, 0.0112046 ],
[ nan, 0.01108045],
[ nan, 0.01639381],
[ nan, 0.01078178],
[ nan, -0.01078178]])
Когда я использую это как замаскированный массив (np.ma.masked_array(t,np.isnan(t)) где t - это массив выше) и запускаю на нем np.ma.corrcoef (с rowvar=False), корреляция между переменные задаются как -86,52 (по абсолютной величине, а не в процентах!). Принимая во внимание, что выполнение np.corrcoef только для первых двух точек дает корреляцию 1 (опять же абсолютное значение). Это последнее значение, как я думаю, следует ожидать от первой операции в соответствии с документацией.
Информация о моей версии Python (64-разрядная версия Enthought PyLab в Mac OS X.6.8) приведена ниже, и я использую Numpy версии 1.6.1.
Python 2.7.3 |EPD 7.3-1 (64-разрядная версия)| (по умолчанию, 12 апреля 2012 г., 11:14:05) Введите «авторское право», «кредиты» или «лицензия» для получения дополнительной информации.
Пожалуйста, посоветуйте, что мне здесь не хватает! Заранее спасибо.