r - 在 R 中模拟 n=25、mean=45、sd=4 的 100 个样本
问题描述
这是我拥有的代码
sample<-rnorm(25,45,4)
sample[1:100]
但它只返回几个样本,其余的则为 NA。
我对 R 很陌生,所以我不知道该怎么做。
解决方案
这是一个解决方案。
首先,用 模拟数据replicate
,就像我在评论中所说的那样。来自help("replicate")
:
replicate 是 sapply 常用的包装器,用于重复评估表达式(通常涉及随机数生成)。
set.seed(2021)
data <- replicate(100, rnorm(25, 45, 4))
现在运行测试,结果保存在一个列表中。
alpha <- 0.05
ttest_list <- apply(data, 2, t.test, mu = 43, alternative = "less", conf.level = 1- alpha)
ttest_list[[1]]
#
# One Sample t-test
#
#data: newX[, i]
#t = 3.1329, df = 24, p-value = 0.9977
#alternative hypothesis: true mean is less than 43
#95 percent confidence interval:
# -Inf 47.38754
#sample estimates:
#mean of x
# 45.83782
#
如果apply
循环对 OP 来说仍然不是很清楚,这经常发生在 R 的新用户身上,那么下面的for
循环可能是一个更好的选择。
测试列表是预先创建的,并在循环中填充了测试结果。注意使用seq_along
.
ttest_list2 <- vector(mode = "list", length = ncol(data))
for(i in seq_along(ttest_list2)){
ttest_list2[[i]] <- t.test(data[, i], mu = 43, alternative = "less", conf.level = 1- alpha)
}
可以使用 提取感兴趣的值sapply
。
tstat <- sapply(ttest_list, '[[', 'statistic')
pvalues <- sapply(ttest_list, '[[', 'p.value')
tstat2 <- sapply(ttest_list2, '[[', 'statistic')
pvalues2 <- sapply(ttest_list2, '[[', 'p.value')
两种进行测试的方式是等效的。
identical(tstat, tstat2)
#[1] TRUE
identical(pvalues, pvalues2)
#[1] TRUE
不在问题中:
hist(tstat, prob = TRUE)
推荐阅读
- python-3.x - Python:为什么条目设置为1
- jquery - 循环内的 Jquery ajax 仅在第一个循环上运行
- angular6 - 以下是javascript代码,我应该如何将我的angularjavascript代码转换为打字稿
- php - 使用复选框的多个选定的 html 表行数据未发送到电子邮件地址
- visual-studio-code - 在树莓派 3 上安装 Visual Studio 代码时未经授权的软件包
- angular - 完全声明表单控件和不在角度 2+ 中有什么区别
- c++ - 在 C++ 中查找最小和连续子数组的开始和结束索引
- javascript - aws-amplify Auth.currentSession() 一小时后未提供刷新的令牌
- javascript - Javascript 删除事件
- ghc - 如何让 c2hs 与 ghc CPP 扩展一起工作?