【问题标题】:Fitting Laplace distribution to data将拉普拉斯分布拟合到数据
【发布时间】:2021-04-18 18:35:58
【问题描述】:

我想将拉普拉斯分布拟合到密度由公式给出的数据:

正如我在 wikipedia 上读到的那样,mu 参数的良好估计量是中位数,而 tau - 与中位数的平均偏差。

所以我做了什么:

set.seed(42)
# Create a vector for which Laplace distribution will be fitted
vec <- rexp(1000)
# Defining laplace distribution 
dlaplace <- function(x, mu, b) { 
  1/(2*b)*exp(-(abs(x - mu))/b)
}
#Estimating two parameters
mu <- median(vec)
tau <- mean(abs(vec-mu))

但是现在,如果我们在适合我们数据的密度的直方图上进行搜索,我们最终会得到以下图像:

library(ggplot2)
vals <- dlaplace(vec, mu, tau)
ggplot() + geom_histogram(aes(vals), binwidth = 3) + 
  geom_line(aes(x = 1:length(vec), y = vec))

这表明它根本不适合这种分布。我的问题是:

这很糟糕,因为我将我的向量从不是拉普拉斯的指数分布中随机化,还是我做错了什么?

【问题讨论】:

  • 看看hist(vals),看看它是否符合您的期望。
  • PDF 的 AUC 为 1。但您在 y 轴上绘制的是计数而不是比例,这意味着您观察到的数据的直方图的 AUC >> 1。您有一个缩放比例问题。

标签: r ggplot2 distribution


【解决方案1】:

你在找这个吗?

vals <- dlaplace(vec, mu, tau)
df1 <- data.frame(vec, vals)

ggplot(df1, aes(vec)) +
  geom_histogram(aes(y = ..density..), fill = "grey", binwidth = 0.5) +
  geom_line(aes(y = vals), color = "steelblue")

【讨论】:

    猜你喜欢
    • 2014-07-16
    • 2018-02-26
    • 2021-03-03
    • 2021-10-17
    • 2015-10-10
    • 1970-01-01
    • 2011-04-29
    • 2020-12-23
    相关资源
    最近更新 更多