JungiinChoi / SpMix

Building r package for a semiparametric density estimation
0 stars 0 forks source link

Test Manual #5

Open JungiinChoi opened 2 years ago

JungiinChoi commented 2 years ago

Install required packages

install.packages(c("devtools","LogConcDEAD"))

Install JaneeChoi/fmlogcondens

devtools::install_github("JaneeChoi/fmlogcondens")

results(clang)

> devtools::install_github("JaneeChoi/fmlogcondens")
Downloading GitHub repo JaneeChoi/fmlogcondens@HEAD
✓  checking for file ‘/private/var/folders/ms/1b6mj3f10_gbwfdztvcjv4b00000gn/T/RtmpY7Kmmy/remotes77285f83e40c/JaneeChoi-fmlogcondens-0746aa3/DESCRIPTION’ ...
─  preparing ‘fmlogcondens’:
✓  checking DESCRIPTION meta-information ...
─  cleaning src
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
   Omitted ‘LazyData’ from DESCRIPTION
─  building ‘fmlogcondens_1.0.2.tar.gz’

* installing *source* package ‘fmlogcondens’ ...
** using staged installation
** libs
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c AVXinfo.c -o AVXinfo.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c CNS.c -o CNS.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c bfgsFullC.c -o bfgsFullC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c bfgsInitC.c -o bfgsInitC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c calcExactIntegral.c -o calcExactIntegral.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c calcGradAVX.c -o calcGradAVX.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c calcGradC.c -o calcGradC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c calcGradFastC.c -o calcGradFastC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c calcGradFastFloatC.c -o calcGradFastFloatC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c calcGradFloatC.c -o calcGradFloatC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c calcGradFullAVXC.c -o calcGradFullAVXC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c fmlogcondens_init.c -o fmlogcondens_init.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c kernelDensC.c -o kernelDensC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c makeGridC.c -o makeGridC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c preCondGradAVXC.c -o preCondGradAVXC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c preCondGradFloatC.c -o preCondGradFloatC.o
clang -mmacosx-version-min=10.13 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -I../src  -I/usr/local/include   -fPIC  -Wall -g -O2  -c util.c -o util.o
clang -mmacosx-version-min=10.13 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o fmlogcondens.so AVXinfo.o CNS.o bfgsFullC.o bfgsInitC.o calcExactIntegral.o calcGradAVX.o calcGradC.o calcGradFastC.o calcGradFastFloatC.o calcGradFloatC.o calcGradFullAVXC.o fmlogcondens_init.o kernelDensC.o makeGridC.o preCondGradAVXC.o preCondGradFloatC.o util.o -L/Library/Frameworks/R.framework/Resources/lib -lRlapack -L/Library/Frameworks/R.framework/Resources/lib -lRblas -L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0 -L/usr/local/gfortran/lib -lgfortran -lquadmath -lm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
ld: warning: directory not found for option '-L/usr/local/gfortran/lib/gcc/x86_64-apple-darwin18/8.2.0'
installing to /Library/Frameworks/R.framework/Versions/4.1/Resources/library/00LOCK-fmlogcondens/00new/fmlogcondens/libs
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
** checking absolute paths in shared objects and dynamic libraries
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (fmlogcondens)

results(Rtools)

The downloaded binary packages are in
   C:\Users\serim\AppData\Local\Temp\RtmpMHYw3u\downloaded_packages
√  checking for file 'C:\Users\serim\AppData\Local\Temp\RtmpMHYw3u\remotes60ec73f7508a\JaneeChoi-fmlogcondens-0746aa3/DESCRIPTION' (513ms)
-  preparing 'fmlogcondens':
√  checking DESCRIPTION meta-information ... 
-  cleaning src
   parse(con, encoding = "UTF-8")에서 경고가 발생했습니다 : 
     argument encoding="UTF-8" is ignored in MBCS locales
-  checking for LF line-endings in source and make files and shell scripts
-  checking for empty or unneeded directories
   Omitted 'LazyData' from DESCRIPTION
