gpt4 book ai didi

R:如何使用 ggplot2 的 stat_function 绘制gumbel 分布

转载 作者:行者123 更新时间:2023-12-01 07:08:07 24 4
gpt4 key购买 nike

如果这是相当微不足道的,请耐心等待,如果我遗漏了任何内容,请随时提出问题......

我正在尝试根据以下链接进行一些 50 年的极端风计算

http://www.wasp.dk/Products/weng/ExtremeWinds.htm

他们似乎使用了gumbel 分布,所以我使用了包“evir”中的函数gumbel 来拟合数据的分布,并使用包“evd”中的函数dgumbel 作为绘图函数。

package("evd")
package("evir")

speeds2 <- data.frame(speed=sample(10:50,1000,rep=TRUE))
gumbel(speeds2$speed)

然后我尝试使用 ggplot2 的 stat_function 来绘制它,就像这样(除了现在我已经为 loc 和 scale 输入了虚拟值。
library(ggplot2)
ggplot(data=speeds2, aes(x=speed)) +
stat_function(fun=dgumbel, args=list(loc=1, scale=0.5))

我收到以下错误:
Error in dgev(x, loc = loc, scale = scale, shape = 0, log = log) : 
unused argument(s) (loc = loc, scale = scale, shape = 0, log = log)

我不确定我是否以正确的方式这样做。任何指针将不胜感激。

最佳答案

这是我编写的一个通用函数,用于简化拟合和经验密度的数据绘图。

# FUNCTION TO DRAW HISTOGRAM OF DATA WITH EMPIRICAL AND FITTED DENSITITES
# data = values to be fitted
# func = name of function to fit (e.g., 'norm', 'gumbel' etc.)
# start = named list of parameters to pass to fitting function
hist_with_density = function(data, func, start = NULL){
# load libraries
library(VGAM); library(fitdistrplus); library(ggplot2)

# fit density to data
fit = fitdist(data, func, start = start)
args = as.list(fit$estimate)
dfunc = match.fun(paste('d', func, sep = ''))

# plot histogram, empirical and fitted densities
p0 = qplot(data, geom = 'blank') +
geom_line(aes(y = ..density..,colour = 'Empirical'),stat = 'density') +
stat_function(fun = dfunc, args = args, aes(colour = func)) +
geom_histogram(aes(y = ..density..), alpha = 0.4) +
scale_colour_manual(name = '', values = c('red', 'blue')) +
opts(legend.position = 'top', legend.direction = 'horizontal')
return(p0)
}

以下是您将如何使用它的两个示例
示例 1:安装 Gumbel
data1 = sample(10:50,1000,rep=TRUE)
(hist_with_density(data1, 'gumbel', start = list(location = 0, scale = 1)))

enter image description here

示例 2:拟合正态分布
data2 = rnorm(1000, 2, 1)
(hist_with_density(data2, 'norm'))

enter image description here

关于R:如何使用 ggplot2 的 stat_function 绘制gumbel 分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6847450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com