【问题标题】:Plotting power plot in R without using ggplot2()?在不使用 ggplot2() 的情况下在 R 中绘制功率图?
【发布时间】:2017-10-02 04:07:18
【问题描述】:

无法为不同的 alpha 水平创建不同的幂函数图。这是我目前所拥有的,但我无法弄清楚如何创建表示跨不同 alpha 级别的平滑幂函数的多条线:

d <- data.frame()
for (s in seq(0,.5,.05)) {
  for (n in seq(20,500,by=20)){
    d <- rbind(d,power.t.test(n=n,delta = 11,sig.level=s,sd= 22.9))
  }
}

d$sig.level.factor <-as.factor(d$sig.level)
plot(d$power~d$n, col=d$sig.level.factor)

for i in length(sig.level.factor){
  lines(d$n[d$sig.level.factor==d$sig.level.factor[i]],d$power[d$sig.level.factor==d$sig.level.factor[i]], type="l", lwd=2, col=colors[n])
}


for (i in 1:length(seq(0,.5,.05))){
  lines(d$n[d$sig.level.factor==d$sig.level[i]], d$power, type="l", lwd=2, col=colors[i])
}
for (i in 1:length(d$sig.level.factor)){
  lines(d$n[d$sig.level.factor==i], d$power[d$sig.level.factor==i], type="l", lwd=2, col=colors[i])
}

我的目标是创建线条,以显示连接所有包含不同样本大小的等效 alpha 值的点的平滑曲线。

【问题讨论】:

  • 我会尝试类似sp &lt;- split(d, d$sig.level.factor); sapply(seq_along(sp), function(ii) with(sp[[ii]], lines(n, power, col = palette()[ii])))

标签: r


【解决方案1】:

答案稍晚,但希望您仍然可以使用它。您可以使用sapplyn 和显着性水平上创建一个结果矩阵,然后使用超级有用的功能matplot 一次性绘制所有内容:

n <- seq(20, 300, by=10)
alphas <- seq(0, .25, .05)
res <- sapply(alphas, function(s) {power.t.test(n=n, delta=11, sig.level=s, sd= 22.9)$power})
matplot(n, res, type="l", xlab="Sample size", ylab="Power")

power.t.testpower.prop.test 有一个令人讨厌的“特征”,那就是它没有完全矢量化所有参数。但是,您的情况(输出是功率)会使事情变得更容易。

【讨论】:

    猜你喜欢
    • 2022-08-13
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2018-12-28
    • 2021-01-03
    • 2014-06-07
    • 1970-01-01
    相关资源
    最近更新 更多