-  building 'fmlogcondens_1.0.2.tar.gz'

‘C:/Users/serim/Documents/R/win-library/4.1’의 위치에 패키지(들)을 설치합니다.
(왜냐하면 ‘lib’가 지정되지 않았기 때문입니다)
* installing *source* package 'fmlogcondens' ...
** using staged installation
parse(con, encoding = "UTF-8")에서 경고가 발생했습니다 : 
  argument encoding="UTF-8" is ignored in MBCS locales
** libs

*** arch - i386
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c AVXinfo.c -o AVXinfo.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c CNS.c -o CNS.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c bfgsFullC.c -o bfgsFullC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c bfgsInitC.c -o bfgsInitC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcExactIntegral.c -o calcExactIntegral.o
calcExactIntegral.c: In function 'comp':
calcExactIntegral.c:56:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
     else if (*x > *y) return 1; return 0;
     ^~~~
calcExactIntegral.c:56:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
     else if (*x > *y) return 1; return 0;
                                 ^~~~~~
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradAVX.c -o calcGradAVX.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradC.c -o calcGradC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradFastC.c -o calcGradFastC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradFastFloatC.c -o calcGradFastFloatC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradFloatC.c -o calcGradFloatC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradFullAVXC.c -o calcGradFullAVXC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c fmlogcondens_init.c -o fmlogcondens_init.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c kernelDensC.c -o kernelDensC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c makeGridC.c -o makeGridC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c preCondGradAVXC.c -o preCondGradAVXC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c preCondGradFloatC.c -o preCondGradFloatC.o
"C:/RBuildTools/4.0/mingw32/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c util.c -o util.o
C:/RBuildTools/4.0/mingw32/bin/gcc -shared -s -static-libgcc -o fmlogcondens.dll tmp.def AVXinfo.o CNS.o bfgsFullC.o bfgsInitC.o calcExactIntegral.o calcGradAVX.o calcGradC.o calcGradFastC.o calcGradFastFloatC.o calcGradFloatC.o calcGradFullAVXC.o fmlogcondens_init.o kernelDensC.o makeGridC.o preCondGradAVXC.o preCondGradFloatC.o util.o -LC:/PROGRA~1/R/R-41~1.1/bin/i386 -lRlapack -LC:/PROGRA~1/R/R-41~1.1/bin/i386 -lRblas -lgfortran -lm -lquadmath -fopenmp -LC:/PROGRA~1/R/R-41~1.1/bin/i386 -lR
installing to C:/Users/serim/Documents/R/win-library/4.1/00LOCK-fmlogcondens/00new/fmlogcondens/libs/i386

*** arch - x64
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c AVXinfo.c -o AVXinfo.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c CNS.c -o CNS.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c bfgsFullC.c -o bfgsFullC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c bfgsInitC.c -o bfgsInitC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcExactIntegral.c -o calcExactIntegral.o
calcExactIntegral.c: In function 'comp':
calcExactIntegral.c:56:5: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
     else if (*x > *y) return 1; return 0;
     ^~~~
