Вычислить матрицу корреляции, используя SQL в Oracle

Данная примерная таблица с некоторыми значениями, подобными этому:

а1а2а3а4а5
1215131221
1423415713
2341571339
9081327678

Наша цель — создать корреляционную матрицу с использованием SQL в Oracle.

Таблица результатов должна быть такой:

#а1а2а3а4а5
а110,968627486-0,0235907010,7235664090,962065691
а20,96862748610,2142176520,6559790920,974931214
а3-0,0235907010,21421765210,0098911220,079502115
а40,7235664090,6559790920,00989112210,524414529
а50,9620656910,9749312140,0795021150,5244145291

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

Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.

Community 17.05.2022 03:23
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
1
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать CORR функция:

WITH ordered (rn, a1, a2, a3, a4, a5) AS (
  SELECT ROWNUM, a1, a2, a3, a4, a5 FROM table_name
)
SELECT key,
       CORR(a1, value) AS a1,
       CORR(a2, value) AS a2,
       CORR(a3, value) AS a3,
       CORR(a4, value) AS a4,
       CORR(a5, value) AS a5
FROM   ordered t
       INNER JOIN (
         SELECT *
         FROM   ordered
         UNPIVOT (
           value FOR key IN (a1, a2, a3, a4, a5)
         )
       ) d
       ON (t.rn = d.rn)
GROUP BY key

Что для примера данных:

CREATE TABLE table_name (a1, a2, a3, a4, a5) AS
SELECT 12, 15, 13, 12, 21 FROM DUAL UNION ALL
SELECT 14, 23, 41, 57, 13 FROM DUAL UNION ALL
SELECT 23, 41, 57, 13, 39 FROM DUAL UNION ALL
SELECT 90, 81, 32, 76, 78 FROM DUAL;

Выходы:

KEYA1A2A3A4A5
A11.9686274863493618022648973908306711860158-.0235907009791586343670275607353945975836.7235664093128934907375377255687028401814.9620656911630149496690023500551903300058
A2.96862748634936180226489739083067118601581.2142176524658728558977962209541976877097.655979092200627387045632202651644194262.9749312135706365317565525851529784515689
A3-.0235907009791586343670275607353945975836.21421765246587285589779622095419768770971.009891122282267634886059354456616140169476.079502115405919407497390073647822157651
A4.7235664093128934907375377255687028401814.655979092200627387045632202651644194262.0098911222822676348860593544566161401694761.5244145293486588849105425925771231892634
A5.9620656911630149496690023500551903300058.9749312135706365317565525851529784515689.079502115405919407497390073647822157651.52441452934865888491054259257712318926341

дб <> рабочий пример здесь

Другие вопросы по теме