我想绘制从观察数据的直方图上的一组观察得到的伽马密度函数。我能够生成伽玛拟合的直方图和参数估计。这是针对来自主数据集的多个数据子集进行的。如何在此循环中创建的每个直方图上绘制伽马密度函数?
我目前有:
library(MASS)
species <- c('acesac', 'acesac', 'acesac', 'acesac', 'acesac', 'acesac',
'polbif', 'polbif', 'polbif', 'polbif', 'polbif', 'polbif')
tmean <- c(2,3,5,6,6,7,5,6,6,6,8,9)
Data <- data.frame(species, tmean)
for (i in unique(Data$species)){
subdata <- subset(Data, species ==i)
hist(subdata$tmean, main = i)
dist <- fitdistr(subdata$tmean, "gamma")
}
我认为我应该使用lines()
,但不确定如何指定?
答案 0 :(得分:0)
我会在您的示例中添加library(MASS)
。您可能想尝试使用curve
并使用add = TRUE
执行某些操作。另一种选择是使用library(fitdistrplus)
,因为它可以直接绘制dist
的输出;但是,我找不到一种方法(很快)改变情节标题。
library(MASS)
species <- c('acesac', 'acesac', 'acesac', 'acesac', 'acesac', 'acesac',
'polbif', 'polbif', 'polbif', 'polbif', 'polbif', 'polbif')
tmean <- c(2,3,5,6,6,7,5,6,6,6,8,9)
Data <- data.frame(species, tmean)
for (i in unique(Data$species)) {
subdata <- subset(Data, species ==i)
dist <- fitdistr(subdata$tmean, "gamma")
hist(subdata$tmean, main = i)
curve(dgamma(x, shape = dist$estimate[1], rate = dist$estimate[2]),
add = TRUE,
col = "red")
}
根据我对library(fitdistrplus)
的评论,请参阅以下内容:
library(fitdistrplus)
for (i in unique(Data$species)) {
subdata <- subset(Data, species ==i)
dist <- fitdistrplus::fitdist(subdata$tmean, "gamma")
plot(dist)
}
请注意,您将获得其他图形(Q-Q图,经验和理论CFS以及P-P图),并且为#34; free&#34;绘制密度线。但是,您无法添加main = i
。我确信比我聪明的人可以找到一种快速添加标题或修改fitdistrplus::plot.fitdist
方法的方法 - 可能值得单独提问。