R: Power and Sample Size for Ordinal Response

popower {Hmisc} | R Documentation

## Power and Sample Size for Ordinal Response

### Description

`popower` computes the power for a two-tailed two sample comparison of ordinal outcomes under the proportional odds ordinal logistic model. The power is the same as that of the Wilcoxon test but with ties handled properly. `posamsize` computes the total sample size needed to achieve a given power. Both functions compute the efficiency of the design compared with a design in which the response variable is continuous. `print` methods exist for both functions. Any of the input arguments may be vectors, in which case a vector of powers or sample sizes is returned. These functions use the methods of Whitehead (1993).

`pomodm` is a function that assists in translating odds ratios to differences in mean or median on the original scale.

### Usage

    popower(p, odds.ratio, n, n1, n2, alpha=0.05)
    ## S3 method for class 'popower'
    print(x, ...)
    posamsize(p, odds.ratio, fraction=.5, alpha=0.05, power=0.8)
    ## S3 method for class 'posamsize'
    print(x, ...)
    pomodm(x=NULL, p, odds.ratio=1)

### Arguments

`p` | a vector of marginal cell probabilities which must add up to one. The `i`th element specifies the probability that a patient will be in response level `i`, averaged over the two treatment groups.
`odds.ratio` | the odds ratio to be able to detect. It doesn't matter which group is in the numerator.
`n` | total sample size for `popower`. You must specify either `n` or `n1` and `n2`. If you specify `n`, `n1` and `n2` are set to `n/2`.
`n1` | for `popower`, the number of subjects in treatment group 1
`n2` | for `popower`, the number of subjects in group 2
`alpha` | type I error
`x` | an object created by `popower` or `posamsize`, or a vector of data values given to `pomodm` that corresponds to the vector `p` of probabilities. If `x` is omitted for `pomodm`, the `odds.ratio` will be applied and the new vector of individual probabilities will be returned. Otherwise if `x` is given to `pomodm`, a 2-vector with the mean and median `x` after applying the odds ratio is returned.
`fraction` | for `posamsize`, the fraction of subjects that will be allocated to group 1
`power` | for `posamsize`, the desired power (default is 0.8)
`...` | unused

### Value

a list containing `power` and `eff` (relative efficiency) for `popower`, or containing `n` and `eff` for `posamsize`.

### Author(s)

Frank Harrell
Department of Biostatistics
Vanderbilt University School of Medicine
f.harrell@vanderbilt.edu

### References

Whitehead J (1993): Sample size calculations for ordered categorical data. Stat in Med 12:2257–2271.

Julious SA, Campbell MJ (1996): Letter to the Editor. Stat in Med 15: 1065–1066. Shows accuracy of formula for binary response case.

### See Also

`simRegOrd`, `bpower`, `cpower`

### Examples

    # For a study of back pain (none, mild, moderate, severe) here are the
    # expected proportions (averaged over 2 treatments) that will be in
    # each of the 4 categories:

    p <- c(.1,.2,.4,.3)
    popower(p, 1.2, 1000)   # OR=1.2, total n=1000
    posamsize(p, 1.2)
    popower(p, 1.2, 3148)
    # If p was the vector of probabilities for group 1, here's how to
    # compute the average over the two groups:
    # p2   <- pomodm(p=p, odds.ratio=1.2)
    # pavg <- (p + p2) / 2

    # Compare power to test for proportions for binary case,
    # proportion of events in control group of 0.1
    p <- 0.1; or <- 0.85; n <- 4000
    popower(c(1 - p, p), or, n)    # 0.338
    bpower(p, odds.ratio=or, n=n)  # 0.320
    # Add more categories, starting with 0.1 in middle
    p <- c(.8, .1, .1)
    popower(p, or, n)   # 0.543
    p <- c(.7, .1, .1, .1)
    popower(p, or, n)   # 0.67
    # Continuous scale with final level have prob. 0.1
    p <- c(rep(1 / n, 0.9 * n), 0.1)
    popower(p, or, n)   # 0.843

    # Compute the mean and median x after shifting the probability
    # distribution by an odds ratio under the proportional odds model
    x <- 1 : 5
    p <- c(.05, .2, .2, .3, .25)
    # For comparison make up a sample that looks like this
    X <- rep(1 : 5, 20 * p)
    c(mean=mean(X), median=median(X))
    pomodm(x, p, odds.ratio=1)  # still have to figure out the right median
    pomodm(x, p, odds.ratio=0.5)

[Package Hmisc version 4.2-0 Index]