обратное преобразование Коши - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь использовать метод обратного кумулятивного распределения для построения гистограммы из стандартного распределения Коши, и я получаю странный график, который не похож на стандартный коши из учебника. Я думаю, что у меня правильная обратная функция (x = tan (pi * (x - 1/2))), поэтому я был бы признателен за некоторую помощь. Вот код r, который я использовал:

n <- 10000
u <- runif(n)
c.samp <- sapply(u, function(u) tan(pi*(u - 1/2)))
hist(c.samp, breaks = 90, col = "blue",
    main = "Hist of Cauchy")

Результирующий график просто не выглядит правильно:

enter image description here

Любая помощь приветствуется, спасибо.

1 Ответ

0 голосов
/ 08 ноября 2018

Гистограмма и метод выборки верны.

Сравните результаты со следующим (который использует функцию выборки R Коши).

c.samp2 <- rcauchy(n)
hist(c.samp2, breaks = 90, col = "blue",
     main = "Hist of Cauchy 2")

Вывод здесь также выглядит неверно, но это не так.

Во-первых, вы должны заметить, что ось x по умолчанию выбрана на основе экстремальных значений, с которыми вы можете столкнуться. Как вы, вероятно, знаете, распределение Коши чрезвычайно жирнохвостое и очень велико, но ожидаются редкие значения. При запуске 10000 выборок из распределения Коши эти относительно немногие единичные измерения сжимают график и не отображаются на графике, потому что для каждого бина в этих экстремумах выделяется очень мало наблюдений.

Параметры по умолчанию для того, как hist выбирает ячейки, также плохо подходят для распределения, как Коши. Попробуйте, например,

hist(c.samp2, breaks = "FD", col = "blue",
     bins = 50,
     main = "Hist of Cauchy 2",
     xlim = c(-500, 500))

enter image description here

Предлагаю внимательно прочитать страницу help("hist") и поиграться с параметрами, чтобы получить хорошую и полезную гистограмму.

Изменяя выбранные диапазоны по оси X, используя шкалу вероятности по оси Y, добавляя теоретическое распределение и «коврик», вы получаете что-то более полезное.

hist(c.samp, breaks = "FD", col = "blue",
     main = "Hist of Cauchy distribution",
     xlim = c(-50, 50),
     freq = FALSE)
curve(dcauchy, add = TRUE, col = "red")
rug(c.samp)

enter image description here

Обратите внимание, что использование c.samp или c.samp2 теперь почти не меняет сюжет.

...