| Type: | Package | 
| Title: | Assessing Risk Predictions for Clustered Data | 
| Version: | 0.2.6 | 
| Date: | 2018-11-18 | 
| Maintainer: | Weiliang Qiu <Weiliang.Qiu@gmail.com> | 
| Depends: | R (≥ 3.4.0) | 
| Imports: | MASS, stats, gee, Hmisc, mvtnorm, utils | 
| Description: | Assessing and comparing risk prediction rules for clustered data. The method is based on the paper: Rosner B, Qiu W, and Lee MLT.(2013) <doi:10.1007/s10985-012-9240-6>. | 
| License: | GPL-2 | GPL-3 [expanded from: GPL (≥ 2)] | 
| NeedsCompilation: | no | 
| Packaged: | 2018-11-18 15:10:36 UTC; ICSA | 
| Author: | Bernard Rosner [aut, ctb], Weiliang Qiu [aut, cre], Meiling T. Lee [aut, ctb] | 
| Repository: | CRAN | 
| Date/Publication: | 2018-11-28 08:50:03 UTC | 
Generate simulated data from logistic mixed effects model based on the AMD data
Description
Generate simulated data from logistic mixed effects model based on the AMD data.
Usage
genSimDataGLMEM(
  nSubj = 131, 
  beta0 = -6, 
  sd.beta0i = 1.58, 
  beta1 = 1.58, 
  beta2 = -3.95, 
  beta3 = 3.15, 
  beta4 = 2.06, 
  beta5 = 0.51, 
  beta6 = 1.47, 
  beta7 = 3.11, 
  p.smkcur = 0.08, 
  p.inieye31 = 0.44, 
  p.inieye32 = 0.42, 
  p.inieye41 = 0.12, 
  p.inieye42 = 0.11, 
  sd.lncalorc = 0.33)
Arguments
| nSubj | integer. Number of subjects. Each subject would have data for 2 eyes. | 
| beta0 | mean of intercept  | 
| sd.beta0i | standard deviation  | 
| beta1 | slope for the binary covariate  | 
| beta2 | slope for the continuous mean-centered covariate  | 
| beta3 | slope for the binary covariate  | 
| beta4 | slope for the binary covariate  | 
| beta5 | slope for the binary covariate  | 
| beta6 | slope for the binary covariate  | 
| beta7 | slope for the binary covariate  | 
| p.smkcur | proportion of current smokers. | 
| p.inieye31 | proportion of left eye having inital grade equal to 3. | 
| p.inieye32 | proportion of right eye having inital grade equal to 3. | 
| p.inieye41 | proportion of left eye having inital grade equal to 4. | 
| p.inieye42 | proportion of right eye having inital grade equal to 4. | 
| sd.lncalorc | standard deviation for  | 
Details
We generate simulated data set from the following generalized linear mixed effects model:
\log\left(\frac{p_{ij}}{(1-p_{ij})}\right)=\beta_{0i}+\beta_1 smkcur_i+
\beta_2 lncalor_{ci} + \beta_3 inieye3_{ij} + \beta_4 inieye4_{ij} 
+\beta_5 rtotfat_{1i} +\beta_6 rtotfat_{2i} + \beta_7 rtotfat_{3i},
i=1,\ldots, N, j=1, 2,
\beta_{0i}\sim N\left(\beta_0, \sigma^2_{\beta}\right).
Value
A data frame with 8 columns: cid, subuid, prog, smkcur, lncalorc, inieye3, inieye4, and rtotfat,
where cid is the subject id, subuid is the unit id, and prog is the progression status.
prog=1 indicates the eye is progressed.
prog=0 indicates the eye is not progressed.
There are nSubj*2 rows. The first nSubj rows
are for the left eyes and the second nSubj rows are for the right eyes.
Author(s)
Bernard Rosner <stbar@channing.harvard.edu>, Weiliang Qiu <Weiliang.Qiu@gmail.com>, Meiling Ting Lee <MLTLEE@umd.edu>
References
Rosner B, Qiu W, and Lee MLT. Assessing Discrimination of Risk Prediction Rules in a Clustered Data Setting. Lifetime Data Anal. 2013 Apr; 19(2): 242-256.
Examples
set.seed(1234567)
datFrame = genSimDataGLMEM(nSubj = 30, beta0 = -6, sd.beta0i = 1.58, 
                          beta1 = 1.58, beta2 = -3.95, beta3 = 3.15, beta4 = 2.06,
                          beta5 = 0.51, beta6 = 1.47, beta7 = 3.11, 
                          p.smkcur = 0.08, p.inieye31 = 0.44, p.inieye32 = 0.42,
                          p.inieye41 = 0.12, p.inieye42 = 0.11, sd.lncalorc = 0.33)
