逆变换柯西分布

inverse transform cauchy dist r

我正在尝试使用逆累积分布方法根据标准柯西分布绘制直方图,但我得到了一个奇怪的图,它看起来不像教科书标准柯西分布。我想我的反函数是正确的 (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")

结果图看起来不正确:

感谢任何帮助,谢谢。

直方图和采样技术是正确的。

将结果与以下(使用 R Cauchy 采样函数)进行比较。

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

这里的输出也看起来不对,其实不然。

首先,您应该注意 x 轴是根据您碰巧遇到的极值默认选择的。正如您可能知道的那样,Cauchy 分布非常肥尾并且非常大,但很少有预期值。当 运行 来自 Cauchy 分布的 10000 个样本时,那些相对较少的单个测量值会挤压图并且不会显示在图上,因为在这些极端情况下只有很少的观测值分配给每个 bin。

hist 如何选择 bins 的默认参数也不太适合像 Cauchy 这样的分布。尝试例如

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

我建议仔细阅读 help("hist") 页面并尝试使用参数以获得良好且有用的直方图。

通过调整所选的 x 轴范围,使用 y 轴概率尺度,添加理论分布和 "rug",您会得到更有用的东西。

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)

请注意,现在使用 c.sampc.samp2 几乎不会改变情节。