【问题标题】:How do I calculate statistical power on effect size of Cox regression in R?如何计算 R 中 Cox 回归效应大小的统计功效?
【发布时间】:2018-10-05 21:56:16
【问题描述】:

很抱歉,这是一个非常笼统的问题,但我的谷歌技能完全让我失望。

我想根据 Cox PH 测试绘制每个效应大小(或至少 0.1)的样本大小与功效。一位同事(现在左)在 R 中生成了一个线性模型功效分析,作为 Cox 回归的占位符。那里有软件包(pwr),但没有一个处理 Cox 回归。

我需要在 R 中执行此操作,以便将 Cox 分析的结果叠加在此功效分析之上,以指示我的结果的准确程度。

这是我所看到的内容的屏幕截图,本质上是我想要重新创建的内容,而不是用肉眼伪造它。

【问题讨论】:

    标签: r


    【解决方案1】:

    功率定义为条件概率Pr(reject H0 | H1 is true)It can be shown 一个简单的单边 t-test 的功率可以通过以下函数来近似

    B <- function(beta, n, sd = 6) {
        sem <- sd / sqrt(n)
        1 - pnorm(1.64 - beta / sem)
    }
    

    这里beta 是效应大小,在这种情况下对应于总体均值(或者在线性模型的语言中,beta 对应于截距)。 n 是样本大小,sd 是描述标准偏差的“可调”参数(因此测量中的不确定性)。我选择了这个值,以便我们(或多或少)从您的图中重现结果。

    我们现在可以计算样本大小n 和效应大小beta 的不同值的功效B。我们选择与您显示的图中相同的值。

    n <- c(100, 500, 2500, 10000, 50000, 250000)
    beta <- c(0.1, 0.2, 0.5, 1.0)
    
    library(tidyverse)
    outer(beta, n, B) %>%
        data.frame(row.names = beta) %>%
        setNames(n) %>%
        rownames_to_column("beta") %>%
        gather(n, power, -beta) %>%
        mutate(
            n = as.numeric(n),
            beta = factor(beta, unique(beta))) %>%
        ggplot(aes(n, power, colour = beta, group = beta)) +
        geom_line() +
        geom_point() +
        scale_y_continuous(labels = scales::percent) +
        scale_x_log10() +
        labs(x = "sample size (N)", y = "power (%)")
    

    我把微调留给你。调整此示例以适应不同的效应大小、样本大小和标准差也很简单。

    【讨论】:

    • 完美!谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 2019-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多