Генерация белого шума (нормальное распределение с нулевым средним и унитарной дисперсией) - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь сгенерировать белый шум для набора данных 100 строк x 3 столбца, построенных с помощью факторизации Холецкого;набор данных представляет собой многомерное распределение Гаусса с параметром 0 и сигмой (ков. матрица) следующим образом:

[1,0, 0,4, 0,5]
[0,4, 1,0, 0,4]
[0.5, 0.4, 1.0]

# no_pop            = number of rows
# M                 = number of columns
# mu                = mean = 0
# sigma             = variance = 1
# Sigma_matrix      = covariance matrix (see above)
Z = scipy.random.normal(mu, sigma, [no_pop, M])
cov_Z = covariance_matrix(Z)
chol_Z = scipy.linalg.cholesky(cov_Z);
chol_inv_Z = scipy.linalg.inv(chol_Z)
zch = np.dot(Z, chol_inv_Z)
Chol = scipy.linalg.cholesky(Sigma_matrix)
X = zch.dot(Chol)

#   It returns covariance matrix
def covariance_matrix(matrix):
    X1 = matrix[:, 0]
    X2 = matrix[:, 1]
    X3 = matrix[:, 2]
    C = np.vstack([X1, X2, X3])
    return np.cov(C.astype(float), rowvar=True)

(я проверил коэффициент корреляции и ковариационную матрицу сгенерированного набора данных).Теперь мне нужно создать шум и добавить его в набор данных, как показано в ссылке - Раздел 2.1 .До сих пор я делал:

while(True):
    noiseZ = scipy.random.normal(mu, sigma, size=(no_pop * M))
    if(abs(mu - np.mean(noiseZ)) < 0.0001 and abs(sigma - np.std(noiseZ)) < 0.0001):
        noiseZ = np.reshape(noiseZ, [no_pop, M])
        noiseFinal = noiseZ;
        break;

и затем проверял, равна ли ковариационная матрица noiseFinal единичной матрице (некоррелированный шум).Делая это, я должен видеть, что в ковариационной матрице «набора данных + noiseFinal» ковариации остаются нетронутыми (или они могут измениться на очень очень небольшое количество), в то время как дисперсии изменились.

Гдеошибка произошла?

1 Ответ

1 голос
/ 22 июня 2019

На самом деле, я думаю, вам следует увеличить выборку ... Постарайтесь увеличить популяцию примерно до 10 тыс., А затем извлечь выборку нужного вам размера.Это должно сработать!Дай мне знать, удачи!

...