我已经为伽马和对数正态分布的矩设置了一些初始参数,并应用Kolmogorov-Smirnov检验来获得p值.我的目的是显示针对不同N的p值与N的关系图.可以说在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
Run Code Online (Sandbox Code Playgroud)
用途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)
Run Code Online (Sandbox Code Playgroud)
或者(更安全)vapply(N, myP, FUN.VALUE = 9.9).
如果您想要一个数据帧作为结果,您可以:
results <- data.frame(n=N, pval=sapply(N, myP))
Run Code Online (Sandbox Code Playgroud)
对于@AndreElrico在他的(删除)答案中提出的情节:
ggplot2::ggplot(results, aes(x=n,y=pval)) + geom_point()
Run Code Online (Sandbox Code Playgroud)