如何在一个图中绘制拟合图和伽玛分布的实际图?

时间:2016-01-12 07:35:24

标签: r ggplot2 statistics model-fitting gamma-distribution

STEP.1。加载所需的包。

library(ggplot2)
library(MASS)

Step.2。生成适合伽玛分布的10,000个数字。

x <- round(rgamma(100000,shape = 2,rate = 0.2),1)
x <- x[which(x>0)]

STEP.3开始。绘制pdf(概率密度函数),假设我们不知道哪个分布x适合。

t1 <- as.data.frame(table(x))
names(t1) <- c("x","y")
t1 <- transform(t1,x=as.numeric(as.character(x)))
t1$y <- t1$y/sum(t1[,2])
ggplot() + geom_point(data = t1,aes(x = x,y = y)) + theme_classic()

enter image description here

Step.4。从图表中,我们可以了解到x的分布与伽马分布非常相似,因此我们在fitdistr()包中使用MASS来获取shape和{{}的参数1}}伽马分布。

rate

Step.5。在同一个图中绘制实际点(黑点)和拟合图(红线),这是问题,请先查看图。

fitdistr(x,"gamma") 
##       output 
##       shape           rate    
##   2.0108224880   0.2011198260 
##  (0.0083543575) (0.0009483429)

enter image description here

问题1:实际参数为ggplot() + geom_point(data = t1,aes(x = x,y = y)) + geom_line(aes(x=t1[,1],y=dgamma(t1[,1],2,0.2)),color="red") + theme_classic() shape=2,我使用函数rate=0.2获取的参数为fitdistr()shape=2.01。这两个几乎是一样的,但为什么拟合图不能很好地拟合实际点,在拟合图中一定有问题,或者我绘制拟合图的方式和实际点是完全错误的,我应该怎么做?

问题2:在我获得我建立的模型的参数后,我以哪种方式评估模型,例如线性模型的rate=0.20RSS(residual square sum)的{​​{1}}, p-value和其他测试?我的统计知识很差,请帮我解决这两个问题,谢谢!(ps:我在谷歌和stackoverflow上搜索了很多次,但它不起作用,所以不投票这个问题没用,谢谢! )

1 个答案:

答案 0 :(得分:1)

出于某种原因,您的拟合线似乎正好是10倍高:

ggplot() + geom_point(data = t1,aes(x = x,y = y)) +     
  geom_line(aes(x=t1[,1],y=(dgamma(t1[,1],2,0.2))/10),color="red") + 
  theme_classic()

完美契合: enter image description here

正如jbaums所说,这是由每个dx的密度在这种情况下为0.1引起的。