r - 运行循环以改变样本数量
问题描述
我为 gamma 和对数正态分布的矩设置了一些初始参数,并应用 Kolmogorov-Smirnov 检验来获得 p 值。我的目标是针对不同的 N 显示针对 N 的 p 值图。假设在 5 到 1000 之间。我将如何实现这一点?
mean <- 10
var <- 40
N <- 100
gamsample <- rgamma(N, shape=mean^2/var, rate=mean/var)
lnsample <- rlnorm(N, meanlog=log(mean)-log(1+mean^2/var)/2,
sdlog=sqrt(log(1+(mean^2/var))))
ks.test(gamsample, lnsample)$p.value
解决方案
使用sapply()
:
mean <- 10
var <- 40
myP <- function(N) {
gamsample <- rgamma(N, shape=mean^2/var, rate=mean/var)
lnsample <- rlnorm(N, meanlog=log(mean)-log(1+mean^2/var)/2,
sdlog=sqrt(log(1+(mean^2/var))))
ks.test(gamsample, lnsample)$p.value
}
N <- 5:1000
sapply(N, myP)
或(更安全)vapply(N, myP, FUN.VALUE = 9.9)
。
如果您想要一个数据框作为结果,您可以执行以下操作:
results <- data.frame(n=N, pval=sapply(N, myP))
对于@AndreElrico 在他的(已删除)答案中提出的情节:
ggplot2::ggplot(results, aes(x=n,y=pval)) + geom_point()
推荐阅读
- javascript - 如何使用 Firebase Firestore 的 `docChanges` 方法?
- javascript - vscode 中的未绑定断点,用于在 docker 容器中调试 nodejs 应用程序
- python - Numpy 300 维数组在字节和缓冲区之后转换为 150 维
- php - 是否可以在 foreach 循环中回显另一个 foreach 数组值?
- javascript - 等待多个文件的文件内容
- linux - 我无法下载 objconv,这是 PATH 问题吗?
- kotlin - 动态扩展循环顶部边框
- msbuild - 错误 MSB3326:无法导入以下密钥文件 XXXXXXSigningKey.snk
- gpu - MPI+OpenACC:#pragma acc host_data use_device() 如何工作?
- python - OOP 项目 - 初学者 - 寻找反馈