calcExactIntegral.c:56:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
     else if (*x > *y) return 1; return 0;
                                 ^~~~~~
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradAVX.c -o calcGradAVX.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradC.c -o calcGradC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradFastC.c -o calcGradFastC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradFastFloatC.c -o calcGradFastFloatC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradFloatC.c -o calcGradFloatC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c calcGradFullAVXC.c -o calcGradFullAVXC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c fmlogcondens_init.c -o fmlogcondens_init.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c kernelDensC.c -o kernelDensC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c makeGridC.c -o makeGridC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c preCondGradAVXC.c -o preCondGradAVXC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c preCondGradFloatC.c -o preCondGradFloatC.o
"C:/RBuildTools/4.0/mingw64/bin/"gcc  -I"C:/PROGRA~1/R/R-41~1.1/include" -DNDEBUG -I../src      -fopenmp   -O2 -Wall  -std=gnu99 -mfpmath=sse -msse2 -mstackrealign  -c util.c -o util.o
C:/RBuildTools/4.0/mingw64/bin/gcc -shared -s -static-libgcc -o fmlogcondens.dll tmp.def AVXinfo.o CNS.o bfgsFullC.o bfgsInitC.o calcExactIntegral.o calcGradAVX.o calcGradC.o calcGradFastC.o calcGradFastFloatC.o calcGradFloatC.o calcGradFullAVXC.o fmlogcondens_init.o kernelDensC.o makeGridC.o preCondGradAVXC.o preCondGradFloatC.o util.o -LC:/PROGRA~1/R/R-41~1.1/bin/x64 -lRlapack -LC:/PROGRA~1/R/R-41~1.1/bin/x64 -lRblas -lgfortran -lm -lquadmath -fopenmp -LC:/PROGRA~1/R/R-41~1.1/bin/x64 -lR
installing to C:/Users/serim/Documents/R/win-library/4.1/00LOCK-fmlogcondens/00new/fmlogcondens/libs/x64
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
  converting help for package 'fmlogcondens'
    finding HTML links ... done
    calcCvxHullFaces                        html  
    compilationInfo                         html  
    correctIntegral                         html  
    fmlcd                                   html  
    fmlcdEM                                 html  
    paramFitGammaOne                        html  
    paramFitKernelDensity                   html  
    sp.mix.1D                               html  
    sp.mix.multi                            html  
** building package indices
** installing vignettes
** testing if installed package can be loaded from temporary location
*** arch - i386
*** arch - x64
** testing if installed package can be loaded from final location
*** arch - i386
*** arch - x64
** testing if installed package keeps a record of temporary installation path
* DONE (fmlogcondens)
Warning message:
In file.copy(savedcopy, lib, recursive = TRUE) :
  problem copying C:\Users\serim\Documents\R\win-library\4.1\00LOCK\mvtnorm\libs\x64\mvtnorm.dll to C:\Users\serim\Documents\R\win-library\4.1\mvtnorm\libs\x64\mvtnorm.dll: Permission denied

simple check for JaneeChoi/fmlogcondens

library(fmlogcondens)

# draw samples from normal distribution
X <- matrix(rnorm(500),250,2)
# estimate log-concave density
system.time(r <- fmlcd(X))

results(clang)

> system.time(r <- fmlcd(X))
   user  system elapsed 
  0.691   0.006   0.699 

results(RTools)

> system.time(r <- fmlcd(X))
   user  system elapsed 
   4.34    2.29    2.53 

# load `LogConcDEAD` library for plotting capatibilities
library(LogConcDEAD)
r <- LogConcDEAD::getinfolcd(X, r$logMLE) # create a `LogConcDEAD` object
# plot estimated density
par(mfrow = c(1, 2)) #square plots
plot(r, addp = FALSE, asp = 1, main="density")
plot(r, uselog = TRUE, addp = FALSE, asp = 1, main="log density")

results

image

calculate parameters of convex hull of X

# draw samples from normal distribution
X <- matrix(rnorm(200),100,2) 
# calculate parameters of convex hull of X
r <- calcCvxHullFaces(X)
# draw random parameters of 10 hyperplanes
a <- matrix(runif(10*2),10,2)
b <- runif(10)
correctIntegral(X,rep(0,2),a,b,r$cvh)

results

> correctIntegral(X,rep(0,2),a,b,r$cvh)
$a
             [,1]          [,2]
 [1,]  -0.2514045  3.794725e-01
 [2,] -14.3026802  2.927784e+00
 [3,]   0.9462521  4.289908e-01
 [4,]   0.9459493  4.286564e-01
 [5,]   0.2414494  1.140063e-01
 [6,]   0.4883418 -9.251738e-03
 [7,]   0.4871921  5.394362e-03
 [8,]   0.7260742  3.553162e-01
 [9,]   0.6499693  3.419841e-01
