在ggplot2中绘制拟合的Exgaussian密度曲线

时间:2018-05-18 19:27:59

标签: r ggplot2 data-visualization

我有一组Ex-高斯曲线的估计参数(即mu,sigma,tau)。

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

我宁愿创建一个实际上是平滑拟合的高斯曲线的可视化 - 即用参数I估计的数据的估计曲线。目标是不要让具有相同参数的曲线显示不同。

以下是我正在使用的当前模拟方法:

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)

1 个答案:

答案 0 :(得分:1)

您可以使用stat_function中的ggplot2。它需要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-05-18。