我有一组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)
答案 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。