[10,]   0.2503993  1.177854e-01
[11,]   0.6281360  2.504046e-01
[12,]   0.5297285  1.888819e-01
[13,]   0.4599567  3.833296e-01
[14,]   0.6301517  3.489907e-01
[15,]   0.2930169  1.503632e-01
[16,]   0.5677444  3.079430e-01
[17,]   0.4319968  2.725153e-01
[18,]   0.7179824  3.922944e-01
[19,]   0.8688012  4.242659e-01
[20,]   0.7438867  4.202817e-01
[21,]   0.4633808  4.107202e-01
[22,]   0.4532971  4.892582e-01
[23,]   0.4404536  4.739035e-01
[24,] 397.7539804 -1.355763e+03
[25,]   0.6916997 -6.658128e-01
[26,]   0.6814945 -5.216198e-01
[27,]   0.5834440  3.990963e-01
[28,]   0.6191758  3.572731e-01
[29,]   0.6840987  3.801898e-01
[30,]   0.6392339  3.600513e-01
[31,]   0.2424130  1.102440e-01
[32,]   0.2424130  1.102440e-01
[33,]   0.2424130  1.102440e-01
[34,]   0.2424130  1.102440e-01
[35,]   0.2424130  1.102440e-01
[36,]   0.2424130  1.102440e-01
[37,]   0.2424130  1.102440e-01
[38,]   0.5646790  3.264015e-01
[39,]   0.5646790  3.264015e-01
[40,]   0.5646790  3.264015e-01
[41,]   0.9456775  4.245332e-01
[42,]   0.9456775  4.245332e-01
[43,]   0.9456775  4.245332e-01
[44,]   0.9456775  4.245332e-01
[45,]   0.9456775  4.245332e-01
[46,]   0.9456775  4.245332e-01
[47,]   0.9456775  4.245332e-01
[48,]   0.9456775  4.245332e-01
[49,]   0.6251422  4.361265e-01
[50,]   0.6251422  4.361265e-01

$b
 [1]     1.476754   -26.084391     2.802013     2.802705     2.542487
 [6]     2.382806     2.404299     2.755740     2.730876     2.550970
[11]     2.695649     2.649322     2.525799     2.718497     2.572932
[16]     2.697727     2.624442     2.731458     2.770903     2.711362
[21]     2.496252     2.371314     2.382421 -2490.949727     1.329936
[26]     1.565790     2.621340     2.704395     2.723864     2.716127
[31]     2.546394     2.546394     2.546394     2.546394     2.546394
[36]     2.546394     2.546394     2.690798     2.690798     2.690798
[41]     2.810156     2.810156     2.810156     2.810156     2.810156
[46]     2.810156     2.810156     2.810156     2.604195     2.604195

$aSparse
             [,1]      [,2]
 [1,] 0.605468275 0.6485461
 [2,] 0.288959442 0.6248209
 [3,] 0.625142180 0.1705163
 [4,] 0.436126464 0.3941118
 [5,] 0.525257931 0.9456775
 [6,] 0.001277463 0.4245332
 [7,] 0.242413025 0.2123698
 [8,] 0.110243982 0.4427726
 [9,] 0.564678961 0.8660772
[10,] 0.326401497 0.4956518

$bSparse
 [1] 0.72424059 0.76796968 0.02065282 0.71016871 0.85457208 0.03594660
 [7] 0.13128988 0.97393058 0.24762594 0.48999887

