The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
MaximinInfer is a package that implements the sampling and aggregation method for the covariate shift maximin effect, which was proposed in <arXiv:2011.07568>. It constructs the confidence interval for any linear combination of the high-dimensional maximin effect.
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.8Call 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)
#> ======> Bias Correction for initial estimators....
#> Computing LF for loading (1/2)...
#> The projection direction is identified at mu = 0.026739at step =6
#> Computing LF for loading (2/2)...
#> The projection direction is identified at mu = 0.040108at step =5
#> Computing LF for loading (1/2)...
#> The projection direction is identified at mu = 0.026739at step =6
#> Computing LF for loading (2/2)...
#> The projection direction is identified at mu = 0.026739at step =6
#> ======> Bias Correction for matrix Gamma....
#> Computing LF for loading (1/1)...
#> The projection direction is identified at mu = 0.026739at step =6
#> Computing LF for loading (1/1)...
#> The projection direction is identified at mu = 0.026739at step =6
#> Computing LF for loading (1/1)...
#> The projection direction is identified at mu = 0.005282at step =10
#> Computing LF for loading (1/1)...
#> The projection direction is identified at mu = 0.007923at step =9The following inference method is:
out <- Infer(mm, gen.size=200)The weights for each group:
out$weight
#> [1] 0.5703927 0.4296073The point estimator and its corresponding confidence interval for each loading:
out$mminfer
#> [[1]]
#> [[1]]$point
#> [1] -0.212938
#>
#> [[1]]$CI
#> lower upper
#> [1,] -0.4136389 0.01993818
#>
#>
#> [[2]]
#> [[2]]$point
#> [1] -0.6861211
#>
#> [[2]]$CI
#> lower upper
#> [1,] -1.20779 -0.1704235These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.