4

我做了一个分布拟合,正在查看 QQ-Plot,想知道是否有一种简单的方法可以从图形中获取相应的值。

library("fitdistrplus")
data <- c(1050000, 1100000, 1230000, 1300000, 1450000, 1459785, 1654000, 1888000)
lognormalfit <- fitdist(data, "lnorm")
qqcomp(lognormalfit)

使用最后一行代码,我收到 QQ-Plot 而不计算值。但我也对这些价值观感兴趣。我怎样才能获得它们?

最好的问候诺比

4

2 回答 2

0

qqcomp可以选择使用以下方式生成绘图ggplot2:这种类型的绘图返回带有数据的对象。所以你可以用

plotData <- qqcomp(lognormalfit, plotstyle = "ggplot") 

然后您可以使用从绘图对象中获取相关数据

plotData$data
#   values   ind   sdata
#1 1026674 lnorm 1050000
#2 1158492 lnorm 1100000
#3 1247944 lnorm 1230000
#4 1327616 lnorm 1300000
#5 1407939 lnorm 1450000
#6 1497825 lnorm 1459785
#7 1613479 lnorm 1654000
#8 1820639 lnorm 1888000
于 2018-09-29T23:01:23.427 回答
0

为了详细说明我上面的评论,您可以像这样在 R 中编辑一个函数:

qqcompValues <- edit(qqcomp)

在编辑器中,将第 111 行替换为以下内容:

return(data.frame(x=fittedquant, y=sdata))

请注意,上述编辑假设您使用的是默认的 plotstyle="graphics" 函数参数。

然后,您可以像这样获得 QQ 值:

qqValues <- qqcompValues(lognormalfit)
qqValues
        x       y
1 1026674 1050000
2 1158492 1100000
3 1247944 1230000
4 1327616 1300000
5 1407939 1450000
6 1497825 1459785
7 1613479 1654000
8 1820639 1888000
于 2018-09-29T22:02:38.420 回答