Учитывая ковариационную матрицу , как сгенерировать данные таким образом, чтобы они имели образец ковариационной матрицы \ hat {\ boldsymbol \ Sigma} = \ boldsymbol \ Sigma_s ?
В более общем плане: мы часто заинтересованы в создании данных из плотности , причем данным дан некоторый параметр vector . Это приводит к выборке, из которой мы можем снова оценить значение . Что меня интересует, так это обратная проблема: что если нам дан набор параметров , и мы хотели бы создать образец такой, что .
Это известная проблема? Такой метод полезен? Доступны ли алгоритмы?
Ответы:
Для таких проблем есть две типичные ситуации:
i) вы хотите сгенерировать выборку из заданного распределения, характеристики населения которой соответствуют указанным (но из-за вариации выборки у вас нет точно совпадающих характеристик выборки).
ii) вы хотите сгенерировать выборку, характеристики выборки которой соответствуют указанным (но из-за ограничений точного сопоставления количеств выборки с заранее заданным набором значений на самом деле вы не получите желаемого распределения).
Вы хотите второй случай - но вы получите его, следуя тому же подходу, что и первый случай, с дополнительным этапом стандартизации.
Таким образом, для многомерных нормалей любой из них может быть выполнен довольно простым способом:
В первом случае вы можете использовать случайные нормали без структуры совокупности (такие как стандартная норма iid, которые имеют ожидание 0 и ковариационную матрицу идентичности), а затем наложить ее - преобразовать, чтобы получить ковариационную матрицу и означать, что вы хотите. Если и - это среднее значение для популяции и ковариация, которые вам нужны, а - это стандартное нормальное значение, то для некоторого вычисляетсяΣ z y = L z + μ L L yμ Σ z y=Lz+μ L где (например, подходящий можно получить с помощью разложения Холецкого) , Тогда есть желаемые характеристики населения.LL′=Σ L y
Со вторым вы должны сначала преобразовать свои случайные нормали, чтобы удалить даже случайное отклонение от нулевого среднего и тождественной ковариации (делая выборочное среднее ноль и ковариационную выборку ), а затем действовать как прежде. Но этот начальный шаг по удалению выборочного отклонения от точного среднего 0 , дисперсия I мешает распределению. (В небольших образцах это может быть довольно серьезным.)In 0 I
Это может быть сделано путем вычитания среднего значения выборки из ( z ∗z ) и вычисления разложения Холецкого z ∗ . Если L ∗ является левым фактором Холецкого, то z ( 0 ) = ( L ∗ ) - 1 z ∗ должно иметь выборочное среднее значение 0 и ковариационную единицу выборочной выборки. Затем вы можете рассчитать y = L z ( 0 ) + μz∗=z−z¯ z∗ L∗ z(0)=(L∗)−1z∗ y=Lz(0)+μ и есть образец с желаемыми моментами образца. (В зависимости от того, как определены количества пробы, может быть очень маленькая скрипка, связанная с умножением / делением на такие факторы, как , но это достаточно легко определить, что нужно.)n−1n−−−√
источник
@Glen_b дал хороший ответ (+1), который я хочу проиллюстрировать некоторым кодом.
cov(X)
Как генерировать данные с заранее заданной выборкой корреляционной или ковариационной матрицы?
Вот продолжение моего примера Matlab:
Теперь по
cov(X)
мере необходимости возвращаетсяисточник