print(dim(datFrame))
print(datFrame[1:2,])
Get data frame for the function riskPredict
Description
Get data frame for the function riskPredict.
Usage
getScore(fmla, cidVar, subuidVar, statusVar, datFrame, mycorstr = "exchangeable",
  verbose = FALSE)
Arguments
| fmla | A formula object for the function  | 
| cidVar | character. Phenotype variable name for cluster id | 
| subuidVar | character. Phenotype variable name for unit id | 
| statusVar | character. Phenotype variable name for progression status | 
| datFrame | A data frame with at least 3 columns corresponding to  | 
| mycorstr | character. indicates correlation structure. see the manual for the function  | 
| verbose | logical. indicating if summary of gee results should be printed out. | 
Value
A list with two elements: frame and gee.obj.
frame is a data frame with at least 4 columns: cid, subuid, status, and score.
cid indicates cluster id; subuid indicates unit ID within a cluster;
status=1 indicates an eye is progressed;
status=0 indicates an eye is not progressed;
score represents the risk score.
gee.obj is the object returned by gee function.
Author(s)
Bernard Rosner <stbar@channing.harvard.edu>, Weiliang Qiu <Weiliang.Qiu@gmail.com>, Meiling Ting Lee <MLTLEE@umd.edu>
References
Rosner B, Qiu W, and Lee MLT. Assessing Discrimination of Risk Prediction Rules in a Clustered Data Setting. Lifetime Data Anal. 2013 Apr; 19(2): 242-256.
Examples
set.seed(1234567)
datFrame = genSimDataGLMEM(nSubj = 30, beta0 = -6, sd.beta0i = 1.58, 
                          beta1 = 1.58, beta2 = -3.95, beta3 = 3.15, beta4 = 2.06,
                          beta5 = 0.51, beta6 = 1.47, beta7 = 3.11, 
                          p.smkcur = 0.08, p.inieye31 = 0.44, p.inieye32 = 0.42,
                          p.inieye41 = 0.12, p.inieye42 = 0.11, sd.lncalorc = 0.33)
print(dim(datFrame))
print(datFrame[1:2,])
tt1 = getScore(fmla = prog~smkcur+lncalorc+inieye3+inieye4+factor(rtotfat), 
  cidVar = "cid", subuidVar = "subuid", statusVar = "prog", 
  datFrame = datFrame, mycorstr = "exchangeable",
  verbose = FALSE)
myframe1=tt1$frame
gee.obj=tt1$gee.obj
print(summary(gee.obj))
print(dim(myframe1))
print(myframe1[1:3,])
Calculate the power for testing \delta=0
Description
Calculate the power for testing \delta=0.
Usage
powerCal(
  nSubj, 
  mu1, 
  triangle, 
  rho, 
  rho11, 
  rho22, 
  rho12, 
  p11, 
  p10, 
  p01, 
  alpha = 0.05)
Arguments
| nSubj | integer. number of subjects to be generated. Assume each subject has two observations. | 
| mu1 | 
 | 
| triangle | the difference of the expected value the the extended Mann-Whitney U statistics
between two prediction rules, i.e.,  | 
| rho | 
 | 
| rho11 | 
 | 
| rho22 | 
 | 
| rho12 | 
 | 
| p11 | 
 | 
| p10 | 
 | 
| p01 | 
 | 
| alpha | type I error rate | 
Value
the power
Author(s)
Bernard Rosner <stbar@channing.harvard.edu>, Weiliang Qiu <Weiliang.Qiu@gmail.com>, Meiling Ting Lee <MLTLEE@umd.edu>
References
Rosner B, Qiu W, and Lee MLT. Assessing Discrimination of Risk Prediction Rules in a Clustered Data Setting. Lifetime Data Anal. 2013 Apr; 19(2): 242-256.
Examples
 
set.seed(1234567)
mu1 = 0.8
power = powerCal(nSubj = 30, mu1 = mu1, 
  triangle = 0.05, rho = 0.93, rho11 = 0.59, rho22 = 0.56, rho12 = 0.52,
  p11 = 0.115, p10 = 0.142, p01 = 0.130, alpha = 0.05)
