【问题标题】:Generating multiple confidence intervals from samples of a normal distribution in R从 R 中的正态分布样本生成多个置信区间
【发布时间】:2012-05-14 06:46:17
【问题描述】:

我是一名统计学专业的学生和 R 初学者(轻描淡写),尝试为随机生成的正态分布样本生成多个置信区间作为作业的一部分。

我使用了函数

data <- replicate(25, rnorm(20, 50, 6))

从 N(50, 6^2) 分布(在双矩阵中)生成 25 个大小为 n=20 的样本。

我的问题是,如何为该分布的每个样本找到 95% 的置信区间?我知道我可以使用 colMeans(data) 和 sd(data) 来查找每个样本的样本均值和样本标准差,但是我脑子里放屁,试图想出一个可以为所有列生成置信区间的函数在双矩阵(数据)中。

到目前为止,我的(非常粗略的)解决方案包括创建函数

left <- function (x,y){x-(qnorm(0.975)*y/sqrt(20))}
right <- function (x,y){x+(qnorm(0.975)*y/sqrt(20))}

left(colMeans(data), sd(data)
right(colMeans(data), sd(data)

生成左右边界的 2 个向量。请让我知道是否有更好的方法可以做到这一点。

【问题讨论】:

  • 除了一般的小修改之外,我继续修复了我认为是您的代码中创建函数leftright 的错字。如果您觉得我弄错了,请随时回滚。
  • 嗯,如果您有一个仅基于测量平均值和 SD 的样本置信区间的通用公式,那么编写该公式的一个很好的矢量化 R 版本可以让您获得所有答案一次。或者,正如我的一位教授曾经说过的(在互联网出现之前),“不要解决问题:在书中找到类似的问题,然后做同样的事情!” :-)

标签: r confidence-interval


【解决方案1】:

我想你可以使用t.test() 函数。它返回给定数字向量的平均值和 95% 置信区间。

# Create your data
data <- replicate(25, rnorm(20, 50, 6))
data <- as.data.frame(data)

创建数据后,您可以使用lapply() 函数将t.test() 函数应用于所有列。

# Apply the t.test function and save the results
results <- lapply(data, t.test)

如果您只想查看返回的置信区间或均值,可以使用美元符号运算符调用它们。例如,对于原始数据框的第一列,您可以键入以下内容:

# Check 95% CI for sample one
results[[1]]$conf.int[1:2]

您可以想出一种更有说服力的方法来将这些数据保存到结果数据框中。请记住,您始终可以使用str() 命令查看可以从对象中提取的单个信息位。例如:

# Example
example <- t.test(data[,1])
str(example)

希望这会有所帮助。试试这个链接了解更多信息:Using R to find Confidence Intervals

【讨论】:

    猜你喜欢
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多