【问题标题】:inverse transform cauchy dist r逆变换柯西分布
【发布时间】:2018-11-08 18:04:18
【问题描述】:

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


    【解决方案1】:

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

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

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

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

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

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

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

    我建议仔细阅读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)
    

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

    【讨论】:

    • @question 很高兴我能提供帮助并欢迎来到 SO。 如果您认为该问题已回答,请将其标记为已回答(在上下投票按钮下方)。
    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2018-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多