- using R Under development (unstable) (2024-10-22 r87265)
- using platform: x86_64-pc-linux-gnu
- R was compiled by
Debian clang version 19.1.2 (1)
Debian flang-new version 19.1.2 (1)
- running under: Debian GNU/Linux trixie/sid
- using session charset: UTF-8
- checking for file ‘cobs/DESCRIPTION’ ... OK
- this is package ‘cobs’ version ‘1.3-8’
- checking package namespace information ... OK
- checking package dependencies ... OK
- checking if this is a source package ... OK
- checking if there is a namespace ... OK
- checking for executable files ... OK
- checking for hidden files and directories ... OK
- checking for portable file names ... OK
- checking for sufficient/correct file permissions ... OK
- checking serialization versions ... OK
- checking whether package ‘cobs’ can be installed ... OK
See the install log for details.
- used C compiler: ‘Debian clang version 19.1.2 (1)’
- checking package directory ... OK
- checking for future file timestamps ... OK
- checking DESCRIPTION meta-information ... OK
- checking top-level files ... OK
- checking for left-over files ... OK
- checking index information ... OK
- checking package subdirectories ... OK
- checking code files for non-ASCII characters ... OK
- checking R files for syntax errors ... OK
- checking whether the package can be loaded ... [2s/3s] OK
- checking whether the package can be loaded with stated dependencies ... [2s/3s] OK
- checking whether the package can be unloaded cleanly ... [2s/3s] OK
- checking whether the namespace can be loaded with stated dependencies ... [2s/3s] OK
- checking whether the namespace can be unloaded cleanly ... [2s/4s] OK
- checking loading without being on the library search path ... [2s/3s] OK
- checking whether startup messages can be suppressed ... [2s/3s] OK
- checking use of S3 registration ... OK
- checking dependencies in R code ... OK
- checking S3 generic/method consistency ... OK
- checking replacement functions ... OK
- checking foreign function calls ... OK
- checking R code for possible problems ... [16s/24s] OK
- checking Rd files ... [1s/1s] OK
- checking Rd metadata ... OK
- checking Rd line widths ... OK
- checking Rd cross-references ... OK
- checking for missing documentation entries ... OK
- checking for code/documentation mismatches ... OK
- checking Rd \usage sections ... OK
- checking Rd contents ... OK
- checking for unstated dependencies in examples ... OK
- checking contents of ‘data’ directory ... OK
- checking data for non-ASCII characters ... [0s/0s] OK
- checking LazyData ... OK
- checking data for ASCII and uncompressed saves ... OK
- checking line endings in C/C++/Fortran sources/headers ... OK
- checking line endings in Makefiles ... OK
- checking compilation flags in Makevars ... OK
- checking for GNU extensions in Makefiles ... OK
- checking for portable use of $(BLAS_LIBS) and $(LAPACK_LIBS) ... OK
- checking use of PKG_*FLAGS in Makefiles ... OK
- checking use of SHLIB_OPENMP_*FLAGS in Makefiles ... OK
- checking pragmas in C/C++ headers and code ... OK
- checking compilation flags used ... OK
- checking compiled code ... OK
- checking examples ... [11s/12s] OK
- checking for unstated dependencies in ‘tests’ ... OK
- checking tests ... [40s/53s] ERROR
Running ‘0_pt-ex.R’ [2s/3s]
Running ‘ex1.R’ [3s/5s]
Running ‘ex2-long.R’ [7s/9s]
Running ‘ex3.R’ [2s/3s]
Comparing ‘ex3.Rout’ to ‘ex3.Rout.save’ ... OK
Running ‘multi-constr.R’ [4s/6s]
Running ‘roof.R’ [4s/5s]
Comparing ‘roof.Rout’ to ‘roof.Rout.save’ ... OK
Running ‘small-ex.R’ [3s/4s]
Comparing ‘small-ex.Rout’ to ‘small-ex.Rout.save’ ... OK
Running ‘spline-ex.R’ [2s/3s]
Comparing ‘spline-ex.Rout’ to ‘spline-ex.Rout.save’ ... OK
Running ‘temp.R’ [3s/5s]
Comparing ‘temp.Rout’ to ‘temp.Rout.save’ ... OK
Running ‘wind.R’ [8s/11s]
Running the tests in ‘tests/ex1.R’ failed.
Complete output:
> #### OOps! Running this in 'CMD check' or in *R* __for the first time__
> #### ===== gives a wrong result (at the end) than when run a 2nd time
> ####-- problem disappears with introduction of if (psw) call ... in Fortran
>
> suppressMessages(library(cobs))
> options(digits = 6)
> if(!dev.interactive(orNone=TRUE)) pdf("ex1.pdf")
>
> source(system.file("util.R", package = "cobs"))
>
> ## Simple example from example(cobs)
> set.seed(908)
> x <- seq(-1,1, len = 50)
> f.true <- pnorm(2*x)
> y <- f.true + rnorm(50)/10
> ## specify constraints (boundary conditions)
> con <- rbind(c( 1,min(x),0),
+ c(-1,max(x),1),
+ c( 0, 0, 0.5))
> ## obtain the median *regression* B-spline using automatically selected knots
> coR <- cobs(x,y,constraint = "increase", pointwise = con)
qbsks2():
Performing general knot selection ...
Deleting unnecessary knots ...
Warning message:
In cobs(x, y, constraint = "increase", pointwise = con) :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
> summaryCobs(coR)
List of 24
$ call : language cobs(x = x, y = y, constraint = "increase", pointwise = con)
$ tau : num 0.5
$ degree : num 2
$ constraint : chr "increase"
$ ic : chr "AIC"
$ pointwise : num [1:3, 1:3] 1 -1 0 -1 1 0 0 1 0.5
$ select.knots : logi TRUE
$ select.lambda: logi FALSE
$ x : num [1:50] -1 -0.959 -0.918 -0.878 -0.837 ...
$ y : num [1:50] 0.2254 0.0916 0.0803 -0.0272 -0.0454 ...
$ resid : num [1:50] 0.148 0.019 0.0105 -0.0962 -0.1156 ...
$ fitted : num [1:50] 0.0774 0.0726 0.0698 0.069 0.0702 ...
$ coef : num [1:4] 0.0774 0.0226 0.8067 1.074
$ knots : num [1:3] -1 -0.224 1
$ k0 : num 4
$ k : num 4
$ x.ps :Formal class 'matrix.csr' [package "SparseM"] with 4 slots
$ SSy : num 6.19
$ lambda : num 0
$ icyc : int 1
$ ifl : int 21
$ pp.lambda : NULL
$ pp.sic : NULL
$ i.mask : NULL
cb.lo ci.lo fit ci.up cb.up
1 -0.02569206 0.0153529 0.0773974 0.139442 0.180487
2 -0.02467377 0.0149258 0.0747853 0.134645 0.174244
3 -0.02343992 0.0148223 0.0726602 0.130498 0.168760
4 -0.02198644 0.0150449 0.0710223 0.127000 0.164031
5 -0.02030765 0.0155971 0.0698714 0.124146 0.160050
6 -0.01839614 0.0164832 0.0692075 0.121932 0.156811
7 -0.01624274 0.0177089 0.0690308 0.120353 0.154304
8 -0.01383648 0.0192806 0.0693410 0.119401 0.152519
9 -0.01116467 0.0212061 0.0701384 0.119071 0.151441
10 -0.00821304 0.0234939 0.0714227 0.119352 0.151059
11 -0.00496594 0.0261535 0.0731942 0.120235 0.151354
12 -0.00140661 0.0291949 0.0754527 0.121711 0.152312
13 0.00248257 0.0326287 0.0781983 0.123768 0.153914
14 0.00671972 0.0364659 0.0814309 0.126396 0.156142
15 0.01132316 0.0407175 0.0851506 0.129584 0.158978
16 0.01631107 0.0453944 0.0893573 0.133320 0.162404
17 0.02170124 0.0505073 0.0940511 0.137595 0.166401
18 0.02751079 0.0560665 0.0992320 0.142397 0.170953
19 0.03375595 0.0620819 0.1048999 0.147718 0.176044
20 0.04045190 0.0685624 0.1110549 0.153547 0.181658
21 0.04761262 0.0755166 0.1176969 0.159877 0.187781
22 0.05525079 0.0829521 0.1248260 0.166700 0.194401
23 0.06337769 0.0908757 0.1324422 0.174009 0.201507
24 0.07200318 0.0992932 0.1405454 0.181798 0.209088
25 0.08113560 0.1082098 0.1491357 0.190062 0.217136
26 0.09078179 0.1176295 0.1582130 0.198797 0.225644
27 0.10094701 0.1275555 0.1677774 0.207999 0.234608
28 0.11163490 0.1379900 0.1778288 0.217668 0.244023
29 0.12284746 0.1489342 0.1883674 0.227801 0.253887
30 0.13458491 0.1603882 0.1993929 0.238398 0.264201
31 0.14684569 0.1723511 0.2109056 0.249460 0.274965
32 0.15962625 0.1848207 0.2229052 0.260990 0.286184
33 0.17292100 0.1977938 0.2353920 0.272990 0.297863
34 0.18672210 0.2112655 0.2483658 0.285466 0.310009
35 0.20101931 0.2252297 0.2618267 0.298424 0.322634
36 0.21579978 0.2396787 0.2757746 0.311870 0.335749
37 0.23104789 0.2546031 0.2902096 0.325816 0.349371
38 0.24674505 0.2699916 0.3051316 0.340272 0.363518
39 0.26286963 0.2858313 0.3205407 0.355250 0.378212
40 0.27927345 0.3019880 0.3363239 0.370660 0.393374
41 0.29546082 0.3179864 0.3520365 0.386087 0.408612
42 0.31139379 0.3337855 0.3676333 0.401481 0.423873
43 0.32708550 0.3493933 0.3831143 0.416835 0.439143
44 0.34254943 0.3648179 0.3984794 0.432141 0.454409
45 0.35779910 0.3800674 0.4137287 0.447390 0.469658
46 0.37284780 0.3951499 0.4288622 0.462574 0.484877
47 0.38770842 0.4100730 0.4438798 0.477687 0.500051
48 0.40239320 0.4248442 0.4587815 0.492719 0.515170
49 0.41691367 0.4394703 0.4735674 0.507665 0.530221
50 0.43128050 0.4539579 0.4882375 0.522517 0.545195
51 0.44550348 0.4683128 0.5027918 0.537271 0.560080
52 0.45959144 0.4825403 0.5172301 0.551920 0.574869
53 0.47355229 0.4966451 0.5315527 0.566460 0.589553
54 0.48739298 0.5106315 0.5457594 0.580887 0.604126
55 0.50111956 0.5245032 0.5598503 0.595197 0.618581
56 0.51473718 0.5382631 0.5738253 0.609388 0.632913
57 0.52825014 0.5519139 0.5876845 0.623455 0.647119
58 0.54166189 0.5654577 0.6014278 0.637398 0.661194
59 0.55497510 0.5788960 0.6150553 0.651215 0.675136
60 0.56819166 0.5922301 0.6285670 0.664904 0.688942
61 0.58131273 0.6054605 0.6419628 0.678465 0.702613
62 0.59433873 0.6185876 0.6552428 0.691898 0.716147
63 0.60726940 0.6316113 0.6684069 0.705203 0.729544
64 0.62010376 0.6445308 0.6814552 0.718380 0.742807
65 0.63284018 0.6573453 0.6943876 0.731430 0.755935
66 0.64547632 0.6700533 0.7072042 0.744355 0.768932
67 0.65800921 0.6826530 0.7199050 0.757157 0.781801
68 0.67043520 0.6951423 0.7324899 0.769838 0.794545
69 0.68274995 0.7075185 0.7449590 0.782400 0.807168
70 0.69494850 0.7197786 0.7573122 0.794846 0.819676
71 0.70702523 0.7319193 0.7695496 0.807180 0.832074
72 0.71897385 0.7439368 0.7816712 0.819406 0.844369
73 0.73078747 0.7558269 0.7936769 0.831527 0.856566
74 0.74245861 0.7675851 0.8055668 0.843548 0.868675
75 0.75397921 0.7792066 0.8173408 0.855475 0.880702
76 0.76534070 0.7906862 0.8289990 0.867312 0.892657
77 0.77653408 0.8020185 0.8405413 0.879064 0.904549
78 0.78754996 0.8131979 0.8519678 0.890738 0.916386
79 0.79837866 0.8242185 0.8632785 0.902338 0.928178
80 0.80901036 0.8350744 0.8744733 0.913872 0.939936
81 0.81943516 0.8457597 0.8855523 0.925345 0.951669
82 0.82964324 0.8562684 0.8965154 0.936762 0.963388
83 0.83962502 0.8665947 0.9073627 0.948131 0.975100
84 0.84937122 0.8767332 0.9180941 0.959455 0.986817
85 0.85887309 0.8866785 0.9287098 0.970741 0.998546
86 0.86812243 0.8964257 0.9392095 0.981993 1.010297
87 0.87711179 0.9059703 0.9495934 0.993217 1.022075
88 0.88583447 0.9153083 0.9598615 1.004415 1.033889
89 0.89428462 0.9244361 0.9700138 1.015591 1.045743
90 0.90245726 0.9333508 0.9800502 1.026749 1.057643
91 0.91034831 0.9420499 0.9899707 1.037891 1.069593
92 0.91795453 0.9505315 0.9997754 1.049019 1.081596
93 0.92527350 0.9587940 1.0094643 1.060135 1.093655
94 0.93230358 0.9668366 1.0190373 1.071238 1.105771
95 0.93904380 0.9746586 1.0284945 1.082330 1.117945
96 0.94549385 0.9822598 1.0378359 1.093412 1.130178
97 0.95165390 0.9896403 1.0470614 1.104482 1.142469
98 0.95752462 0.9968006 1.0561710 1.115541 1.154817
99 0.96310704 1.0037413 1.0651648 1.126588 1.167223
100 0.96840246 1.0104631 1.0740428 1.137623 1.179683
knots :
[1] -1.00000 -0.22449 1.00000
coef :
[1] 0.0773974 0.0225871 0.8067413 1.0740429
> coR1 <- cobs(x,y,constraint = "increase", pointwise = con, degree = 1)
qbsks2():
Performing general knot selection ...
Deleting unnecessary knots ...
Warning message:
In cobs(x, y, constraint = "increase", pointwise = con, degree = 1) :
drqssbc2(): Not all flags are normal (== 1), ifl : 20
> summary(coR1)
COBS regression spline (degree = 1) from call:
cobs(x = x, y = y, constraint = "increase", degree = 1, pointwise = con)
**** ERROR in algorithm: ifl = 20
{tau=0.5}-quantile; dimensionality of fit: 3 from {3}
x$knots[1:3]: -1.000002, -0.632653, 1.000002
with 3 pointwise constraints
coef[1:3]: 0.0781509, 0.0820419, 1.1196697
R^2 = 94.72% ; empirical tau (over all): 25/50 = 0.5 (target tau= 0.5)
>
> ## compute the median *smoothing* B-spline using automatically chosen lambda
> coS <- cobs(x,y,constraint = "increase", pointwise = con,
+ lambda = -1, trace = 3)
Searching for optimal lambda. This may take a while.
While you are waiting, here is something you can consider
to speed up the process:
(a) Use a smaller number of knots;
(b) Set lambda==0 to exclude the penalty term;
(c) Use a coarser grid by reducing the argument
'lambda.length' from the default value of 25.
loo.design2(): -> Xeq 51 x 22 (nz = 151 =^= 0.13%)
Xieq 62 x 22 (nz = 224 =^= 0.16%)
........................
Error in drqssbc2(x, y, w, pw = pw, knots = knots, degree = degree, Tlambda = if (select.lambda) lambdaSet else lambda, :
The problem is degenerate for the range of lambda specified.
Calls: cobs -> drqssbc2
In addition: Warning message:
In min(sol1["k", i.keep]) : no non-missing arguments to min; returning Inf
Execution halted
Running the tests in ‘tests/multi-constr.R’ failed.
Complete output:
> #### Examples which use the new feature of more than one 'constraint'.
>
> suppressMessages(library(cobs))
>
> ## do *not* show platform info here (as have *.Rout.save), but in 0_pt-ex.R
> options(digits = 6)
>
> if(!dev.interactive(orNone=TRUE)) pdf("multi-constr.pdf")
>
> source(system.file("util.R", package = "cobs"))
> source(system.file(package="Matrix", "test-tools-1.R", mustWork=TRUE))
Loading required package: tools
> ##--> tryCatch.W.E(), showProc.time(), assertError(), relErrV(), ...
> Lnx <- Sys.info()[["sysname"]] == "Linux"
> isMac <- Sys.info()[["sysname"]] == "Darwin"
> x86 <- (arch <- Sys.info()[["machine"]]) == "x86_64"
> noLdbl <- (.Machine$sizeof.longdouble <= 8) ## TRUE when --disable-long-double
> ## IGNORE_RDIFF_BEGIN
> Sys.info()
sysname
"Linux"
release
"6.10.11-amd64"
version
"#1 SMP PREEMPT_DYNAMIC Debian 6.10.11-1 (2024-09-22)"
nodename
"gimli2"
machine
"x86_64"
login
"hornik"
user
"hornik"
effective_user
"hornik"
> noLdbl
[1] FALSE
> ## IGNORE_RDIFF_END
>
>
> Rsq <- function(obj) {
+ stopifnot(inherits(obj, "cobs"), is.numeric(res <- obj$resid))
+ 1 - sum(res^2)/obj$SSy
+ }
> list_ <- function (...) `names<-`(list(...), vapply(sys.call()[-1L], as.character, ""))
> is.cobs <- function(x) inherits(x, "cobs")
>
> set.seed(908)
> x <- seq(-1,2, len = 50)
> f.true <- pnorm(2*x)
> y <- f.true + rnorm(50)/10
> plot(x,y); lines(x, f.true, col="gray", lwd=2, lty=3)
>
> ## constraint on derivative at right end:
> (con <- rbind(c(2 , max(x), 0))) # f'(x_n) == 0
[,1] [,2] [,3]
[1,] 2 2 0
>
> ## Using 'trace = 3' --> 'trace = 2' inside drqssbc2()
>
> ## Regression splines (lambda = 0)
> c2 <- cobs(x,y, trace = 3)
qbsks2():
Performing general knot selection ...
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
loo.design2(): -> Xeq 50 x 5 (nz = 150 =^= 0.6%)
loo.design2(): -> Xeq 50 x 6 (nz = 150 =^= 0.5%)
loo.design2(): -> Xeq 50 x 7 (nz = 150 =^= 0.43%)
Deleting unnecessary knots ...
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Warning message:
In cobs(x, y, trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
> c2i <- cobs(x,y, constraint = c("increase"), trace = 3)
qbsks2():
Performing general knot selection ...
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 2 x 3 (nz = 6 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 3 x 4 (nz = 9 =^= 0.75%)
loo.design2(): -> Xeq 50 x 5 (nz = 150 =^= 0.6%)
Xieq 4 x 5 (nz = 12 =^= 0.6%)
loo.design2(): -> Xeq 50 x 6 (nz = 150 =^= 0.5%)
Xieq 5 x 6 (nz = 15 =^= 0.5%)
loo.design2(): -> Xeq 50 x 7 (nz = 150 =^= 0.43%)
Xieq 6 x 7 (nz = 18 =^= 0.43%)
Deleting unnecessary knots ...
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 3 x 4 (nz = 9 =^= 0.75%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 3 x 4 (nz = 9 =^= 0.75%)
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 2 x 3 (nz = 6 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 3 x 4 (nz = 9 =^= 0.75%)
Warning message:
In cobs(x, y, constraint = c("increase"), trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
> c2c <- cobs(x,y, constraint = c("concave"), trace = 3)
qbsks2():
Performing general knot selection ...
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 1 x 3 (nz = 3 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
loo.design2(): -> Xeq 50 x 5 (nz = 150 =^= 0.6%)
Xieq 3 x 5 (nz = 9 =^= 0.6%)
loo.design2(): -> Xeq 50 x 6 (nz = 150 =^= 0.5%)
Xieq 4 x 6 (nz = 12 =^= 0.5%)
loo.design2(): -> Xeq 50 x 7 (nz = 150 =^= 0.43%)
Xieq 5 x 7 (nz = 15 =^= 0.43%)
Deleting unnecessary knots ...
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 1 x 3 (nz = 3 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
Warning message:
In cobs(x, y, constraint = c("concave"), trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
>
> c2IC <- cobs(x,y, constraint = c("inc", "concave"), trace = 3)
qbsks2():
Performing general knot selection ...
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 3 x 3 (nz = 9 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 5 x 4 (nz = 15 =^= 0.75%)
loo.design2(): -> Xeq 50 x 5 (nz = 150 =^= 0.6%)
Xieq 7 x 5 (nz = 21 =^= 0.6%)
loo.design2(): -> Xeq 50 x 6 (nz = 150 =^= 0.5%)
Xieq 9 x 6 (nz = 27 =^= 0.5%)
loo.design2(): -> Xeq 50 x 7 (nz = 150 =^= 0.43%)
Xieq 11 x 7 (nz = 33 =^= 0.43%)
Deleting unnecessary knots ...
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 5 x 4 (nz = 15 =^= 0.75%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 5 x 4 (nz = 15 =^= 0.75%)
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 3 x 3 (nz = 9 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 5 x 4 (nz = 15 =^= 0.75%)
Warning message:
In cobs(x, y, constraint = c("inc", "concave"), trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 20
> ## here, it's the same as just "i":
> all.equal(fitted(c2i), fitted(c2IC))
[1] TRUE
>
> c1 <- cobs(x,y, degree = 1, trace = 3)
qbsks2():
Performing general knot selection ...
l1.design2(): -> Xeq 50 x 2 (nz = 100 =^= 1%)
l1.design2(): -> Xeq 50 x 3 (nz = 100 =^= 0.67%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
l1.design2(): -> Xeq 50 x 6 (nz = 100 =^= 0.33%)
Deleting unnecessary knots ...
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Warning message:
In cobs(x, y, degree = 1, trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 22
> c1i <- cobs(x,y, degree = 1, constraint = c("increase"), trace = 3)
qbsks2():
Performing general knot selection ...
l1.design2(): -> Xeq 50 x 2 (nz = 100 =^= 1%)
Xieq 1 x 2 (nz = 2 =^= 1%)
l1.design2(): -> Xeq 50 x 3 (nz = 100 =^= 0.67%)
Xieq 2 x 3 (nz = 4 =^= 0.67%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 3 x 4 (nz = 6 =^= 0.5%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 4 x 5 (nz = 8 =^= 0.4%)
l1.design2(): -> Xeq 50 x 6 (nz = 100 =^= 0.33%)
Xieq 5 x 6 (nz = 10 =^= 0.33%)
Deleting unnecessary knots ...
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 3 x 4 (nz = 6 =^= 0.5%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 3 x 4 (nz = 6 =^= 0.5%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 3 x 4 (nz = 6 =^= 0.5%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 4 x 5 (nz = 8 =^= 0.4%)
Warning message:
In cobs(x, y, degree = 1, constraint = c("increase"), trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 22
> c1c <- cobs(x,y, degree = 1, constraint = c("concave"), trace = 3)
qbsks2():
Performing general knot selection ...
l1.design2(): -> Xeq 50 x 2 (nz = 100 =^= 1%)
l1.design2(): -> Xeq 50 x 3 (nz = 100 =^= 0.67%)
Xieq 1 x 3 (nz = 3 =^= 1%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 3 x 5 (nz = 9 =^= 0.6%)
l1.design2(): -> Xeq 50 x 6 (nz = 100 =^= 0.33%)
Xieq 4 x 6 (nz = 12 =^= 0.5%)
Deleting unnecessary knots ...
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 3 x 5 (nz = 9 =^= 0.6%)
Warning message:
In cobs(x, y, degree = 1, constraint = c("concave"), trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
>
> plot(c1)
> lines(predict(c1i), col="forest green")
> all.equal(fitted(c1), fitted(c1i), tol = 1e-9)# but not 1e-10
[1] TRUE
>
> ## now gives warning (not error):
> c1IC <- cobs(x,y, degree = 1, constraint = c("inc", "concave"), trace = 3)
qbsks2():
Performing general knot selection ...
l1.design2(): -> Xeq 50 x 2 (nz = 100 =^= 1%)
Xieq 1 x 2 (nz = 2 =^= 1%)
l1.design2(): -> Xeq 50 x 3 (nz = 100 =^= 0.67%)
Xieq 3 x 3 (nz = 7 =^= 0.78%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 5 x 4 (nz = 12 =^= 0.6%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 7 x 5 (nz = 17 =^= 0.49%)
l1.design2(): -> Xeq 50 x 6 (nz = 100 =^= 0.33%)
Xieq 9 x 6 (nz = 22 =^= 0.41%)
Deleting unnecessary knots ...
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 5 x 4 (nz = 12 =^= 0.6%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 5 x 4 (nz = 12 =^= 0.6%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 5 x 4 (nz = 12 =^= 0.6%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 7 x 5 (nz = 17 =^= 0.49%)
Warning messages:
1: In l1.design2(x, w, constraint, ptConstr, knots, pw, nrq = n, nl1, :
too few knots ==> nk <= 4; could not add constraint 'concave'
2: In cobs(x, y, degree = 1, constraint = c("inc", "concave"), trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
>
> cp2 <- cobs(x,y, pointwise = con, trace = 3)
qbsks2():
Performing general knot selection ...
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 2 x 3 (nz = 6 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
loo.design2(): -> Xeq 50 x 5 (nz = 150 =^= 0.6%)
Xieq 2 x 5 (nz = 6 =^= 0.6%)
loo.design2(): -> Xeq 50 x 6 (nz = 150 =^= 0.5%)
Xieq 2 x 6 (nz = 6 =^= 0.5%)
loo.design2(): -> Xeq 50 x 7 (nz = 150 =^= 0.43%)
Xieq 2 x 7 (nz = 6 =^= 0.43%)
Deleting unnecessary knots ...
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 2 x 3 (nz = 6 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 2 x 4 (nz = 6 =^= 0.75%)
Warning message:
In cobs(x, y, pointwise = con, trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
>
> ## Here, warning ".. 'ifl'.. " on *some* platforms (e.g. Windows 32bit) :
> r2i <- tryCatch.W.E( cobs(x,y, constraint = "increase", pointwise = con) )
qbsks2():
Performing general knot selection ...
Deleting unnecessary knots ...
> cp2i <- r2i$value
> ## IGNORE_RDIFF_BEGIN
> r2i$warning
<simpleWarning in cobs(x, y, constraint = "increase", pointwise = con): drqssbc2(): Not all flags are normal (== 1), ifl : 21>
> ## IGNORE_RDIFF_END
> ## when plotting it, we see that it gave a trivial constant!!
> cp2c <- cobs(x,y, constraint = "concave", pointwise = con, trace = 3)
qbsks2():
Performing general knot selection ...
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 3 x 3 (nz = 9 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 4 x 4 (nz = 12 =^= 0.75%)
loo.design2(): -> Xeq 50 x 5 (nz = 150 =^= 0.6%)
Xieq 5 x 5 (nz = 15 =^= 0.6%)
loo.design2(): -> Xeq 50 x 6 (nz = 150 =^= 0.5%)
Xieq 6 x 6 (nz = 18 =^= 0.5%)
loo.design2(): -> Xeq 50 x 7 (nz = 150 =^= 0.43%)
Xieq 7 x 7 (nz = 21 =^= 0.43%)
Deleting unnecessary knots ...
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 4 x 4 (nz = 12 =^= 0.75%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 4 x 4 (nz = 12 =^= 0.75%)
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 3 x 3 (nz = 9 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 4 x 4 (nz = 12 =^= 0.75%)
Warning message:
In cobs(x, y, constraint = "concave", pointwise = con, trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
>
> ## now gives warning (not error): but no warning on M1 mac -> IGNORE
> ## IGNORE_RDIFF_BEGIN
> cp2IC <- cobs(x,y, constraint = c("inc", "concave"), pointwise = con, trace = 3)
qbsks2():
Performing general knot selection ...
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 5 x 3 (nz = 15 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 7 x 4 (nz = 21 =^= 0.75%)
loo.design2(): -> Xeq 50 x 5 (nz = 150 =^= 0.6%)
Xieq 9 x 5 (nz = 27 =^= 0.6%)
loo.design2(): -> Xeq 50 x 6 (nz = 150 =^= 0.5%)
Xieq 11 x 6 (nz = 33 =^= 0.5%)
loo.design2(): -> Xeq 50 x 7 (nz = 150 =^= 0.43%)
Xieq 13 x 7 (nz = 39 =^= 0.43%)
Deleting unnecessary knots ...
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 7 x 4 (nz = 21 =^= 0.75%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 7 x 4 (nz = 21 =^= 0.75%)
loo.design2(): -> Xeq 50 x 3 (nz = 150 =^= 1%)
Xieq 5 x 3 (nz = 15 =^= 1%)
loo.design2(): -> Xeq 50 x 4 (nz = 150 =^= 0.75%)
Xieq 7 x 4 (nz = 21 =^= 0.75%)
Warning message:
In cobs(x, y, constraint = c("inc", "concave"), pointwise = con, :
drqssbc2(): Not all flags are normal (== 1), ifl : 20
> ## IGNORE_RDIFF_END
> cp1 <- cobs(x,y, degree = 1, pointwise = con, trace = 3)
qbsks2():
Performing general knot selection ...
l1.design2(): -> Xeq 50 x 2 (nz = 100 =^= 1%)
Xieq 2 x 2 (nz = 4 =^= 1%)
l1.design2(): -> Xeq 50 x 3 (nz = 100 =^= 0.67%)
Xieq 2 x 3 (nz = 4 =^= 0.67%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 2 x 4 (nz = 4 =^= 0.5%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 2 x 5 (nz = 4 =^= 0.4%)
l1.design2(): -> Xeq 50 x 6 (nz = 100 =^= 0.33%)
Xieq 2 x 6 (nz = 4 =^= 0.33%)
Deleting unnecessary knots ...
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 2 x 4 (nz = 4 =^= 0.5%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 2 x 4 (nz = 4 =^= 0.5%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 2 x 4 (nz = 4 =^= 0.5%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 2 x 5 (nz = 4 =^= 0.4%)
Warning message:
In cobs(x, y, degree = 1, pointwise = con, trace = 3) :
drqssbc2(): Not all flags are normal (== 1), ifl : 22
> cp1i <- cobs(x,y, degree = 1, constraint = "increase", pointwise = con, trace = 3)
qbsks2():
Performing general knot selection ...
l1.design2(): -> Xeq 50 x 2 (nz = 100 =^= 1%)
Xieq 3 x 2 (nz = 6 =^= 1%)
l1.design2(): -> Xeq 50 x 3 (nz = 100 =^= 0.67%)
Xieq 4 x 3 (nz = 8 =^= 0.67%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 5 x 4 (nz = 10 =^= 0.5%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 6 x 5 (nz = 12 =^= 0.4%)
l1.design2(): -> Xeq 50 x 6 (nz = 100 =^= 0.33%)
Xieq 7 x 6 (nz = 14 =^= 0.33%)
Deleting unnecessary knots ...
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 5 x 4 (nz = 10 =^= 0.5%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 5 x 4 (nz = 10 =^= 0.5%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 5 x 4 (nz = 10 =^= 0.5%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 6 x 5 (nz = 12 =^= 0.4%)
Warning message:
In cobs(x, y, degree = 1, constraint = "increase", pointwise = con, :
drqssbc2(): Not all flags are normal (== 1), ifl : 22
> cp1c <- cobs(x,y, degree = 1, constraint = "concave", pointwise = con, trace = 3)
qbsks2():
Performing general knot selection ...
l1.design2(): -> Xeq 50 x 2 (nz = 100 =^= 1%)
Xieq 2 x 2 (nz = 4 =^= 1%)
l1.design2(): -> Xeq 50 x 3 (nz = 100 =^= 0.67%)
Xieq 3 x 3 (nz = 7 =^= 0.78%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 4 x 4 (nz = 10 =^= 0.62%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 5 x 5 (nz = 13 =^= 0.52%)
l1.design2(): -> Xeq 50 x 6 (nz = 100 =^= 0.33%)
Xieq 6 x 6 (nz = 16 =^= 0.44%)
Deleting unnecessary knots ...
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 4 x 4 (nz = 10 =^= 0.62%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 4 x 4 (nz = 10 =^= 0.62%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 4 x 4 (nz = 10 =^= 0.62%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 5 x 5 (nz = 13 =^= 0.52%)
Warning message:
In cobs(x, y, degree = 1, constraint = "concave", pointwise = con, :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
>
> cp1IC <- cobs(x,y, degree = 1, constraint = c("inc", "concave"), pointwise = con, trace = 3)
qbsks2():
Performing general knot selection ...
l1.design2(): -> Xeq 50 x 2 (nz = 100 =^= 1%)
Xieq 3 x 2 (nz = 6 =^= 1%)
l1.design2(): -> Xeq 50 x 3 (nz = 100 =^= 0.67%)
Xieq 5 x 3 (nz = 11 =^= 0.73%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 7 x 4 (nz = 16 =^= 0.57%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 9 x 5 (nz = 21 =^= 0.47%)
l1.design2(): -> Xeq 50 x 6 (nz = 100 =^= 0.33%)
Xieq 11 x 6 (nz = 26 =^= 0.39%)
Deleting unnecessary knots ...
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 7 x 4 (nz = 16 =^= 0.57%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 7 x 4 (nz = 16 =^= 0.57%)
l1.design2(): -> Xeq 50 x 4 (nz = 100 =^= 0.5%)
Xieq 7 x 4 (nz = 16 =^= 0.57%)
l1.design2(): -> Xeq 50 x 5 (nz = 100 =^= 0.4%)
Xieq 9 x 5 (nz = 21 =^= 0.47%)
Warning messages:
1: In l1.design2(x, w, constraint, ptConstr, knots, pw, nrq = n, nl1, :
too few knots ==> nk <= 4; could not add constraint 'concave'
2: In cobs(x, y, degree = 1, constraint = c("inc", "concave"), pointwise = con, :
drqssbc2(): Not all flags are normal (== 1), ifl : 21
>
> ## Named list of all cobs() results above -- sort() collation order matters for ls() !
> (curLC <- Sys.getlocale("LC_COLLATE"))
[1] "C"
> Sys.setlocale("LC_COLLATE", "C")
[1] "C"
> cobsL <- mget(Filter(\(nm) is.cobs(.GlobalEnv[[nm]]), ls(patt="c[12p]")),
+ envir = .GlobalEnv)
> Sys.setlocale("LC_COLLATE", curLC) # reverting
[1] "C"
>
> knL <- lapply(cobsL, `[[`, "knots")
> str(knL[order(lengths(knL))])
List of 16
$ c2 : num [1:3] -1 -0.449 2
$ c2IC : num [1:3] -1 -0.449 2
$ c2c : num [1:3] -1 -0.449 2
$ c2i : num [1:3] -1 -0.449 2
$ cp2 : num [1:3] -1 -0.449 2
$ cp2IC: num [1:3] -1 -0.449 2
$ cp2c : num [1:3] -1 -0.449 2
$ cp2i : num [1:3] -1 -0.449 2
$ c1 : num [1:5] -1 -0.449 0.163 0.776 2
$ c1IC : num [1:5] -1 -0.449 0.163 0.776 2
$ c1c : num [1:5] -1 -0.449 0.163 0.776 2
$ c1i : num [1:5] -1 -0.449 0.163 0.776 2
$ cp1 : num [1:5] -1 -0.449 0.163 0.776 2
$ cp1IC: num [1:5] -1 -0.449 0.163 0.776 2
$ cp1c : num [1:5] -1 -0.449 0.163 0.776 2
$ cp1i : num [1:5] -1 -0.449 0.163 0.776 2
>
> gotRsqrs <- sapply(cobsL, Rsq)
> Rsqrs <- c(c1 = 0.95079126, c1IC = 0.92974549, c1c = 0.92974549, c1i = 0.95079126,
+ c2 = 0.94637437, c2IC = 0.91375404, c2c = 0.92505977, c2i = 0.95022829,
+ cp1 = 0.9426453, cp1IC = 0.92223149, cp1c = 0.92223149, cp1i = 0.9426453,
+ cp2 = 0.94988863, cp2IC= 0.90051964, cp2c = 0.91375409, cp2i = 0.93611487)
> ## M1 mac " = " , cp2IC= 0.91704726, " = " , cp2i = 0.94620178
> ## noLD " = " , cp2IC=-0.08244284, " = " , cp2i = 0.94636815
> ## ATLAS " = " , cp2IC= 0.91471729, " = " , cp2i = 0.94506339
> ## openBLAS " = " , cp2IC= 0.91738019, " = " , cp2i = 0.93589404
> ## MKL " = " , cp2IC= 0.91765403, " = " , cp2i = 0.94501205
> ## Intel " = " , cp2IC= 0.91765403, " = " , cp2i = 0.94501205
> ## ^^^^^^^^^^ ^^^^^^^^^^
> ## remove these two from testing, notably for the M1 Mac & noLD .. :
> ##iR2 <- if(!x86 || noLdbl) setdiff(names(cobsL), c("cp2IC", "cp2i")) else TRUE
> ## actually everywhere, because of ATLAS, openBLAS, MKL, Intel... :
> iR2 <- setdiff(names(cobsL), nR2 <- c("cp2IC", "cp2i"))
> ## IGNORE_RDIFF_BEGIN
> dput(signif(gotRsqrs, digits=8))
c(c1 = 0.95341697, c1IC = 0.95341697, c1c = 0.95341697, c1i = 0.95341697,
c2 = 0.94864721, c2IC = 0.94864721, c2c = 0.94864721, c2i = 0.94864721,
cp1 = 0.95341697, cp1IC = 0.95341697, cp1c = 0.95341697, cp1i = 0.95341697,
cp2 = 0.94864721, cp2IC = 0.94864721, cp2c = 0.94864721, cp2i = 0.94864721
)
> all.equal(Rsqrs[iR2], gotRsqrs[iR2], tolerance=0)# 2.6277e-9 (Lnx F 38); 2.6898e-9 (M1 mac)
[1] "Mean relative difference: 0.0179511"
> all.equal(Rsqrs[nR2], gotRsqrs[nR2], tolerance=0)# differ; drastically only for 'noLD'
[1] "Mean relative difference: 0.0330278"
> ## IGNORE_RDIFF_END
> stopifnot(exprs = {
+ all.equal(Rsqrs[iR2], gotRsqrs[iR2])
+ identical(c(5L, 3L, 3L, 5L,
+ 3L, 2L, 3L, 4L,
+ 5L, 3L, 3L, 5L,
+ 4L, 2L, 2L, 4L), unname(lengths(knL)))
+ })
Error: Rsqrs[iR2] and gotRsqrs[iR2] are not equal:
Mean relative difference: 0.0179511
Execution halted
- checking PDF version of manual ... [5s/7s] OK
- checking HTML version of manual ... [2s/3s] OK
- checking for non-standard things in the check directory ... OK
- DONE
Status: 1 ERROR