$logMLE
  [1] -3.101846 -2.763365 -2.420597 -2.180112 -2.341285 -2.372117 -3.674346
  [8] -2.002556 -2.959106 -2.396505 -2.012810 -3.009245 -2.412293 -2.489876
 [15] -2.514639 -2.732776 -2.327968 -4.588378 -2.755226 -3.041222 -2.491853
 [22] -2.134573 -3.226137 -4.055025 -3.887363 -3.209527 -2.732108 -3.336530
 [29] -2.322288 -2.555011 -2.328867 -2.236931 -2.082580 -3.102846 -2.909634
 [36] -2.912341 -2.758320 -2.305639 -2.201370 -3.087710 -2.332492 -1.965960
 [43] -3.457495 -3.290248 -3.784982 -2.338207 -2.604005 -4.265315 -3.100669
 [50] -3.803598 -2.434981 -2.647095 -2.199060 -2.429891 -3.453960 -2.310994
 [57] -2.946725 -2.703054 -2.088204 -2.262356 -3.833057 -2.653574 -2.685621
 [64] -4.088415 -3.817279 -2.334012 -2.768002 -2.557690 -2.445499 -2.933800
 [71] -2.701348 -2.343896 -2.328308 -3.164699 -2.830455 -2.369157 -2.400857
 [78] -2.378056 -3.413288 -2.655216 -2.645606 -3.091753 -4.245509 -3.223848
 [85] -2.157622 -2.813689 -3.864353 -3.747476 -2.736332 -2.823587 -4.575758
 [92] -1.771285 -3.378201 -2.352814 -4.646242 -4.745543 -4.151535 -4.157548
 [99] -2.518314 -4.246823

find initial hyperplane parameters based on a smooth log-concave density

paramFitGammaOne(X, rep(1 / nrow(X), nrow(X)), r$ACVH, r$bCVH, r$cvh)

results are omitted

find initial hyperplane parameters based on a kernel density estimator with Gaussian kernel

paramFitKernelDensity(X, rep(1 / nrow(X), nrow(X)), r$cvh)

results are omitted

Install JaneeChoi/SpMix which imports JaneeChoi/fmlogcondens

devtools::install_github("JaneeChoi/SpMix",force=TRUE)

results(clang)

Downloading GitHub repo JaneeChoi/SpMix@HEAD
✓  checking for file ‘/private/var/folders/ms/1b6mj3f10_gbwfdztvcjv4b00000gn/T/RtmpY7Kmmy/remotes772843d1c998/JaneeChoi-SpMix-08e2379/DESCRIPTION’ (334ms)
─  preparing ‘SpMix’:
✓  checking DESCRIPTION meta-information ...
─  checking for LF line-endings in source and make files and shell scripts
─  checking for empty or unneeded directories
   Omitted ‘LazyData’ from DESCRIPTION
─  building ‘SpMix_1.0.0.tar.gz’

* installing *source* package ‘SpMix’ ...
** using staged installation
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded from temporary location
** testing if installed package can be loaded from final location
** testing if installed package keeps a record of temporary installation path
* DONE (SpMix)

results(Rtools)

The downloaded binary packages are in
   C:\Users\serim\AppData\Local\Temp\RtmpMHYw3u\downloaded_packages
√  checking for file 'C:\Users\serim\AppData\Local\Temp\RtmpMHYw3u\remotes60ec572d5c48\JaneeChoi-SpMix-08e2379/DESCRIPTION' (566ms)
-  preparing 'SpMix':
√  checking DESCRIPTION meta-information ... 
-  checking for LF line-endings in source and make files and shell scripts
-  checking for empty or unneeded directories
   Omitted 'LazyData' from DESCRIPTION
-  building 'SpMix_1.0.0.tar.gz'

‘C:/Users/serim/Documents/R/win-library/4.1’의 위치에 패키지(들)을 설치합니다.
(왜냐하면 ‘lib’가 지정되지 않았기 때문입니다)
* installing *source* package 'SpMix' ...
** using staged installation
** R
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
  converting help for package 'SpMix'
    finding HTML links ... done
    sp.mix.1D                               html  
    sp.mix.multi                            html  
