R/meanTest.R

Defines functions meanBootstrapBasedCriticalLevel createMeanTest divideColumnWise getMeanEstimator

getMeanEstimator = function(window) function(data) {
  colSums(data) / sqrt(window)
}

divideColumnWise = function(data, vars) {
  normalizer = 1 / sqrt(vars)
  t(apply(data, 1, function(row) row * normalizer))
}

createMeanTest = function(windowSizes, 
                                     alpha,
                                     data, 
                                     distances2statistic, 
                                     diffNorm, 
                                     stableSetIndexs, 
                                     scale = TRUE,
                                     bootstrapIterations = 1000) {
  stableSet = data[stableSetIndexs, ]
  
  if (scale) {
    vars = empiricalCovariance(stableSet, hatTheta) 
    data = divideColumnWise(data, vars)
    stableSet = divideColumnWise(stableSet, vars)
  }
  
  stats = precisionMatrixStatistic(windowSizes, 
                                   data, 
                                   distances2statistic, 
                                   "mean",
                                   diffNorm) 
  
  criticalValues = meanBootstrapBasedCriticalLevel(stableSet, 
                                          bootstrapIterations, 
                                          alpha,
                                          nrow(data), 
                                          windowSizes, 
                                          diffNorm, 
                                          distances2statistic)
  mkCPDResultClass(list("statistics" = stats, "criticalValue" = criticalValues))
}



meanBootstrapBasedCriticalLevel = function(stable, 
                                            iterations, 
                                            alpha,
                                            N, 
                                            windowSizes, 
                                            parameterDifferenceNorm, 
                                            distances2statistic) {
  bootstrappedValues = generateBootstrapValues(iterations, 
                                               stable, 
                                               N, 
                                               windowSizes, 
                                               function(bootstrapSample, windowSize) bootstrapSample / sqrt(windowSize), 
                                               distances2statistic, 
                                               parameterDifferenceNorm) 
  
  getThreshold(bootstrappedValues, alpha)
}
akopich/covcp documentation built on April 14, 2021, 5:54 p.m.