print(power)
Calculate the power for testing \delta=0 based on a dataset
Description
Calculate the power for testing \delta=0 based on a dataset.
Usage
powerCalData(
  nSubj, 
  triangle, 
  frame,
  alpha = 0.05)
Arguments
| nSubj | integer. number of subjects to be generated. Assume each subject has two observations. | 
| triangle | the difference of the expected value the the extended Mann-Whitney U statistics
between two prediction rules, i.e.,  | 
| frame | A data frame with 5 columns: cid, subuid, status, score1, and score2.
 | 
| alpha | type I error rate | 
Value
A list with 11 elements.
| power | the esstimated power | 
| rho | 
 | 
| rho11 | 
 | 
| rho22 | 
 | 
| rho12 | 
 | 
| p11 | 
 | 
| p10 | 
 | 
| p01 | 
 | 
| p00 | 
 | 
| mu1 | 
 | 
| mu2 | 
 | 
Author(s)
Bernard Rosner <stbar@channing.harvard.edu>, Weiliang Qiu <Weiliang.Qiu@gmail.com>, Meiling Ting Lee <MLTLEE@umd.edu>
References
Rosner B, Qiu W, and Lee MLT. Assessing Discrimination of Risk Prediction Rules in a Clustered Data Setting. Lifetime Data Anal. 2013 Apr; 19(2): 242-256.
Examples
set.seed(1234567)
datFrame = genSimDataGLMEM(nSubj = 30, beta0 = -6, sd.beta0i = 1.58, 
                          beta1 = 1.58, beta2 = -3.95, beta3 = 3.15, beta4 = 2.06,
                          beta5 = 0.51, beta6 = 1.47, beta7 = 3.11, 
                          p.smkcur = 0.08, p.inieye31 = 0.44, p.inieye32 = 0.42,
                          p.inieye41 = 0.12, p.inieye42 = 0.11, sd.lncalorc = 0.33)
print(dim(datFrame))
print(datFrame[1:2,])
# prediction rule 1
tt1 = getScore(fmla = prog~smkcur+lncalorc+inieye3+inieye4+factor(rtotfat), 
  cidVar = "cid", subuidVar = "subuid", statusVar = "prog", 
  datFrame = datFrame, mycorstr = "exchangeable",
  verbose = FALSE)
myframe1=tt1$frame
print(dim(myframe1))
print(myframe1[1:3,])
####
# prediction rule 2
tt2 = getScore(fmla = prog~smkcur+lncalorc+inieye3+inieye4, 
  cidVar = "cid", subuidVar = "subuid", statusVar = "prog", 
  datFrame = datFrame, mycorstr = "exchangeable",
  verbose = FALSE)
myframe2=tt2$frame
print(dim(myframe2))
print(myframe2[1:3,])
# combine scores from two prediction rules
myframe12=myframe1[, c("cid", "subuid", "status")]
myframe12$score1=myframe1$score
myframe12$score2=myframe2$score
print(dim(myframe12))
print(myframe12[1:3,])
res = powerCalData(nSubj = 30, triangle = 0.05, frame=myframe12, alpha = 0.05)
print(res)
Assessing risk prediction performance for clustered data
Description
Assessing risk prediction performance for clustered data.
Usage
riskPredict(frame, alpha=0.05)
Arguments
| frame | A data frame with 4 columns: cid, subuid, status, and score.
 | 
| alpha | numeric. confidence level for  | 
Details
To obtain 95% confidence interval of \eta_c,
we first obtain 95% confidence interval [c_1, c_2]
for 
\Phi^{-1}(\eta_c), then
transform back:
[\Phi(c_1), \Phi(c_2)].
Value
A list of 6 elements:
| stat | the test statistics 
 | 
