如何解决统计功能规范失败
我正在研究一个类问题,以测试中心极限定理是否也适用于中位数。我已经编写了代码,据我所知,它工作正常。但是我的正态分布图没有显示出来。当它应该创建钟形曲线时,它只是创建一条平线。这是代码:
set.seed(14)
median_clt <- rnorm(1000,mean = 10,sd = 2)
many_sample_medians <- function(vec,n,reps) {
rep_vec <- replicate(reps,sample(vec,n),simplify = "vector")
median_vec <- apply(rep_vec,2,median)
return(median_vec)
}
median_clt_test <- many_sample_medians(median_clt,500,1000)
median_clt_test_df <- data.frame(median_clt_test)
bw_clt <- 2 * IQR(median_clt_test_df$median_clt_test) / length(median_clt_test_df$median_clt_test)^(1/3)
ggplot(median_clt_test_df,aes(x = median_clt_test)) +
geom_histogram(binwidth = bw_clt,aes(y = ..density..),fill = "hotpink1",col = "white") +
stat_function(fun = ~dnorm(.x,sd = 2),col = "darkorchid1",lwd = 2) +
theme_classic()
据我所知,其余代码正常工作-只是无法正确绘制dnorm stat函数。完全相同的统计数据行对我有用,所以我不确定出什么问题了。
解决方法
这条线不太平;与直方图相比,它只是非常伸展。如果我们在x轴上缩小并在y轴上放大,则可以更清楚地看到这一点:
ggplot(median_clt_test_df,aes(x = median_clt_test)) +
geom_histogram(binwidth = bw_clt,aes(y = ..density..),fill = "hotpink1",col = "white") +
stat_function(fun = ~dnorm(.x,mean = 10,sd = 2),col = "darkorchid1",lwd = 2) +
xlim(c(5,15)) +
coord_cartesian(xlim = c(5,15),ylim = c(0,1)) +
theme_classic()
但是为什么呢?
这是因为您正在使用dnorm
来绘制从中位数得出的随机变量的分布,但是直方图是中位数本身的样本。因此,您正在绘制错误的dnorm
曲线。 sd
不应是随机变量的标准偏差,而应是样本中位数的标准偏差:
ggplot(median_clt_test_df,mean = mean(median_clt_test),sd = sd(median_clt_test)),lwd = 2)
theme_classic()
如果您愿意,可以使用均值的理论标准误差代替中位数的测量标准差-这些将非常相似。
# Theoretical SEM
2/sqrt(500)
#> [1] 0.08944272
# SD of medians
sd(median_clt_test)
#> [1] 0.08850221
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。