2016-05-13 8 views
0

Я пытаюсь создать трехмерное многомерное нормальное распределение, значения которого будут варьироваться от приблизительно 0 до 100 в каждом измерении.Какова эквивалентная матрица ковариации для дисперсии в случае 1D?

Когда я генерировать 1D нормальное распределение со средним и дисперсией 50 16:

data = random.normal(50, 16, 1000) 

результирующее распределение имеет значения в диапазоне примерно от 0 до 100. Но когда я распространяется на многомерном случае, только то, что значения диапазон от 35 до 65:

covar = [[16, 0, 0], [0, 16, 0], [0, 0, 16]] 
data = random.multivariate_normal([50, 50, 50], covar, 1000) 

При использовании random.normal для трех измерений я получаю ожидаемый результат, значения в диапазоне от 0 до 100.

data = random.normal(50, 16, size=(3,1000)) 

Откуда это несоответствие? Для того, чтобы получить диапазон значений, я хочу в каждом измерении в многомерном случае я должен сделать матрицу ковариации так:

covar = [[300, 0, 0], [0, 300, 0], [0, 0, 300]] 

, который кажется совершенно необоснованным для нормального распределения со средним 50.

Любая помощь высоко ценится!

ответ

0

Вы смешиваете отклонение со стандартным отклонением.

Параметр scale= к np.random.normal указывает стандартное отклонение (то есть квадратный корень из дисперсии), в то время как диагонали матрицы ковариации вы перейти к np.random.multivariate_normal соответствует дисперсии в каждом измерении.

Попробуйте установить диагональ вашей ковариационной матрицы на 16**2 == 256.

+0

Это имеет смысл сейчас! Я думал, что 'np.random.multivariate_normal' также использует стандартное отклонение, но явно нет. Спасибо за вашу помощь! – mirelio

+0

Это называется матрицей co * дисперсии * по причине ... –

+0

Я думаю, вы имеете в виду «(т. Е. Квадратный корень дисперсии)» вместо «(т. Е. Квадрат отклонения)» – ayhan

 Смежные вопросы

  • Нет связанных вопросов^_^