| se.stat | standard error of the test statistic under the null hypothesis. | 
| z | z score  | 
| pval | p-value of the test | 
| rho | correlation between  | 
| mu.hat | estimated  | 
| theta.hat | estimated  | 
| theta.c.hat | estimated  | 
| E.stat.Ha | expectation of  | 
| se.stat.Ha | standard error for  | 
| CIlow | lower confidence limit  for  | 
| CIupp | upper confidence limit  for  | 
| datHk | A nSubj by 2 matrix of probit transformed risk scores by using only the first 2 observations of each subject. | 
| ci | the vector of  | 
| di | the vector of  | 
Author(s)
Bernard Rosner <stbar@channing.harvard.edu>, Weiliang Qiu <Weiliang.Qiu@gmail.com>, Meiling Ting Lee <MLTLEE@umd.edu>
References
Rosner B, Qiu W, and Lee MLT. Assessing Discrimination of Risk Prediction Rules in a Clustered Data Setting. Lifetime Data Anal. 2013 Apr; 19(2): 242-256.
Examples
set.seed(1234567)
datFrame = genSimDataGLMEM(nSubj = 30, beta0 = -6, sd.beta0i = 1.58, 
                          beta1 = 1.58, beta2 = -3.95, beta3 = 3.15, beta4 = 2.06,
                          beta5 = 0.51, beta6 = 1.47, beta7 = 3.11, 
                          p.smkcur = 0.08, p.inieye31 = 0.44, p.inieye32 = 0.42,
                          p.inieye41 = 0.12, p.inieye42 = 0.11, sd.lncalorc = 0.33)
print(dim(datFrame))
print(datFrame[1:2,])
tt1 = getScore(fmla = prog~smkcur+lncalorc+inieye3+inieye4+factor(rtotfat), 
  cidVar = "cid", subuidVar = "subuid", statusVar = "prog", 
  datFrame = datFrame, mycorstr = "exchangeable",
  verbose = FALSE)
myframe1=tt1$frame
print(dim(myframe1))
print(myframe1[1:3,])
res1 = riskPredict(myframe1)
print(names(res1))
print(res1)
Difference of two risk prediction rules for clustered data
Description
Difference of two risk prediction rules for clustered data.
Usage
riskPredictDiff(frame, alpha = 0.05)
Arguments
| frame | A data frame with 5 columns: cid, subuid, status, score1, and score2.
 | 
| alpha | numeric. The confidence level. | 
Value
A list of 7 elements:
| diff | the difference of test statistics 
 | 
| se.diff | standard error of the difference under the null hypothesis. | 
| z | z score  | 
| pval | p-value of the test | 
| res1 | output object of the function  | 
| res2 | output object of the function  | 
| rhoVec | A vector of 4 correlations:
 | 
| E.diff.Ha | expectation of the difference under the alternative hypothesis. | 
| se.diff.Ha | standard error of the difference under the alternative hypothesis. | 
| CIlow.diff | Lower confidence limit. | 
| CIup.diff | Upper confidence limit. | 
Author(s)
Bernard Rosner <stbar@channing.harvard.edu>, Weiliang Qiu <Weiliang.Qiu@gmail.com>, Meiling Ting Lee <MLTLEE@umd.edu>
References
Rosner B, Qiu W, and Lee MLT. Assessing Discrimination of Risk Prediction Rules in a Clustered Data Setting. Lifetime Data Anal. 2013 Apr; 19(2): 242-256.
Examples
set.seed(1234567)
datFrame = genSimDataGLMEM(nSubj = 30, beta0 = -6, sd.beta0i = 1.58, 
                          beta1 = 1.58, beta2 = -3.95, beta3 = 3.15, beta4 = 2.06,
                          beta5 = 0.51, beta6 = 1.47, beta7 = 3.11, 
                          p.smkcur = 0.08, p.inieye31 = 0.44, p.inieye32 = 0.42,
                          p.inieye41 = 0.12, p.inieye42 = 0.11, sd.lncalorc = 0.33)
print(dim(datFrame))
print(datFrame[1:2,])
# prediction rule 1
tt1 = getScore(fmla = prog~smkcur+lncalorc+inieye3+inieye4+factor(rtotfat), 
  cidVar = "cid", subuidVar = "subuid", statusVar = "prog", 
  datFrame = datFrame, mycorstr = "exchangeable",
  verbose = FALSE)
myframe1=tt1$frame
print(dim(myframe1))
print(myframe1[1:3,])
####
# prediction rule 2
tt2 = getScore(fmla = prog~smkcur+lncalorc+inieye3+inieye4, 
  cidVar = "cid", subuidVar = "subuid", statusVar = "prog", 
  datFrame = datFrame, mycorstr = "exchangeable",
  verbose = FALSE)
myframe2=tt2$frame
print(dim(myframe2))
print(myframe2[1:3,])
# combine scores from two prediction rules
myframe12=myframe1[, c("cid", "subuid", "status")]
myframe12$score1=myframe1$score
myframe12$score2=myframe2$score
print(dim(myframe12))
print(myframe12[1:3,])
####
resDiff = riskPredictDiff(frame=myframe12)
print(names(resDiff))
print(resDiff)