|
О представлении выборок случайных процессов рядом по собственным векторам корреляционной функции, теория и практика |
|
|
|
Jun 10 2014, 09:11
|
Группа: Участник
Сообщений: 11
Регистрация: 30-06-12
Пользователь №: 72 571

|
Есть ансамбль выборок Выборка Х1=х1, x2 … xn сделана в n моментов времени. Аналогично получен еще ряд выборок. Весь ансамбль представим как матрицу Х = х11, x12 … x1n х21, x22 … x2n ………………………. хm1, xm2 … xmn Рассчитаем корреляционную матрицу К как коэффициенты корреляции i и j столбцов. Вычислим собственные вектора Vi матрицы К. Перейти к выборкам с некоррелированными отсчетами Y можно как Y = ХV (в матричном виде). Корреляционная матрица для Y должна быть диагональной. Это теория. На практике: матрица К не диагональная, значения коэффициентов корреляции вне главной диагонали лежат в интервале 0.6.-.0.9. Корреляционная матрица собственных векторов Vi диагональная (специально проверял), значения вне главной диагонали не превышают заданной точности (т.е. не более 1Е-35). А корреляционная матрица для Y диагональной не получается, значения коэффициентов корреляции вне главной диагонали близки к 1. То есть: вместо искомой декорреляции ансамбля исходных выборок Х получаю совершенно противоположный эффект - усиление корреляции. Ошибка где-то в самом принципе. Сам ошибку не вижу. Подскажите – где наврал?
|
|
|
|
|
 |
Ответов
|
Jun 11 2014, 03:47
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
Как-то у Вас все запутанно, давайте вместе по шагам проверим: Исходня матрица Х, для нее сингулярное разложение Х = UZW^T, U, W - унитарные, Z - квадратная диагональная Корреляционная матрица К = X^T X = WZU^T U ZW^T = WZ ZW^T, то есть Ваши собственные векторы - это есть правые сингулярные векторы W от исходной матрицы Х. Если же вычислить Вашу Y = ХV , то она получается в виде: Y = UZW^T W = UZ . Для нее корреляционная матрица ZU^TUZ = Z^2 - диагональна, и должна совпадать с собственными значениями исходной K матрицы.
Если W в Вашем случае подставить не транспонированную, скорее всего получите то, что Вы получили.
Считайте все через сингулярное разложение, будет и понятнее, и быстрее, и точнее - так как при плохой обусловленности корреляционные матрицы возводят в квадрат обусловленность исходной задачи.
|
|
|
|
|
Jun 11 2014, 06:19
|
Группа: Участник
Сообщений: 11
Регистрация: 30-06-12
Пользователь №: 72 571

|
Цитата(iiv @ Jun 11 2014, 11:57)  Как-то у Вас все запутанно, давайте вместе по шагам проверим: Исходня матрица Х, для нее сингулярное разложение Х = UZW^T, U, W - унитарные, Z - квадратная диагональная Корреляционная матрица К = X^T X = WZU^T U ZW^T = WZ ZW^T, то есть Ваши собственные векторы - это есть правые сингулярные векторы W от исходной матрицы Х. Если же вычислить Вашу Y = ХV , то она получается в виде: Y = UZW^T W = UZ . Для нее корреляционная матрица ZU^TUZ = Z^2 - диагональна, и должна совпадать с собственными значениями исходной матрицы.
Если W в Вашем случае подставить не транспонированную, скорее всего получите то, что Вы получили.
Считайте все через сингулярное разложение, будет и понятнее, и быстрее, и точнее - так как при плохой обусловленности корреляционные матрицы возводят в квадрат обусловленность исходной задачи. Будьте добры, поясните: ZU^TUZ = Z^2 здесь Z^2 есть квадрат Z? Во всех остальных случаях ^ это транспонирование?
|
|
|
|
|
Jun 11 2014, 06:29
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
Цитата(AMih @ Jun 11 2014, 15:29)  Будьте добры, поясните: ZU^TUZ = Z^2 здесь Z^2 есть квадрат Z? Во всех остальных случаях ^ это транспонирование? да, именно, я использовал принятые в ЛаТеХе и Википедии обозначения. Цитата(AMih @ Jun 11 2014, 14:09)  Попробую SVD. Кстати, наудачу, может кто-нибудь подкинет ссылку на работающую процедуру SVD (хочется для Delphi). Самому писать лениво. Есть такая библиотека ACML, распространяется с сайта АМДшника бесплатно. В Дельфи сто процентов можно ее подцепить, я видел, как однажды это делали, но сам не подскажу, так как с Дельфи не имею дела. В этой библиотеке есть функции dgesvd и dgesdd, которые и вычисляют сингулярные разложения: dgesvd - чуть по-проще, но помедленнее, dgesdd - чуть по-сложнее, но побыстрее. Если нужна одинарная точность или комплексные числа, заменяйте первую букву этих подпрограмм на c, z или s. Документацию к параметрам функций можно найти гуглом на ее название + слово LAPACK. Не пугайтесь фортрановских ссылок, в ACML она из С вызывается и в Дельфи подключается.
|
|
|
|
|
Jun 11 2014, 07:06
|
Группа: Участник
Сообщений: 11
Регистрация: 30-06-12
Пользователь №: 72 571

|
Цитата(iiv @ Jun 11 2014, 14:39)  да, именно, я использовал принятые в ЛаТеХе и Википедии обозначения.
Есть такая библиотека ACML, распространяется с сайта АМДшника бесплатно. В Дельфи сто процентов можно ее подцепить, я видел, как однажды это делали, но сам не подскажу, так как с Дельфи не имею дела. В этой библиотеке есть функции dgesvd и dgesdd, которые и вычисляют сингулярные разложения: dgesvd - чуть по-проще, но помедленнее, dgesdd - чуть по-сложнее, но побыстрее. Если нужна одинарная точность или комплексные числа, заменяйте первую букву этих подпрограмм на c, z или s. Документацию к параметрам функций можно найти гуглом на ее название + слово LAPACK. Не пугайтесь фортрановских ссылок, в ACML она из С вызывается и в Дельфи подключается. Понял, спасибо. C ACML не работал еще.
|
|
|
|
Сообщений в этой теме
AMih О представлении выборок случайных процессов рядом по собственным векторам корреляционной функции Jun 10 2014, 09:11 KalashKS Может где-то что-то транспонировать забыли? Jun 10 2014, 10:31 AMih Цитата(KalashKS @ Jun 10 2014, 18:41) Мож... Jun 11 2014, 01:11  KalashKS Цитата(AMih @ Jun 11 2014, 09:21) Нет, ... Jun 11 2014, 03:29    KalashKS Цитата(AMih @ Jun 11 2014, 15:16) Понял, ... Jun 11 2014, 07:16     AMih Цитата(KalashKS @ Jun 11 2014, 15:26) Есл... Jun 11 2014, 07:59 AMih Бился за декорреляцию Х по отсчетам (т.е по столбц... Jun 11 2014, 04:59 AMih Народ, в дополнение о библиотеках SVD. ASML у меня... Jun 19 2014, 07:51
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|