Как создать матрицу корреляции в MATLAB
Чем дальше коэффициент корреляции от нуля, тем сильнее связь между двумя переменными.
Но в некоторых случаях мы хотим понять корреляцию между более чем одной парой переменных.
В этих случаях мы можем создать матрицу корреляции , представляющую собой квадратную таблицу, которая показывает коэффициенты корреляции между несколькими попарными комбинациями переменных.
В этом руководстве объясняется, как создать и интерпретировать корреляционную матрицу в Matlab.
Как создать корреляционную матрицу в Matlab
Используйте следующие шаги, чтобы создать матрицу корреляции в Matlab.
Шаг 1: Создайте набор данных.
rng(0); A = randn(10,1); B = randn(10,1); C = randn(10,1); all = [A B C];
Шаг 2: Создайте матрицу корреляции.
R = corrcoef(all) R = 1.0000 0.4518 -0.5003 0.4518 1.0000 -0.8017 -0.5003 -0.8017 1.0000
Шаг 3: Интерпретируйте матрицу корреляции.
Все коэффициенты корреляции по диагонали таблицы равны 1, потому что каждая переменная полностью коррелирует сама с собой.
Все остальные коэффициенты корреляции указывают на корреляцию между различными попарными комбинациями переменных. Например:
- Коэффициент корреляции между «а» и «б» составляет 0,4518 .
- Коэффициент корреляции между «а» и «с» составляет -0,5003 .
- Коэффициент корреляции между «b» и «c» составляет -0,8017.
Шаг 4: Найдите p-значения коэффициентов корреляции.
[R,P] = corrcoef(all) R = 1.0000 0.4518 -0.5003 0.4518 1.0000 -0.8017 -0.5003 -0.8017 1.0000 P = 1.0000 0.1899 0.1408 0.1899 1.0000 0.0053 0.1408 0.0053 1.0000
Способ интерпретации p-значений следующий:
- Значение p для коэффициента корреляции между «a» и «b» составляет 0,1899 .
- Значение р для коэффициента корреляции между «а» и «с» составляет 0,1408 .
- Значение p для коэффициента корреляции между «b» и «c» составляет 0,0053.
Если p-значение меньше некоторого уровня значимости (например, 0,05), то мы можем сказать, что корреляция между двумя переменными является статистически значимой.
В этом случае корреляция между переменными «b» и «c» является единственной статистически значимой корреляцией.
Дополнительные ресурсы
В следующих руководствах представлена дополнительная информация о матрицах корреляции:
Как читать корреляционную матрицу
В статистике нас часто интересует понимание взаимосвязи между двумя переменными.
Например, мы можем захотеть понять взаимосвязь между количеством часов, отработанных студентом, и полученными им экзаменационными баллами.
Одним из способов количественной оценки этой взаимосвязи является использование коэффициента корреляции Пирсона , который является мерой линейной связи между двумя переменными . Он имеет значение от -1 до 1, где:
- -1 указывает на совершенно отрицательную линейную корреляцию между двумя переменными
- 0 указывает на отсутствие линейной корреляции между двумя переменными
- 1 указывает на совершенно положительную линейную корреляцию между двумя переменными.
Чем дальше коэффициент корреляции от нуля, тем сильнее связь между двумя переменными.
Но в некоторых случаях мы хотим понять корреляцию между более чем одной парой переменных. В этих случаях мы можем создать матрицу корреляции , представляющую собой квадратную таблицу, которая показывает коэффициенты корреляции между несколькими переменными.
Пример корреляционной матрицы
В приведенной ниже матрице корреляции показаны коэффициенты корреляции между несколькими переменными, связанными с образованием:

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

А выделенная ячейка ниже показывает, что корреляция между «часами, потраченными на учебу» и «часами, потраченными на сон» составляет -0,22 , что указывает на слабую отрицательную корреляцию. Больше часов, потраченных на учебу, связано с меньшим количеством часов, потраченных на сон.

А выделенная ячейка ниже показывает, что корреляция между «количеством часов, проведенных во сне» и «показателем IQ» составляет 0,06 , что указывает на то, что они в основном не связаны. Существует очень небольшая связь между количеством часов, которые студент спит, и его показателем IQ.

Также обратите внимание, что все коэффициенты корреляции по диагонали таблицы равны 1, потому что каждая переменная полностью коррелирует сама с собой. Эти ячейки бесполезны для интерпретации.

Вариации корреляционной матрицы
Обратите внимание, что корреляционная матрица совершенно симметрична. Например, верхняя правая ячейка показывает то же значение, что и нижняя левая ячейка:

