如何计算R中Cox回归的效应量的统计功效?

时间:2018-10-05 10:01:52

标签: r

很抱歉,这是一个非常笼统的问题,但是我的Google技能使我完全无法接受。

根据Cox PH测试,我想针对每种效应大小(或至少0.1)绘制样本大小与功效的关系图。一位同事(现已离开)在R中作为Cox回归的占位符进行了线性模型功效分析。那里有软件包(pwr),但没有一个可以处理Cox回归。

我需要在R中执行此操作,因此我可以将Cox分析的结果叠加在此功效分析之上,以指示我的结果确实有多准确。

这是我所介绍的内容的屏幕快照,本质上是我希望重新创建的内容,而不会被眼睛蒙蔽。

enter image description here

1 个答案:

答案 0 :(得分:2)

功效被定义为条件概率Pr(reject H0 | H1 is true)It can be shown可以通过以下函数来近似简单的单面 t 测试的功效

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

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

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

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 (%)")

enter image description here

我将微调留给您。调整此示例以说明不同的效应量,样本量和标准偏差也很简单。