
R version 4.3.0 Patched (2023-05-17 r84446) -- "Already Tomorrow"
Copyright (C) 2023 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> #### Test special cases  for  covMcd()
> 
> library(robustbase)
> 
> ### 1) p = 1 ----------------------------------------------------
> set.seed(1)
> x <- c(rnorm(50),100, 1e10)
> (r1 <- covMcd(x))
Minimum Covariance Determinant (MCD) estimator approximation.
Method: Univariate Fast MCD(alpha=0.5 ==> h=27); nsamp = 500; (n,k)mini = (300,5)
Call:
covMcd(x = x)
Log(Det.):  -2.13 

Robust Estimate of Location:
     x  
0.1922  
Robust Estimate of Covariance:
        x
x  0.5978
> str(r1)
List of 15
 $ call      : language covMcd(x = x)
 $ nsamp     : num 500
 $ method    : chr "Univariate Fast MCD(alpha=0.5 ==> h=27); nsamp = 500; (n,k)mini = (300,5)"
 $ cov       : num [1, 1] 0.598
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "x"
  .. ..$ : chr "x"
 $ center    : Named num 0.192
  ..- attr(*, "names")= chr "x"
 $ n.obs     : int 52
 $ alpha     : num 0.5
 $ quan      : num 27
 $ raw.cov   : num [1, 1] 0.839
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "x"
  .. ..$ : chr "x"
 $ raw.center: Named num 0.325
  ..- attr(*, "names")= chr "x"
 $ crit      : num -2.13
 $ mcd.wt    : num [1:52] 1 1 1 1 1 1 1 1 1 1 ...
 $ X         : num [1:52, 1] -0.626 0.184 -0.836 1.595 0.33 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:52] "1" "2" "3" "4" ...
  .. ..$ : NULL
 $ raw.cnp2  : num [1:2] 6.45 1.14
 $ cnp2      : num [1:2] 1.17 1.01
 - attr(*, "class")= chr "mcd"
> summary(r1)
Minimum Covariance Determinant (MCD) estimator approximation.
Method: Univariate Fast MCD(alpha=0.5 ==> h=27); nsamp = 500; (n,k)mini = (300,5)
Call:
covMcd(x = x)
Log(Det.):  -2.13 

Robust Estimate of Location:
     x  
0.1922  
Robust Estimate of Covariance:
        x
x  0.5978

Eigenvalues:
[1] 0.5978
Robustness weights: 
 4 observations c(14,24,51,52) are outliers with |weight| = 0 ( < 0.0019); 
 48 weights are ~= 1.
> ## with alpha = 1
> (r1.1 <- covMcd(x, alpha = 1))
Minimum Covariance Determinant (MCD) estimator approximation.
Method: MCD(alpha=1 ==> h=52) 
alpha = 1: The minimum covariance determinant estimates based on 52 observations 
are equal to the classical estimates.
Call:
covMcd(x = x, alpha = 1)
Log(Det.):  42.1 

Robust Estimate of Location:
    x  
2.059  
Robust Estimate of Covariance:
       x
x  223.9
> str(r1.1)
List of 15
 $ call      : language covMcd(x = x, alpha = 1)
 $ nsamp     : num 500
 $ method    : chr "MCD(alpha=1 ==> h=52) \nalpha = 1: The minimum covariance determinant estimates based on 52 observations \nare "| __truncated__
 $ cov       : num [1, 1] 224
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "x"
  .. ..$ : chr "x"
 $ center    : Named num 2.06
  ..- attr(*, "names")= chr "x"
 $ n.obs     : int 52
 $ alpha     : num 1
 $ quan      : num 52
 $ raw.cov   : num [1, 1] 1.92e+18
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "x"
  .. ..$ : chr "x"
 $ raw.center: Named num 1.92e+08
  ..- attr(*, "names")= chr "x"
 $ crit      : num 42.1
 $ mcd.wt    : num [1:52] 1 1 1 1 1 1 1 1 1 1 ...
 $ X         : num [1:52, 1] -0.626 0.184 -0.836 1.595 0.33 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:52] "1" "2" "3" "4" ...
  .. ..$ : NULL
 $ raw.cnp2  : num [1:2] 1 1
 $ cnp2      : num [1:2] 1.14 1
 - attr(*, "class")= chr "mcd"
> summary(r1.1)
Minimum Covariance Determinant (MCD) estimator approximation.
Method: MCD(alpha=1 ==> h=52) 
alpha = 1: The minimum covariance determinant estimates based on 52 observations 
are equal to the classical estimates.
Call:
covMcd(x = x, alpha = 1)
Log(Det.):  42.1 

Robust Estimate of Location:
    x  
2.059  
Robust Estimate of Covariance:
       x
x  223.9

Eigenvalues:
[1] 223.9
Robustness weights: 
 2 observations c(51,52) are outliers with |weight| = 0 ( < 0.0019); 
 50 weights are ~= 1.