Это связано с тем, что обе ячейки измеряют корреляцию между «часами, потраченными на учебу» и «рейтингом школы».
Поскольку матрица корреляции симметрична, половина коэффициентов корреляции, показанных в матрице, являются избыточными и ненужными. Таким образом, иногда будет отображаться только половина корреляционной матрицы:

А иногда матрица корреляции раскрашивается, как тепловая карта, чтобы коэффициенты корреляции было еще легче читать:

Когда использовать корреляционную матрицу
На практике корреляционная матрица обычно используется по трем причинам:
1. Корреляционная матрица удобно обобщает набор данных.
Матрица корреляции — это простой способ суммировать корреляции между всеми переменными в наборе данных. Например, предположим, что у нас есть следующий набор данных, который содержит следующую информацию для 1000 учащихся:

Было бы очень сложно понять взаимосвязь между каждой переменной, просто глядя на необработанные данные. К счастью, корреляционная матрица может помочь нам быстро понять корреляции между каждой парой переменных.
2. Корреляционная матрица служит диагностикой регрессии.
Одним из ключевых допущений множественной линейной регрессии является то, что ни одна независимая переменная в модели не имеет сильной корреляции с другой переменной в модели.
Когда две независимые переменные сильно коррелированы, это приводит к проблеме, известной как мультиколлинеарность , и может затруднить интерпретацию результатов регрессии.
Один из самых простых способов обнаружить потенциальную проблему мультиколлинеарности — посмотреть на матрицу корреляции и визуально проверить, сильно ли коррелируют какие-либо переменные друг с другом.
3. Корреляционная матрица может использоваться в качестве исходных данных для других анализов.
Корреляционная матрица используется в качестве исходных данных для других сложных анализов, таких как исследовательский факторный анализ и модели структурных уравнений.
Дополнительные ресурсы
В следующих руководствах объясняется, как создать корреляционную матрицу с помощью различных статистических программ:
3D Матрица в MATLAB — Как создать 3D Матрицу в MATLAB? — пример


MATLAB — это язык, используемый для технических вычислений. Как многие из нас согласятся, простая в использовании среда необходима для интеграции задач вычислений, визуализации и, наконец, программирования. MATLAB делает то же самое, предоставляя среду, которая не только проста в использовании, но и решения, которые мы получаем, отображаются в виде математических обозначений, с которыми большинство из нас знакомо. В этой теме мы собираемся узнать о 3D Matrix в MATLAB.
Использование MATLAB включает
- вычисление
- Разработка алгоритмов
- моделирование
- моделирование
- макетирования
- Аналитика данных (Анализ и Визуализация данных)
- Инженерная и научная графика
- Разработка приложения
В этой статье мы разберемся с многомерными массивами в MATLAB и, в частности, с 3-мерной матрицей в Matlab.
Многомерный массив
Это массив в MATLAB, который имеет два или более измерений. Возможно, вы уже знаете, что размеры двумерной матрицы представлены строками и столбцами.

Каждый элемент имеет два индекса: один — индекс строки, а другой — индекс столбца.
Например, элемент (1, 1) здесь представляет номер строки 1, а номер столбца 1.
Что такое 3-D матрица?
3-D Matrix — это многомерный массив, который является расширением двумерных матриц. Как вы можете догадаться, у них будет 3 индекса, один индекс вместе с индексами строк и столбцов, как для 2D-матрицы. Третий нижний индекс в 3D-матрице используется для представления листов или страниц элемента.

