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()
Step.4。从图表中,我们可以了解到x
的分布与伽马分布非常相似,因此我们在fitdistr()
包中使用MASS
来获取shape
和{{}的参数1}}伽马分布。
rate
Step.5。在同一个图中绘制实际点(黑点)和拟合图(红线),这是问题,请先查看图。
fitdistr(x,"gamma")
## output
## shape rate
## 2.0108224880 0.2011198260
## (0.0083543575) (0.0009483429)
问题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.20
或RSS(residual square sum)
的{{1}}, p-value
和其他测试?我的统计知识很差,请帮我解决这两个问题,谢谢!(ps:我在谷歌和stackoverflow上搜索了很多次,但它不起作用,所以不投票这个问题没用,谢谢! )