如何为使用 fitdistr 拟合的数据生成 QQ 图?

机器算法验证 r 分布 拟合优度 指数分布 QQ图
2022-04-12 09:24:03

我正在执行以下操作以使用指数函数拟合我的数据:

# Define the data
data <- c(67, 81, 93, 65, 18, 44, 31, 103, 64, 19, 27, 57, 63, 25, 22, 150, 
          31, 58, 93, 6, 86, 43, 17, 9, 78, 23, 75, 28, 37, 23, 108, 14, 137, 
          69, 58, 81, 62, 25, 54, 57, 65, 72, 17, 22, 170, 95, 38, 33, 34, 68, 
          38, 117, 28, 17, 19, 25, 24, 15, 103, 31, 33, 77, 38, 8, 48, 32, 48, 
          26, 63, 16, 70, 87, 31, 36, 31, 38, 91, 117, 16, 40, 7, 26, 15, 89, 
          67, 7, 39, 33, 58)

# Fit the data to a model
params = fitdistr(data, "exponential")

我得到以下参数:

> params
      rate    
  0.019694623 
 (0.002087626)

我想画一个QQ图,看看拟合有多好。我猜我需要使用生成的参数生成指数分布的数据,然后使用一些函数来绘制 QQ 图,但不知道如何去做。有人可以告诉我如何在 R 中执行此操作吗?

2个回答

试试下面的代码:

simdata <- qexp(ppoints(length(data)), rate = params$estimate)
qqplot(data, simdata)

(受基础 R 实现的启发qqnorm

PS 当使用非基本 R 函数时,您应该说明它们来自哪个库。我不得不谷歌发现那fitdistr是来自 MASS。

您还可以查看Wessa P.,(2008 年),最大似然指数分布拟合,它有一个很好的、记录在案的在线执行问题,并将 R 源代码附加到实际图上。