Error when K > d for computeMu and optimParams
authorBenjamin Auder <benjamin.auder@somewhere>
Thu, 30 Apr 2020 11:49:20 +0000 (13:49 +0200)
committerBenjamin Auder <benjamin.auder@somewhere>
Thu, 30 Apr 2020 11:49:20 +0000 (13:49 +0200)
pkg/R/computeMu.R
pkg/R/optimParams.R

index bc52bb3..f961fde 100644 (file)
@@ -46,6 +46,8 @@ computeMu = function(X, Y, optargs=list())
     large_ratio <- ( abs(Σ[-d] / Σ[-1]) > 3 )
     K <- if (any(large_ratio)) max(2, which.min(large_ratio)) else d
   }
     large_ratio <- ( abs(Σ[-d] / Σ[-1]) > 3 )
     K <- if (any(large_ratio)) max(2, which.min(large_ratio)) else d
   }
+  else if (K > d)
+    stop("K: integer >= 2, <= d")
 
   # Step 1: generate a family of d matrices to joint-diagonalize to increase robustness
   d = ncol(X)
 
   # Step 1: generate a family of d matrices to joint-diagonalize to increase robustness
   d = ncol(X)
index 8dfe3dc..175150f 100644 (file)
@@ -45,8 +45,8 @@ optimParams <- function(X, Y, K, link=c("logit","probit"), M=NULL, nc=0)
   if (!is.numeric(Y) || any(is.na(Y)) || any(Y!=0 & Y!=1))
     stop("Y: binary vector with 0 and 1 only")
   link <- match.arg(link)
   if (!is.numeric(Y) || any(is.na(Y)) || any(Y!=0 & Y!=1))
     stop("Y: binary vector with 0 and 1 only")
   link <- match.arg(link)
-  if (!is.numeric(K) || K!=floor(K) || K < 2)
-    stop("K: integer >= 2")
+  if (!is.numeric(K) || K!=floor(K) || K < 2 || K > ncol(X))
+    stop("K: integer >= 2, <= d")
 
   if (is.null(M))
   {
 
   if (is.null(M))
   {