В настоящее время я пытаюсь моделировать значений - мерной случайной величины , который имеет многомерное нормальное распределение со средним вектором и ковариационной матрицей .
Я надеюсь использовать методику , аналогичную методу обратной CDF, а это означает , что я хочу , чтобы сначала создать - мерный равномерная случайная величина U , а затем подключить , что в обратной КОР этого распределения, так , чтобы генерировать значение X .
У меня возникли проблемы, потому что процедура плохо документирована, и есть небольшие различия между функцией mvnrnd в MATLAB и описанием, которое я нашел в Википедии .
В моем случае я также выбираю параметры распределения случайным образом. В частности, я генерирую каждое из средств из равномерного распределения U ( 20 , 40 ) . Затем я строю ковариационную матрицу S, используя следующую процедуру:
Создайте нижнюю треугольную матрицу где L ( i , i ) = 1 для i = 1 .. N и L ( i , j ) = U ( - 1 , 1 ) для i < j
Пусть , где L Т обозначает транспонирование L .
Эта процедура позволяет мне гарантировать, что является симметричным и положительно определенным. Он также предоставляет нижнюю треугольную матрицу L, так что S = L L T , что, я считаю, необходимо для генерации значений из распределения.
Используя рекомендации по Википедии, я должен быть в состоянии генерировать значения используя N- мерную форму следующим образом:
Однако в соответствии с функцией MATLAB это обычно делается следующим образом:
Там , где является обратным ВПР из N - мерного, разъемные, нормального распределения, и единственное различие между обоими методами, просто использовать ли L или L T .
MATLAB или Wikipedia - это путь? Или оба не правы?
Ответы:
Если - вектор-столбец стандартных нормальных RV, то если вы установите Y = L X , ковариацияX∼N(0,I) Y=LX является L L T . Y LLT
Я думаю, что проблема, с которой вы столкнулись , может возникнуть из-за того, что функция mvnrnd в matlab возвращает векторы строк в качестве выборок, даже если вы указали среднее значение в качестве вектора столбца. например,
И обратите внимание, что преобразование вектора строки дает вам противоположную формулу. если является вектором строки, то Z = X L T также является вектором строки, поэтому Z T = L X T является вектором столбца, и ковариация Z T может быть записана как E [ Z T ZX Z=XLT ZT=LXT ZT , E[ZTZ]=LLT
Исходя из того, что вы написали , хотя, формула Википедии верна: если были вектор строка , возвращаемая MATLAB, вы не можете левой умножить его на L T . (Но умножение вправо на L T даст вам выборку с той же ковариацией LΦ−1(U) LT LT ).LLT
источник