Например, здесь элемент (2, 1, 1) представляет «Строка» № 2, «Столбец» № 1 и «Страница» № 1.
Создание 3D Матрицы
Давайте теперь разберемся, как мы можем создать 3D Matrix в MATLAB
Для трехмерного массива сначала создайте 2D-матрицу, а затем расширьте ее до 3D-матрицы.
- Создайте матрицу 3 на 3 в качестве первой страницы в трехмерном массиве (вы можете ясно видеть, что мы сначала создаем 2D-матрицу)
A = (11 2 7; 4 1 0; 7 1 5)
- Добавьте вторую страницу сейчас. Это можно сделать, назначив еще одну матрицу 3 на 3 со значением индекса 2 в третьем измерении.
A (:, :, 2) = (1 2 5; 4 4 6; 2 8 1)
А (3 × 3)
A =
| А (:, :, 1) = | 11 | 2 | 7 |
| 4 | 1 | 0 | |
| 7 | 1 | 5 |
| A (:, :, 2) = | 1 | 2 | 5 |
| 4 | 4 | 6 | |
| 2 | 8 | 1 |
Мы также можем использовать функцию с именем cat Function для создания многомерных массивов.
Например: создайте трехмерный массив с 3 страницами, используя функцию cat
X = cat (3, A, (3 7 1; 0 1 8; 2 5 4))
- Здесь A — трехмерный массив, созданный выше
- Аргумент на первом месте (3) говорит, в каком направлении массив должен быть объединен
- Здесь конкатенация делается вместе со страницами
X =
| X (:, :, 1) = | 11 | 2 | 7 |
| 4 | 1 | 0 | |
| 7 | 1 | 5 |
| X (:, :, 2) = | 1 | 2 | 3 |
| 4 | 4 | 6 | |
| 2 | 8 | 1 |
| X (:, :, 3) = | 3 | 7 | 1 |
| 0 | 1 | 8 | |
| 2 | 5 | 4 |
Теперь, если нам нужно еще больше расширить этот массив, мы можем просто дать элементы 4-го массива, которые нам нужно добавить:
Итак, чтобы расширить наш приведенный выше пример, мы просто дадим,
B (:, :, 4) = (1 2 1; 3 9 1; 6 3 7), и результат будет:
X =
| X (:, :, 1) = | 11 | 2 | 7 |
| 4 | 1 | 0 | |
| 7 | 1 | 5 |
| X (:, :, 2) = | 1 | 2 | 3 |
| 4 | 4 | 6 | |
| 2 | 8 | 1 |
| X (:, :, 3) = | 3 | 7 | 1 |
| 0 | 1 | 8 | |
| 2 | 5 | 4 |
| X (:, :, 4) = | 1 | 2 | 1 |
| 3 | 9 | 1 | |
| 6 | 3 | 7 |
Как мы можем получить доступ к элементам массива?
Для этого просто используйте индексы как целые числа. Таким образом, 2, 3, 1 элемент трехмерной матрицы будет элементом, представленным во 2-й строке 3-го столбца 1-й страницы.
Чтобы продемонстрировать это, давайте используем 3D-матрицу A, которую мы использовали выше,
Теперь access = A (2, 3, 1) даст нам 0 в качестве вывода
Функции для управления элементами многомерного массива
MATLAB предоставляет нам пару функций для управления элементами многомерного массива.
Давайте разберемся с этими по одному:
1. Изменить форму
Это полезно в основном во время визуализации данных
Например: создайте матрицы 6 * 5, используя две матрицы 3 * 5
- A = (1 3 7 0 5; 2 0 4 1 3; 1 0 5 3 2);
- A (:, :, 2) = (1 7 2 5 0; 4 2 1 6 5; 1 1 4 5 0);
- B = изменить (A, (6 5))
Это создаст 2D матрицу с 6 строками и 5 столбцами:
Как вы можете заметить, RESHAPE будет работать по столбцам, поэтому сначала все элементы A берутся вдоль столбца для первой страницы. То же самое затем делается для 2-й страницы
2. Перестановка
Мы можем использовать эту функцию, если мы хотим изменить размеры матриц. то есть, изменяя строки со столбцами или наоборот.
Пример Пермута
- P (:, :, 1) = (3 5 3; 1 5 2; 0 8 5);
- P (:, :, 2) = (0 1 3; 6 7 1; 4 2 1)
Давайте теперь используем функцию PERMUTE для P:
Вывод, который мы получим будет иметь строки и столбцы, чередующиеся следующим образом:
| M1 (:, :, 1) = | 3 | 1 | 0 |
| 5 | 5 | 8 | |
| 3 | 2 | 5 |
| P1 (:, :, 2) = | 0 | 6 | 4 |
| 1 | 7 | 2 | |
| 3 | 1 | 1 |
Рекомендуемые статьи
Это руководство по 3D Matrix в MATLAB. Здесь мы обсудим использование MATLAB, что такое 3 D Matrix? и как создавать трехмерные массивы в MATLAB, а также некоторые манипуляции с ними. Вы также можете посмотреть следующую статью, чтобы узнать больше —
- Матрица в Matlab
- MATLAB версия
- Векторы в Matlab
- Типы данных в MATLAB
- Тип данных улья
- Типы данных PL / SQL
Генерация случайного числа в определенном диапазоне в MATLAB
Если вы ищете равномерно распределенные псевдослучайные целые числа, используйте:
randi([13, 20])
zellus 22 фев. 2011, в 12:58
Поделиться
не может n = 13 + (rand (1) * 7) дать равномерно распределенные псевдослучайные целые числа?
crowso 22 фев. 2011, в 12:41
@ user581544: нет, если вы не обзвоните (n).
zellus 22 фев. 2011, в 12:46
@crowso Совсем нет. Значения 13 и 20 получат половину вероятности остальных. Используйте это, чтобы понять, что я имею в виду: hist(round(13 + (rand(1, 10000) * 7)), 8) .
Evgeni Sergeev 19 сен. 2013, в 06:22
@SecretAgentMan Это равномерное распределение, но оно находится на открытом интервале (0,1), поэтому 0 и 1 никогда не появятся. Введите help rand в MATLAB . «возвращает матрицу N-на-N, содержащую псевдослучайные значения, взятые из стандартного равномерного распределения на открытом интервале (0,1).» Основная причина, по которой 13 и 20 появляются вдвое реже потому что round округляется до ближайшего целого числа. Поскольку функция для n даст результаты> 13 и
James 31 янв. 2019, в 01:58
@ Джеймс, должно быть, я думал о randn . Вы правы: rand действительно генерируется из U (0,1). Проблема открытого или закрытого интервала практически не имеет значения, так как вероятность генерации любого числа в [0,1] равна нулю (включая конечные точки). Функция плотности вероятности определена на отрезке [0,1]. Не уверен, что недостаток сна составил ошибку моего предыдущего комментария. Спасибо за исправление.
SecretAgentMan 31 янв. 2019, в 04:26
Показать ещё 3 комментария
n = 13 + (rand(1) * 7);
TimCodes.NET 22 фев. 2011, в 13:11
Поделиться
r = 13 + 7.*rand(100,1);
Где 100,1 — размер искомого вектора
pcofre 22 фев. 2011, в 12:06
Поделиться
ocw.mit.edu — отличный ресурс, который мне помог. randi — лучший вариант, но если вы вновете интересный номер, попробуйте использовать функцию floor с rand, чтобы получить то, что вы хотите.
Я нарисовал цифровую строку и придумал
floor(rand*8) + 13
ash_bobham 10 дек. 2014, в 12:49
Поделиться
если вы хотите сгенерировать все число в определенном порядке в случайном порядке, тогда вы можете попробовать `r = randi ([a b], 1, d)
a = начальная точка b = конечная точка d = сколько числа вы хотите сгенерировать, но имейте в виду, что d должно быть меньше или равно b-a
Gurlal Singh Gill 05 июнь 2017, в 07:56
Поделиться
Создать значения из равномерного распределения на интервал [a, b].
r = a + (b-a).*rand(100,1);
user570593 05 фев. 2015, в 16:10
Поделиться
Вы также можете использовать:
round(mod(rand.*max,max-1))+min
moksef 01 авг. 2014, в 15:38
Поделиться
Не находится в диапазоне [min, max], а также неравномерно распределен, что подразумевается под вопросом.
knedlsepp 05 фев. 2015, в 15:55
Модуль вообще трудно предсказать и трудно использовать для генерации случайных чисел. В общем, легко оказаться неслучайным. Лучше просто использовать rand
patrik 10 апр. 2015, в 14:12
@knedlsepp: В целях общности я упомяну min для 13 и max для 20 (это подразумевается! возможно, лучше отредактировать вопрос до min и max). не могли бы вы указать, каково распределение вероятностей результата.
moksef 14 апр. 2015, в 17:23
@patrik: Я не проверял реализацию этой функции. Не могли бы вы объяснить, почему мы пропускаем случайную комбинацию при использовании модуля? Вы проводите какой-нибудь эксперимент?
moksef 14 апр. 2015, в 17:28
@moksef Я сделал на самом деле. Я предполагаю, что это скорее непредвзятый образец, который исчезает. В большинстве случаев модуль любит формироваться вокруг определенных чисел. Как правило, они зависят от того, какие номера выбраны. Попробуйте сгенерировать набор чисел, используя вашу функцию. Затем постройте гистограмму. Попробуйте повторить это для разных чисел. Особенно старайтесь установить max-1 как двоичное число, а также простое число. Я не пробовал это для этого алгоритма, но предположение, что они должны работать лучше.
patrik 14 апр. 2015, в 20:21
Кроме того, у меня есть ощущение, что модуль начинает повторяться через некоторое время. Я не уверен, хотя. Это просто чувство. Тем не менее, введение случайного элемента в модуль должно помочь предотвратить это, если я думаю, что он правильно спроектирован. Модуль может использоваться для генерации псевдослучайных чисел, но проект должен быть проверен, и коэффициенты, которые можно использовать для хорошей случайности, являются лишь небольшим набором. Выбрав один из них, масштабирование будет лучше. Далее я бы сказал, что rand уже неплохо справляется с работой :).
patrik 14 апр. 2015, в 20:28
@moksef: Ваша функция будет выдавать значения от min до max+min-1 а вероятность max+min-1 и min+1 отключена.
