我需要使用95%置信区间拟合S形分布(y = 0~1
),并将x
值设为y=5%
(称为hc5
)。名为ZnOLC50.txt
的原始输入数据文件:
LC50 Proportion
0.089 0.071428571
0.16 0.214285714
1.155 0.357142857
1.51 0.5
3.97 0.642857143
573.8 0.785714286
789 0.928571429
# Load data
>require(MASS)
>require(ggplot2)
>SSDZnOLC50<-read.delim("ZnOLC50.txt", header = TRUE)
>fitSSDZnOLC50<-fitdistr(SSDZnOLC50$LC50, 'lognormal')
# Extract hc5
>(hc5 <- qlnorm(0.05, meanlog = fitSSDZnOLC50$estimate[1], sdlog = fitSSDZnOLC50$estimate[2]))
[1] 0.01789181
>myboot <- function(fitSSDZnOLC50, p){
# resample from fitted distribution
>xr <- rlnorm(fitSSDZnOLC50$n, meanlog = fitSSDZnOLC50$estimate[1], sdlog = fitSSDZnOLC50$estimate[2])
# fit distribition to new data
>fitr <- fitdistr(xr, 'lognormal')
# return HCp
>hc5r <- qlnorm(p, meanlog = fitr$estimate[1], sdlog = fitr$estimate[2])
return(hc5r)
}
# Get 95% confidence interval
>set.seed(1234)
>hc5_boot <- replicate(1000, myboot(fitSSDZnOLC50, p = 0.05))
>quantile(hc5_boot, probs = c(0.025, 0.5, 0.975))
2.5% 50% 97.5%
0.0007278486 0.0370062459 1.4272168899
然后我想根据生成的矩阵hc5
绘制hc5_boot
分布。首先我尝试了这个:
curve(dnorm(x,mean(hc5_boot),sd(hc5_boot)),xlim=c(-1,10),col="Red",lwd=1)
并获得
中显示的曲线然后我也尝试了
> df <- as.data.frame(hc5_boot)
> ggplot(df, aes(x=hc5_boot)) + geom_density() + scale_x_continuous(limits=c(0,4))
并获得
中显示的曲线然而,根据观察结果,这些曲线似乎都不适合2.5%
的{{1}}分位数,因为当0.0007278486
时密度值甚至不接近0。< / p>
所以我想知道出了什么问题,我应该怎么做。