R语言 qq图偏广义误差分布的累积分布函数

0yg35tkg  于 2023-02-20  发布在  其他
关注(0)|答案(2)|浏览(181)

我试图用Theodossiou(http://www.mfsociety.org/modules/modDashboard/uploadFiles/journals/MJ~0~p1a4fjq38m1k2p45t6481fob7rp4.pdf)的概率密度函数计算偏斜广义误差分布的累积分布函数:

在R中,它看起来像这样:

psi <- -0.09547862
m <- 0.1811856
g <- -0.1288893
d <- 0.8029088

c <- (2/(1+exp(-g)))-1
p <- exp(psi)

y <- function(x) ((d**(1-(1/d)))/(2*p))*gamma(1/d)**(-1)*exp(-(1/d)*((abs(x-m)**d)/((1+sign(x-m)*c)**(d)*p**(d))))

我这样做的原因是为了拟合偏斜的广义误差分布到我的数据,并通过创建一个qq图来评估分布是否适合我的数据。所以现在我需要计算累积分布函数,然后是逆cdf。对于逆cdf,我计划使用GofKernel-Package中的逆函数。但为此我需要cdf。无论如何都要用R中的数值积分来计算吗?

xyhw6mcr

xyhw6mcr1#

要通过积分获得累积函数,可以将x值传递给从适当的极低值到上限x进行积分的函数

# First look at the density function
 plot( y(x) ~ x )

 cum <- sapply(x, function(x) integrate(y,-10, x)$value )
 plot( cum ~ x)
 
 # So the inverse is just `x`  as a function of `cum`
 plot( x ~ cum)
ndasle7k

ndasle7k2#

通常,如果要估计累积分布函数,请使用函数ecdf,如下所示:

x <- seq(-10,10,0.1)
Fn <- ecdf(y(x))
plot(Fn)

如果要可视化两个数据集的相似程度,请按如下所示使用qqplot:

y1 <- y(x)            # from your function
y2 <- rnorm(100)      # some generic data
qqplot(y1, y2)        # if the two data sets are from the same 
                      # distribution, you should see a straight line

相关问题