> 
> ### 1b) p = 1, constant scale
> (rc <- covMcd(rep(1,12)))
Minimum Covariance Determinant (MCD) estimator approximation.
Method: Univariate Fast MCD(alpha=0.5 ==> h=7); nsamp = 500; (n,k)mini = (300,5)
Call:
covMcd(x = rep(1, 12))
Initial scale 0 because more than 'h' (=7) observations are identical.
Log(Det.):  -Inf 

Robust Estimate of Location:
rep(1, 12)  
         1  
Robust Estimate of Covariance:
            rep(1, 12)
rep(1, 12)           0
Warning message:
In covMcd(rep(1, 12)) :
  Initial scale 0 because more than 'h' (=7) observations are identical.
> str(rc)
List of 16
 $ call       : language covMcd(x = rep(1, 12))
 $ nsamp      : num 500
 $ method     : chr "Univariate Fast MCD(alpha=0.5 ==> h=7); nsamp = 500; (n,k)mini = (300,5)"
 $ singularity:List of 2
  ..$ kind: chr "identicalObs"
  ..$ q   : num 7
 $ cov        : num [1, 1] 0
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "rep(1, 12)"
  .. ..$ : chr "rep(1, 12)"
 $ raw.cov    : num [1, 1] 0
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "rep(1, 12)"
  .. ..$ : chr "rep(1, 12)"
 $ center     : Named num 1
  ..- attr(*, "names")= chr "rep(1, 12)"
 $ raw.center : Named num 1
  ..- attr(*, "names")= chr "rep(1, 12)"
 $ n.obs      : int 12
 $ alpha      : num 0.5
 $ quan       : num 7
 $ crit       : num -Inf
 $ mcd.wt     : num [1:12] 1 1 1 1 1 1 1 1 1 1 ...
 $ X          : num [1:12, 1] 1 1 1 1 1 1 1 1 1 1 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:12] "1" "2" "3" "4" ...
  .. ..$ : NULL
 $ raw.cnp2   : num [1:2] 4.97 1.41
 $ cnp2       : num [1:2] 1 1
 - attr(*, "class")= chr "mcd"
> summary(rc)
Minimum Covariance Determinant (MCD) estimator approximation.
Method: Univariate Fast MCD(alpha=0.5 ==> h=7); nsamp = 500; (n,k)mini = (300,5)
Call:
covMcd(x = rep(1, 12))
Initial scale 0 because more than 'h' (=7) observations are identical.
Log(Det.):  -Inf 

Robust Estimate of Location:
rep(1, 12)  
         1  
Robust Estimate of Covariance:
            rep(1, 12)
rep(1, 12)           0

Eigenvalues:
[1] 0
Robustness weights: 
 All 12 weights are ~= 1.
> ## with alpha = 1
> (rc1 <- covMcd(rep(1,12), alpha = 1))
Minimum Covariance Determinant (MCD) estimator approximation.
Method: MCD(alpha=1 ==> h=12) 
alpha = 1: The minimum covariance determinant estimates based on 12 observations 
are equal to the classical estimates.
Call:
covMcd(x = rep(1, 12), alpha = 1)
The classical covariance matrix is singular.
Log(Det.):  -Inf 

Robust Estimate of Location:
rep(1, 12)  
         1  
Robust Estimate of Covariance:
            rep(1, 12)
rep(1, 12)           0
> str(rc1)
List of 16
 $ call       : language covMcd(x = rep(1, 12), alpha = 1)
 $ nsamp      : num 500
 $ method     : chr "MCD(alpha=1 ==> h=12) \nalpha = 1: The minimum covariance determinant estimates based on 12 observations \nare "| __truncated__
 $ cov        : num [1, 1] 0
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "rep(1, 12)"
  .. ..$ : chr "rep(1, 12)"
 $ center     : Named num 1
  ..- attr(*, "names")= chr "rep(1, 12)"
 $ n.obs      : int 12
 $ singularity:List of 1
  ..$ kind: chr "classical"
 $ alpha      : num 1
 $ quan       : num 12
 $ raw.cov    : num [1, 1] 0
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr "rep(1, 12)"
  .. ..$ : chr "rep(1, 12)"
 $ raw.center : Named num 1
  ..- attr(*, "names")= chr "rep(1, 12)"
 $ crit       : num -Inf
 $ mcd.wt     : num [1:12] 1 1 1 1 1 1 1 1 1 1 ...
 $ X          : num [1:12, 1] 1 1 1 1 1 1 1 1 1 1 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:12] "1" "2" "3" "4" ...
  .. ..$ : NULL
 $ raw.cnp2   : num [1:2] 1 1
 $ cnp2       : num [1:2] 1 1
 - attr(*, "class")= chr "mcd"
> summary(rc1)
Minimum Covariance Determinant (MCD) estimator approximation.
Method: MCD(alpha=1 ==> h=12) 
alpha = 1: The minimum covariance determinant estimates based on 12 observations 
are equal to the classical estimates.
Call:
covMcd(x = rep(1, 12), alpha = 1)
The classical covariance matrix is singular.
Log(Det.):  -Inf 