** building package indices
** testing if installed package can be loaded from temporary location
*** arch - i386
*** arch - x64
** testing if installed package can be loaded from final location
*** arch - i386
*** arch - x64
** testing if installed package keeps a record of temporary installation path
* DONE (SpMix)
Warning message:
In file.copy(savedcopy, lib, recursive = TRUE) :
  problem copying C:\Users\serim\Documents\R\win-library\4.1\00LOCK\mvtnorm\libs\x64\mvtnorm.dll to C:\Users\serim\Documents\R\win-library\4.1\mvtnorm\libs\x64\mvtnorm.dll: Permission denied

simple runtime check for JaneeChoi/SpMix

library(SpMix)

set.seed(222)
X = matrix(rnorm(2000), 1000, 2)

system.time(r <- fmlcd(X)) # < 3sec in R version 4.1.1 / CC:clang
str(r) 

results(clang)

> system.time(r <- fmlcd(X)) 
   user  system elapsed 
  1.143   0.010   1.155 
> str(r) 
List of 6
 $ a      : num [1:904, 1:2] -5.294 -2.93 14.852 -0.732 -0.323 ...
 $ b      : num [1:904] -9.37 -3.21 -39.52 -1.46 -1.23 ...
 $ aSparse: num [1:84, 1:2] 2.05 -2.483 -0.919 2.162 0.381 ...
 $ bSparse: num [1:84] -2.683 -0.522 -3.855 -5.427 -1.727 ...
 $ logMLE : num [1:1000] -2.95 -1.94 -2.85 -3.56 -2.99 ...
 $ logLike: num [1, 1:1000] -2.95 -1.94 -2.85 -3.56 -2.99 ...

results(Rtools)

   user  system elapsed 
   8.39    4.07    4.50 

runtime check for 2d normal mixture

SimMultNormal <- function(M, n, p0)
  # [Multivariate] Null: Normal, Nonnull: Normal
{
  library(copula)
  param <- 0.5

  library(mvtnorm)
  rho12 <- 0.25
  Sigma0 <- matrix(c(1, rho12, 
                     rho12, 1), 
                   ncol = 2, byrow = T)

  result <- data.frame(p0hat = rep(NA, M),
                       Sensitivity = rep(NA, M),
                       Specificity = rep(NA, M),
                       t=rep(NA,M))

  for ( r in 1:M ) {
    cat(r, "/", M, "\n")
    n0 <- rbinom(1, n, p0)
    n1 <- n - n0
    V <- rCopula(n1, ellipCopula(family = "normal", param = param, dim = 2))
    z0 <- rmvnorm(n0, sigma = Sigma0)
    z1 <- qnorm(V, mean = 3.5, sd = .5)
    z <- rbind(z0, z1)
    plot(z, col = c(rep(1, n0), rep(2, n1)), pch = 20)

    runtime<-system.time(res <- sp.mix.multi(z))[3]

    p0hat <- res$p.0
    Nhat <- as.integer(res$localfdr <= 0.2)
    TP <- sum(Nhat[-(1:n0)] == 1)
    TN <- sum(Nhat[1:n0] == 0)
    FP <- n0 - TN
    FN <- n1 - TP
    result$p0hat[r] <- p0hat
    result$Sensitivity[r] <- TP/(TP + FN)
    result$Specificity[r] <- TN/(TN + FP)
    result$t[r] <- runtime
  }

  return(result)
}

Runtime for N=100,500,1000,5000,10000,15000,20000,25000

result_df=data.frame(N=c(),p0=c(),time=c())

for (N in c(100,500,1000,5000,10000,15000,20000,25000)){
  for (p in c(0.95,0.90,0.80)){
    Res<-SimMultNormal(M = 1, n = N, p0 = p)
    result_df=rbind(result_df,data.frame(N=N,p0=p,time=Res$t))
  }
}

# plot and save the results

library(ggplot2)
library(dplyr)

p1<-ggplot(data=result_df,aes(x=N,y=time,group=p0,colour=p0))+geom_line()
ggsave("time.png", plot=p1, height=6, width=8, dpi=600)

results(clang)

time

results(RTools)

image