首页 > 解决方案 > R中的变量如何,中心限制

问题描述

我有以下任务:假设感兴趣的人口可以通过 p = 0.5 的伯努利分布建模。对于每个样本大小 n,从 p = 0.5 的伯努利分布中模拟 r = 5, 000 次抽取(通过使用 for 循环 (i in 1:r)),并计算每次抽取的标准化样本平均值。

最后一个直方图看起来不错,有曲线,但第 1 和 2ns 是错误的。也许有人能帮我解决这个问题。在此先感谢您的时间!

我做了以下工作:

set.seed(2005)
x1 <- rbinom(5000,3,0.5)

par(mfrow=c(2,2))


hist(x=x1,
  main=expression(paste(" Random Variables with",size,"=1 and",prob,"=0.5")),  
  sub="Standardized value of smple sample avearge",
  xlab="n=3", ylab="Probability", probability = TRUE)
curve(dnorm(x, mean = mean(x), sd=sd(x)), add = TRUE, col="blue")

标签: rhistogram

解决方案


本质上,前两个面板中发生的情况是,对于一个小n的直方图中断以不优雅的方式计算。您可以通过让中断取决于数据范围来解决此问题。在这里,我根据数据的范围是否小于10来选择breaks。如果是TRUE,则手动计算breaks,否则使用默认"Sturges"算法进行breaks。

par(mfrow=c(2,2))

N <- c(2, 5, 25, 100)

for (i in seq_along(N)) {
  set.seed(2015 + i)
  n <- N[i]
  
  xx <- rbinom(10000, n, 0.78)
  if (diff(range(xx)) < 10) {
    breaks <- seq(floor(min(xx)), ceiling(max(xx)))
  } else {
    breaks <- "Sturges"
  }
  
  hist(
    x = xx, breaks = breaks,
    main=expression(paste("Bernoulli Random Variables with",size,"=1 and",prob,"=0.78")), 
    sub = "Standardized value of sample average",
    xlab = paste0("n=",n), ylab = "Probability", probability = TRUE
  )
  curve(dnorm(x, mean = mean(xx), sd=sd(xx)), add = TRUE, col="blue")
}

reprex 包(v0.3.0)于 2021-01-07 创建


推荐阅读