Robust Estimate of Location:
rep(1, 12)  
         1  
Robust Estimate of Covariance:
            rep(1, 12)
rep(1, 12)           0

Eigenvalues:
[1] 0
Robustness weights: 
 All 12 weights are ~= 1.
> 
> ### 2)  constant observations  { multivariate scale == 0 } -----------
> (X <- matrix(rep(2*(1:4), 12), nrow = 12, byrow = TRUE))
      [,1] [,2] [,3] [,4]
 [1,]    2    4    6    8
 [2,]    2    4    6    8
 [3,]    2    4    6    8
 [4,]    2    4    6    8
 [5,]    2    4    6    8
 [6,]    2    4    6    8
 [7,]    2    4    6    8
 [8,]    2    4    6    8
 [9,]    2    4    6    8
[10,]    2    4    6    8
[11,]    2    4    6    8
[12,]    2    4    6    8
> (rC  <- covMcd(X))
Minimum Covariance Determinant (MCD) estimator approximation.
Method: Fast MCD(alpha=0.5 ==> h=8); nsamp = 500; (n,k)mini = (300,5)
Call:
covMcd(x = X)
The covariance matrix of the data is singular.
There are 12 observations (in the entire dataset of 12 obs.) lying on
the hyperplane with equation a_1*(x_i1 - m_1) + ... + a_p*(x_ip - m_p)
= 0 with (m_1, ..., m_p) the mean of these observations and
coefficients a_i from the vector a <- c(1, 0, 0, 0)
Log(Det.):  -Inf 

Robust Estimate of Location:
[1]  2  4  6  8
Robust Estimate of Covariance:
      [,1]  [,2]  [,3]  [,4]
[1,]     0     0     0     0
[2,]     0     0     0     0
[3,]     0     0     0     0
[4,]     0     0     0     0
Warning message:
In covMcd(X) : The covariance matrix of the data is singular.
There are 12 observations (in the entire dataset of 12 obs.) lying on
the hyperplane with equation a_1*(x_i1 - m_1) + ... + a_p*(x_ip - m_p)
= 0 with (m_1, ..., m_p) the mean of these observations and
coefficients a_i from the vector a <- c(1, 0, 0, 0)
> summary(rC)
Minimum Covariance Determinant (MCD) estimator approximation.
Method: Fast MCD(alpha=0.5 ==> h=8); nsamp = 500; (n,k)mini = (300,5)
Call:
covMcd(x = X)
The covariance matrix of the data is singular.
There are 12 observations (in the entire dataset of 12 obs.) lying on
the hyperplane with equation a_1*(x_i1 - m_1) + ... + a_p*(x_ip - m_p)
= 0 with (m_1, ..., m_p) the mean of these observations and
coefficients a_i from the vector a <- c(1, 0, 0, 0)
Log(Det.):  -Inf 

Robust Estimate of Location:
[1]  2  4  6  8
Robust Estimate of Covariance:
      [,1]  [,2]  [,3]  [,4]
[1,]     0     0     0     0
[2,]     0     0     0     0
[3,]     0     0     0     0
[4,]     0     0     0     0

Eigenvalues:
[1] 0 0 0 0
Robustness weights: 
 All 12 weights are ~= 1.
> (rC1 <- covMcd(X, alpha = 1))
Minimum Covariance Determinant (MCD) estimator approximation.
Method: MCD(alpha=1 ==> h=12) 
alpha = 1: The minimum covariance determinant estimates based on 12 observations 
are equal to the classical estimates.
Call:
covMcd(x = X, alpha = 1)
The classical covariance matrix is singular.
Log(Det.):  -Inf 

Robust Estimate of Location:
[1]  2  4  6  8
Robust Estimate of Covariance:
      [,1]  [,2]  [,3]  [,4]
[1,]     0     0     0     0
[2,]     0     0     0     0
[3,]     0     0     0     0
[4,]     0     0     0     0
> summary(rC1)
Minimum Covariance Determinant (MCD) estimator approximation.
Method: MCD(alpha=1 ==> h=12) 
alpha = 1: The minimum covariance determinant estimates based on 12 observations 
are equal to the classical estimates.
Call:
covMcd(x = X, alpha = 1)
The classical covariance matrix is singular.
Log(Det.):  -Inf 

Robust Estimate of Location:
[1]  2  4  6  8
Robust Estimate of Covariance:
      [,1]  [,2]  [,3]  [,4]
[1,]     0     0     0     0
[2,]     0     0     0     0
[3,]     0     0     0     0
[4,]     0     0     0     0

Eigenvalues:
[1] 0 0 0 0
Robustness weights: 
 All 12 weights are ~= 1.
> 
> ### 3)  alpha = 1 : classical estimates --- for general cases --------
> 
> 
> cat('Time elapsed: ', proc.time(),'\n') # for ``statistical reasons''
Time elapsed:  0.179 0.043 0.231 0.003 0.004 
> 
> proc.time()
   user  system elapsed 
  0.182   0.047   0.231 
