r - 在 R 中测试置信区间
问题描述
我目前已经构建了一个 95% 的置信区间,然后用来replicate()
随机生成 1000 个置信区间。我想测量有多少间隔包含我的平均值。我知道理论上应该有 950 个,但我怎样才能得到明确的答案?下面列出了我使用的函数和平均值。
z <- function(a,b,c){
error <- rnorm(a, b, c) * c / sqrt(a)
left <- b - error
right <- j + error
paste("[",round(left,2),";",round(right,2),"]")
}
set.seed(123)
replicate(1000, z(10,1,1))
我从这里去哪里?
解决方案
也许这就是你想要做的?
这z()
将返回正态分布的总体均值的置信区间。
z <- function(N, mu, std, cl=95) {
alpha <- (1-cl/100)/2
# CI for population mean
sep <- std/sqrt(N)
z_s <- qnorm(1 - alpha)
pop_lower <- mu - z_s*sep
pop_upper <- mu + z_s*sep
c(lower=pop_lower, upper=pop_upper)
}
这意味着如果我产生一个随机变量mean(rnorm(20, 0, 1))
,那么我们期望它的值在z(20, 0, 1, 95)
概率 0.95 范围内。
为了测试这一点,我们可以做
# specify parameters
N <- 20
mu <- 0
std <- 1
# produce a good number (10,000) of population means
set.seed(1)
r <- replicate(1e4, mean(rnorm(N, mu, std)))
# calculate confidence interval
ci <- z(N, mu, std)
# find which are below, within and above the interval
rc <- cut(r, c(min(r), ci, max(r)), c("below", "within", "above"))
# create a proportion table
round(prop.table(table(rc))*100, 2)
# below within above
# 2.59 95.08 2.33
推荐阅读
- pdf.js - pdf.js 2.11.338:以只读方式显示填写的 AcroForms?
- jquery - jQuery Mobile Popup 在滚动时不断重新定位
- ethereum - 如何将参数作为字节传递给solidity
- javascript - React/Node.js:无法从前端和数据库中删除条目
- microsoft-graph-api - Microsoft Graph REST API v1.0 mailFolder id 不是唯一的?
- neural-network - 在有或没有约束的情况下训练神经网络数据
- google-bigquery - 使用案例语句在 BigQuery 中创建新视图 - 采取 2
- python - 如何检查Excel工作表中列中的每个单元格?
- rust - 如何从函数返回当前工作目录?
- python - python程序将十六进制值转换为ASCII字符串