Title: | Penalized Variance Components Analysis |
---|---|
Description: | Method to perform penalized variance component analysis. |
Authors: | Jason Sinnwell [aut, cre] , Daniel Schaid [aut] |
Maintainer: | Jason Sinnwell <[email protected]> |
License: | GPL (>= 3) |
Version: | 1.9 |
Built: | 2024-11-22 06:45:41 UTC |
Source: | CRAN |
Variance component Linear kernel matrix from genotype dosage
kernel_linear(dose, method = "linear")
kernel_linear(dose, method = "linear")
dose |
data.frame or matrix with |
method |
type of kernel; currently only linear kernel implemented |
square symmetric kernel matrix for subject similarity by genotype dosage
JP Sinnwell, DJ Schaid
data(vcexample) Kern1 <- kernel_linear(dose[,which(doseinfo[,1]==1)], method="linear") Kern1[1:5,1:5]
data(vcexample) Kern1 <- kernel_linear(dose[,which(doseinfo[,1]==1)], method="linear") Kern1[1:5,1:5]
Estimate variance components by MINQUE method, allowing multiple iterations
minque(y, X, Kerns, n.iter = 1, eps = 0.001)
minque(y, X, Kerns, n.iter = 1, eps = 0.001)
y |
Numeric vector of traits. Only continuous trait currently allowed. |
X |
Matrix of covariates (columns) for subjects (rows), matching subjects in the trait (y) vector. |
Kerns |
List of kernel matrices: a kernel matrix for each variance compenent. The last kernel matrix in the list (an identity matrix) is for the residual variance component. |
n.iter |
Number of minque iterations |
eps |
Default small positive value for non-positive vc estimates within iterations. |
List with estimates of variance components (vc), covariate regression coefficients (beta), and residuals of model fit.
JP Sinnwell, DJ Schaid
data(vcexample) nvc <- 1+length(unique(doseinfo[,2])) id <- 1:nrow(dose) ## vcs for genetic kernel matrices Kerns <- vector("list", length=nvc) for(i in 1:(nvc-1)){ Kerns[[i]] <- kernel_linear(dose[,grep(i, doseinfo[,2])]) rownames(Kerns[[i]]) <- id colnames(Kerns[[i]]) <- id } ## vc for residual variance Kerns[[nvc]] <- diag(nrow(dose)) rownames(Kerns[[nvc]]) <- id colnames(Kerns[[nvc]]) <- id prefit <- minque(response, covmat, Kerns, n.iter=2) prefit[1] prefit[2] fit <- vcpen(response, covmat, Kerns, vc_init = prefit$vc)
data(vcexample) nvc <- 1+length(unique(doseinfo[,2])) id <- 1:nrow(dose) ## vcs for genetic kernel matrices Kerns <- vector("list", length=nvc) for(i in 1:(nvc-1)){ Kerns[[i]] <- kernel_linear(dose[,grep(i, doseinfo[,2])]) rownames(Kerns[[i]]) <- id colnames(Kerns[[i]]) <- id } ## vc for residual variance Kerns[[nvc]] <- diag(nrow(dose)) rownames(Kerns[[nvc]]) <- id colnames(Kerns[[nvc]]) <- id prefit <- minque(response, covmat, Kerns, n.iter=2) prefit[1] prefit[2] fit <- vcpen(response, covmat, Kerns, vc_init = prefit$vc)
Datasets for an example run of vcpen with 4 variance components calculated as kernel matrices from genotype dosage (dose) on 100 subjects with two covariates (covmat), and a continuous response.
The example contains three data.frames and a response vector for 100 subjects at 70 SNPs accross 4 variance components:
covmat
two arbitrary covariates (columns) for 100 subjects (rows)
dose
genotype dosage at 70 SNPs (columns) and 100 subjects (rows)
doseinfo
2-column matrix with indices for grouping SNPs into variance components (for Kernel Matrix)
response
continuous response vector for 100 subjects
data(vcexample) dim(dose) dim(doseinfo) dim(covmat) length(response)
data(vcexample) dim(dose) dim(doseinfo) dim(covmat) length(response)
Penalized Variance Component analysis
vcpen( y, X, Kerns, frac1 = 0.8, lambda_factor = NULL, lambda_grid = NULL, maxiter = 1000, vc_init = NULL, print_iter = FALSE ) ## S3 method for class 'vcpen' summary(object, ..., digits = 4)
vcpen( y, X, Kerns, frac1 = 0.8, lambda_factor = NULL, lambda_grid = NULL, maxiter = 1000, vc_init = NULL, print_iter = FALSE ) ## S3 method for class 'vcpen' summary(object, ..., digits = 4)
y |
Numeric vector of traits. Only continuous trait currently allowed. |
X |
Matrix of covariates (columns) for subjects (rows), matching subjects in the trait (y) vector. |
Kerns |
List of kernel matrices: a kernel matrix for each variance compenent. The last kernel matrix in the list (an identity matrix) is for the residual variance component. |
frac1 |
Fraction of penalty imposed on L1 penalty, between 0 and 1 (0 for only L2; 1 for only L1 penalty). |
lambda_factor |
Weight for each vc (values between 0 and 1) for how much it should be penalized: 0 means no penalty. Default value of NULL implies weight of 1 for all vc's. |
lambda_grid |
Vector of lambda penalties for fitting the penalized model. Best to order values from largest to smallest so parameter estimates from a large penalty can be used as initial values for the next smaller penalty. Default value of NULL implies initial values of seq(from=.10, to=0, by=-0.01). |
maxiter |
Maximum number of iterations allowed during penalized fitting. |
vc_init |
Numeric vector of initial values for variance components. Default value of NULL implies initial values determined by 2 iterations of minque estimation. |
print_iter |
Logical: if TRUE, print the iteration results (mainly for refined checks) |
object |
Fitted vcpen object (used in summary method) |
... |
Optional arguments for summary method |
digits |
Signficant digits for summary method |
object with S3 class vcpen
JP Sinnwell, DJ Schaid
data(vcexample) nvc <- 1+length(unique(doseinfo[,2])) id <- 1:nrow(dose) ## vcs for genetic kernel matrices Kerns <- vector("list", length=nvc) for(i in 1:(nvc-1)){ Kerns[[i]] <- kernel_linear(dose[,grep(i, doseinfo[,2])]) rownames(Kerns[[i]]) <- id colnames(Kerns[[i]]) <- id } ## vc for residual variance Kerns[[nvc]] <- diag(nrow(dose)) rownames(Kerns[[nvc]]) <- id colnames(Kerns[[nvc]]) <- id fit <- vcpen(response, covmat, Kerns, frac1 = .6) summary(fit)
data(vcexample) nvc <- 1+length(unique(doseinfo[,2])) id <- 1:nrow(dose) ## vcs for genetic kernel matrices Kerns <- vector("list", length=nvc) for(i in 1:(nvc-1)){ Kerns[[i]] <- kernel_linear(dose[,grep(i, doseinfo[,2])]) rownames(Kerns[[i]]) <- id colnames(Kerns[[i]]) <- id } ## vc for residual variance Kerns[[nvc]] <- diag(nrow(dose)) rownames(Kerns[[nvc]]) <- id colnames(Kerns[[nvc]]) <- id fit <- vcpen(response, covmat, Kerns, frac1 = .6) summary(fit)