# 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

1 | ```
PVR.confint(obj, variable, skewbeta = FALSE)
``` |

### Arguments

`obj` |
A list of objects fitted by |

`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. |

### 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.

### Value

An object of class `PVR.confint`

with items

`estimate` |
the pooled parameter estimate(s) (the average across completed-data estimates) |

`ci` |
the confidence intervals based on the PVR method |

`lower.var` |
the lower pseudo-variance(s) |

`upper.var` |
the upper pseudo-variance(s) |

`conflev` |
the confidence level: this is determined by the confidence level (1-alpha) used in the input fit objects |

`call` |
the function call |

`variable` |
the variable(s) for which confidence intervals were computed |

### Author(s)

Georg Heinze

### 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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | ```
#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)
``` |