Learn R Programming

logistf (version 1.20)

PVR.confint: Pseudo-variance modification of Rubin`s rules

Description

The pseudo-variance modification proposed by Heinze, Ploner and Beyea (2013) provides a quick way to adapt Rubin`s rules to situations of a non-normal distribution of a regression coefficient. However, the approxiation is less accurate than that of the CLIP method.

Usage

PVR.confint(obj, variable, skewbeta = FALSE)

Arguments

obj
A list of objects fitted by logistf.
variable
The variable(s) to compute the PVR confidence intervals, either provided as names or as numbers.
skewbeta
If TRUE, incorporates information on the skewness of the parameter estimates across the imputed data sets.

Value

  • An object of class PVR.confint with items
  • estimatethe pooled parameter estimate(s) (the average across completed-data estimates)
  • cithe confidence intervals based on the PVR method
  • lower.varthe lower pseudo-variance(s)
  • upper.varthe upper pseudo-variance(s)
  • conflevthe confidence level: this is determined by the confidence level (1-alpha) used in the input fit objects
  • callthe function call
  • variablethe variable(s) for which confidence intervals were computed

Details

The pseudo-variance modification computes a lower and an upper pseudo-variance, which are based on the distance between profile likelihood limits and the parameter estimates. These are then plugged into the usual Rubin`s rules method of variance combination.

References

Heinze G, Ploner M, Beyea J (2013). Confidence intervals after multiple imputation: combining profile likelihood information from logistic regressions. Statistics in Medicine, to appear.

Examples

Run this code
#generate data set with NAs
freq=c(5,2,2,7,5,4)
y<-c(rep(1,freq[1]+freq[2]), rep(0,freq[3]+freq[4]), rep(1,freq[5]), rep(0,freq[6]))
x<-c(rep(1,freq[1]), rep(0,freq[2]), rep(1,freq[3]), rep(0,freq[4]), rep(NA,freq[5]),
   rep(NA,freq[6]))
toy<-data.frame(x=x,y=y)


# impute data set 5 times
set.seed(169)
toymi<-list(0)
for(i in 1:5){
  toymi[[i]]<-toy
  y1<-toymi[[i]]$y==1 & is.na(toymi[[i]]$x)
  y0<-toymi[[i]]$y==0 & is.na(toymi[[i]]$x)
  xnew1<-rbinom(sum(y1),1,freq[1]/(freq[1]+freq[2]))
  xnew0<-rbinom(sum(y0),1,freq[3]/(freq[3]+freq[4]))
  toymi[[i]]$x[y1==TRUE]<-xnew1
  toymi[[i]]$x[y0==TRUE]<-xnew0
}


# logistf analyses of each imputed data set
fit.list<-lapply(1:5, function(X) logistf(data=toymi[[X]], y~x, pl=TRUE, dataout=TRUE))

# CLIP confidence limits
PVR.confint(obj=fit.list)

Run the code above in your browser using DataLab