knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
MaximinInfer is a package that implements the sampling and aggregation method for the covariate-shift Maximin effect, which was proposed in
You can install the released version of MaximinInfer from CRAN with:
install.packages("MaximinInfer")
And the development version from GitHub with:
# install.packages("devtools") devtools::install_github("zywang0701/MaximinInfer")
This is a basic example which shows you how to solve a common problem:
library(MaximinInfer)
The data is heterogeneous and covariates shift between source and target data
## number of groups L=2 ## dimension p=100 ## mean vector for source mean.source = rep(0, p) ## covariance matrix for source A1gen <- function(rho,p){ A1=matrix(0,p,p) for(i in 1:p){ for(j in 1:p){ A1[i,j]<-rho^(abs(i-j)) } } return(A1) } cov.source = A1gen(0.6, p) ## 1st group's source data n1 = 100 X1 = MASS::mvrnorm(n1, mu=mean.source, Sigma=cov.source) # true coef for 1st group b1 = rep(0, p) b1[1:5] = seq(1,5)/20 b1[98:100] = c(0.5, -0.5, -0.5) Y1 = X1%*%b1 + rnorm(n1) ## 2nd group's source data n2 = 100 X2 = MASS::mvrnorm(n2, mu=mean.source, Sigma=cov.source) # true coef for 2nd group b2 = rep(0, p) b2[6:10] = seq(1,5)/20 b2[98:100] = 0.5*c(0.5, -0.5, -0.5) Y2 = X2%*%b2 + rnorm(n2) ## Target Data, covariate shift n0 = 100 mean0 = rep(0, p) cov0 = cov.source for(i in 1:p) cov0[i, i] = 1.5 for(i in 1:5) for(j in 1:5) if(i!=j) cov0[i, j] = 0.9 for(i in 99:100) for(j in 99:100) if(i!=j) cov0[i, j] = 0.9 X0 = MASS::mvrnorm(n0, mu=mean0, Sigma=cov0)
Input the loading. Note that it allows for multiple loading simultaneously.
loading.mat = matrix(0, nrow=100, ncol=2) # dimension p=100 loading.mat[96:100, 1] = 0.4 loading.mat[99:100, 2] = 0.8
Call function Maximin(). By setting the argument verbose, you can choose whether or not to display the intermediate bias-correction results.
mm <- Maximin(list(X1,X2), list(Y1,Y2), loading.mat, X0, cov.shift=TRUE, verbose=TRUE)
The following inference method is:
out <- Infer(mm, gen.size=200)
The weights for each group:
out$weight
The point estimator and its corresponding confidence interval for each loading:
out$mminfer
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.