【问题标题】:Draw fitted Exgaussian density curve in ggplot2在ggplot2中绘制拟合的Exgaussian密度曲线
【发布时间】:2018-05-19 04:38:40
【问题描述】:

我有一组用于 Ex-gaussian 曲线的估计参数(即 mu、sigma、tau)。

目前我正在通过基于这些参数模拟数据并将它们绘制在 ggplot 中来创建该分布的可视化。

我宁愿创建一个可视化效果,它实际上是一条平滑拟合的前高斯曲线 - 即带有我估计的参数的数据的估计曲线。目标是使具有相同参数的曲线不会出现不同的外观。

这是我目前使用的模拟方法:

library(retimes)
library(ggplot2)

g <- rexgauss(1000,mu=1,sigma = 1,tau =1)
g <- as.data.frame(g); colnames(g) <- "obs"

ggplot(g) + geom_density(aes(x = obs), size=1, alpha=.4)

【问题讨论】:

    标签: r ggplot2 data-visualization


    【解决方案1】:

    您可以使用ggplot2 中的stat_function。它接受fun 中的一个函数,以及传递给args 中该函数的参数。它适用于您想要将模拟与计算分布进行比较的情况,因为您提供给 aes 的 x 值将自动用于显示函数,而无需您进行任何工作来匹配它们向上或计算模拟中 x 值的范围。

    以下是retimes::rexgauss 的示例。我还简化了您的数据框创建,并将参数放在一个向量中,以便您可以在模拟和计算函数中使用它们。

    我的笔记本电脑太慢了,无法完成所有 1000 次观察,所以你的笔记本电脑可能比我的更平滑,更接近计算的分布。

    library(ggplot2)
    
    exgauss_params <- c(mu = 1, sigma = 1, tau = 1)
    exgauss_sim <- data.frame(obs = retimes::rexgauss(n = 100, exgauss_params))
    
    ggplot(exgauss_sim, aes(x = obs)) +
      geom_density(aes(color = "simulated")) +
      stat_function(aes(color = "calculated"), 
        fun = retimes::dexgauss, args = exgauss_params)
    

    reprex package (v0.2.0) 于 2018 年 5 月 18 日创建。

    【讨论】:

    • 谢谢!像梦一样工作。我很欣赏详细的细分。
    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 2017-03-31
    • 2015-02-23
    • 1970-01-01
    • 2017-06-19
    • 2017-02-18
    • 2013-03-17
    相关资源
    最近更新 更多