корреляция в Matlab - PullRequest
       8

корреляция в Matlab

0 голосов
/ 13 января 2012

Следующий скрипт находит корреляцию между каждой парой данных.

clear all
LName={'Name1','Name2','Name3','Name4','Name5'};
Data={rand(12,1),rand(12,1),rand(12,1),rand(12,1),rand(12,1)};
%place in a structure
d = [LName;Data];
Data = struct(d{:});

d1 = cell2mat(struct2cell(Data)');
[R,P] = corrcoef(d1);
Correlation = [LName(nchoosek(1:length(R),2)) num2cell(nonzeros(tril(R,-1)))]

Кроме того, в «Корреляции» сценарий также указывает, какая комбинация данных использовалась при создании значения корреляции. Исходя из этого, я пытаюсь не только найти корреляцию между парой данных, но также найти корреляцию между n числом данных, поэтому в дополнение к приведенному выше сценарию я пытаюсь найти корреляцию между тремя наборами данных четыре ... и так далее, затем сохраните это в корреляции. Как бы мне этого достичь?

1 Ответ

0 голосов
/ 13 января 2012

Поскольку все ваши числа неотрицательны, я думаю, что простого умножения соответствующих массивов вместе, суммирования и нормализации будет достаточно.Это в основном то же самое, что делает corrcoef, за исключением того, что он умножает только два массива одновременно.

Обратите внимание, что это не будет работать для отрицательных чисел.Например, представьте, что все три массива имеют отрицательное значение в некоторой точке.Это было бы хорошо, в том смысле, что они хорошо коррелируют.Однако, просто умножив их, вы получите отрицательную корреляцию, которая будет указывать на противоположную корреляцию в этой точке.

...