1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275 | Recent Revision History (For older revision history diff the code ;-))
3.04 September 19 2001
1. ci set to F if p==1 to prevent seg fault identified by Marcel Wolbers.
3.05 December 21 2001
1. "iid" case in summary.rq fixed to update call to l1fit
2. documentation and consistency checking updates to conform with R1.4.0
3.06 March 5 2002
1. Added LEGAL directory to clarify the licensing arrangement with Splus/
Insightful Corp.
3.07 March 2002
1. Expanded table.rq to use method="fn", and adapted plot.table.rq to
use the polygon strategy of recent papers for the confidence band.
2. Adapted the old version of latex.table and latex.table.rq to use
output of table.rq to make latex tables from the output array. This
eventually could be updated to fit better into the expected R version
of Frank Harrell's Hmisc. (The function latex.table is a slightly
hacked version of Frank's old latex.table function for Splus.)
3. Added argument transpose to allow the tables to be flipped so that
row dimension is quantiles rather than coefs.
4. Added error checking for tau+/-h outside (0,1) in summary.rq
5. Revised rq.fit.fn and rqfn.[rf] to simplify the calling sequence
basically to move the initialization into the R function. (This is
in preparation for a new version that will incorporate inequality constraints.)
6. Also relaxed upper bound constraints so that they could be specified
in rq.fit.fn rather than assumed to take the value one.
7. Added a (long awaited) anova function for rq to do F test like inference
for both nested models for a single quantile and tests of equality of slope
coefficients across identical models estimated at several quantiles.
These new functions are (for the moment) in the R directory as anova.R.
3.08 May 22 2002
1. Fixed a bug in anova.rqlist ndf = (p-1)*(m-1) not p*(m-1).
3.09 May 27 2002
1. Added new functions rq.fit.fnb and rq.fit.fnc and associated fortran
and ratfor code. The former is a slightly revised version of rq.fit.fn
the interior point algorithm for computing rq; it should have exactly
the same functionality as the prior version, but _might_ work somewhat
more efficiently on some problems. The new function rq.fit.fnc
is an interior point method for fitting rq problems subject to inequality
constraints on the coefficients. The algorithm is a modified version
of the interior point method used for unconstrained problems and should
be described in detail (eventually) in a paper with Pin Ng.
3.10 July 4 2002
1. Revised slightly the rq.fit.fnb function and the related ratfor/fortran
code to enable it to start at a (dual) point that doesn't satisfy the
equality constraints. And attempted to fix the many places that used T/F
rather than TRUE/FALSE in preparation for R-1.6.0 (at the suggestion of
Kurt Hornik.)
3.11 July 10 2002
1. Fixed a few more T/F's at Kurt's behest, and changed some _ to <- in
the examples. And added PACKAGE = "quantreg") to the .Fortran calls.
3.12 Nov 1, 2002.
1. fixed two generic inconsistencies Kurt found in table.R.
3.13 December 18 2002
1. Fixed bug in summary.rq when se=iid found by Xuming.
3.14 December 30 2002
1. Added a graphics example to rq.Rd using the Engel data and added the data set
3.15 January 22 2003
1. Fixed a typo in the akj.Rd file and added a reference.
3.16 February 6 2003
1. Fixed a generic method mismatch in the latex family prompted by Kurt's notice
that R CMD check quantreg produced a warning in R 1.7.0. Now seems to check cleanly
in the devel version of 1.7.0 installed today.
3.17 February 17 2003
1. Removed the last of the _ assignments in the example files.
3.18 March 4 2003
1. Fixed a documentation bug in rq.fit.br the entry for alpha was changed from:
alpha: the nominal coverage probability for the confidence intervals
to
alpha: the nominal noncoverage probability for the confidence intervals
3.19 March 25 2003
1. Added src/Makevars file in accordance with Brian's email request, see R email folder.
3.20 April 27 2003
1. Found a bug in the fn family of fortran/ratfor functions. When the initial
least squares start produced a residual which was a hard zero, then the
initial value of Q had a NaN value and this caused the function to return
with all NaN coef values. This was altered to make z and w = eps when
this happens.
2. When interp=FALSE in rq.fit.br the tcrit flag was broken.
3. added names to coef return when CI= FALSE in rq.fit.br
3.30 August 13 2003
1. added several bootstrapping methods to summary.rq including the MCMB
approach of He and Hu based on code by Xuming He and Maria Kocherginsky.
2. added n choose m subsampling for the xy pair version of the bootstrap.
3.31 August 25 2003
1. fixed a bug in anova.rqlist that messed up the checking for an intercept
found by Juan de la Garza.
3.33 January 09 2004
1. Fixed a bug in ranks() found by Brian Cade involving the tau score function.
3.35 March 09 2004
1. Changed the default behavior of rq to produce only the point estimates and
residuals when 0 < tau < 1, instead of automatically producing the rank inversion
confidence interval table. The latter is now available from summary.rq by
specifying se="rank". (This is actually the default option in summary.rq when
the sample size is less than 1001.
2. Altered anova.rq slightly to accomodate its use for two sample rank tests --
this task was simplified somewhat by (1.).
3.36 June 9, 2004
1. Scoping problem in summary.rq made data invisible when formula
variables were specified using data=blot in rq(). This entailed a
somewhat extensive updating of rq and summary.rq in accordance with
the "Notes on model-fitting" white paper on the R developer page.
Thanks for that! to the anon author. Now rather than passing x,y
a model object is passed indicating how the model should be
reconstructed. As a byproduct, the lowest level fitting routines
no longer return x,y, thus saving some memory.
2. added a error check to boot.rq to prevent users from calling with
tau outside (0,1). Calls with tau = 1 produced a rather nasty memory
overwrite as experienced by Alexis Diamond, debugging required some interesting
adventures with gc().
3. Major revision of the code to do inference on the rq process based
on the Khmaladze approach. See khmaladze.test for further details.
In the process discovered a minor bug the resulted in problem with the
Joint test statistic. (Two missing commas!)
3.50 July 17, 2004
1. The function table.rq was made defunct, replaced by the more
direct ability to specify multiple taus in rq(). When a vector of
taus is specified, rq() returns an object of class rqs, and
summary.rqs produces output for each tau. There are plot and latex
methods for objects of class summary.rqs.
2. The Solaris f95 compiler choked on the & in column 1 of akj.f, so
this has been moved to col 6.
3.60 September 20, 2004
1. The choice of bandwidth was corrected for the "ker" method in
summary.rq() to account for the scale of the residual vector. Thanks
to Victor Chernozhukov for pointing this out!
2. On a 64bit gentoo linux system the statement
data one/1.d0/
set one = equal to zero...so I have systematically changed all data
statements to parameter statements. This seems to be a general problem
that was created by gcc 3.4. On the updating note that several of the
.f files were preprocessed by a new ratfor processor. See the README
file in the src/ratfor directory for further details. This bug in g77
was reported to the gnu folks and a patch was forthcoming with about
48 hours. If only American foreign policy could respond so efficiently
to their snafus.
3.70 October 1, 2004
1. The nprq and nlrq packages for nonparametric and nonlinear QR
were folded into quantreg. The revision file for nlrq is reproduced
below:
This is a package for estimating nonlinear in parameters quantile regression models.
The algorithm is originally based on an Splus implementation of Koenker and
Park (1996, J. Econometrics). The interface to model specification a la nls()
was very kindly provided by Philippe Grosjean. It was originally submitted to
CRAN in May, 2001.
Version 0.1-4 (May, 2004)
` o Added method argument to nlrq() to be passed to optim() at the suggestion of
James Rogers (Pfizer)
See the documentation files for rqss() and friends for further details on the
nonparametric functionality. There is a strong dependence of the rqss fitting
functions on the SparseM package, and some use of tripack, and akima packages
as well. Finally, the demo for the triogram fitting included in the demo
directory wants the rgl package.
2. Brian Cade sent an example for forensic exam, which revealed that
the call to model.weights failed to work properly in summary.rq
This is now fixed using model.weights(object$model).
3.71 November 18, 2004
1. The translation of boot.r and penalty.r were updated using the SEM
ratfor compiler so that their continuation characters appeared in col6
not col1 -- to comply with our local switch to Sun compilers on ysidro
and with the other code in the package. (Isn't fortran wonderful?)
Now that we are back to gcc this isn't needed here, but might save some
one else some consternation.
3.72 November 27, 2004
1. Reference to nls package was removed (thanks Kurt) since it has
now been merged into stats. Also upped Depends to R >= 1.9.0.
3.73 December 1, 2004
1. Fixed a small bug in summary.rqs which had appended olscoefs for
no apparent reason, and this caused a printing error.
2. Fixed large bug in anova.rqlist in which chi-squared statistic
was divided by numerator degrees of freedom (ndf) when this had already
been done in rq.test.rank, and modified the way that the score function
specification was passed.
3. Also fixed a printing glitch in the anova.rq procedure by adding
an explicit print method for such objects.
3.74 February 24, 2005
1. Fixed bug reported by Steve Portnoy in summary.rq. The se="iid"
option was broken after the switch from a matrix valued coef object
to a vector one.
3.75 March 11, 2005
1. Fixed bug reported by Jose Machado in predict.qss2. Further work
is needed to integrate these methods for qss2 and qss1 objects into
a upper level predict.rqss function, but this will have to wait.
3.76 March 17, 2005
1. Jan deLeeuw reported that the warnings for rqbr.f had turned into
errors in g77 4.0 -- some hand editing of the ratfor translation fixed
this, but it is depressing to think that there isn't now an automatic
way to get from the ratfor. See the README file in the ratfor directory
for gory details.
3.77 April 28, 2005
1. Cleaned up a few unescaped % signs in the .Rd files at the request of Kurt.
3.78 May 2, 2005
1. Finally added back in the vignette just in time for the first copies of QR
from CUP.
3.79 May 2, 2005
1. Fixed 3 problems identified by Gabor Grothendieck having to do with rq
interaction with fitted() and residuals() and na.action.
3.80 May 11, 2005
1. Added predict method for rq and a subset argument.
3.81 May 14, 2005
1. Added a flag to enable anova.rq to allow computation of separate tests on each of the
slope parameters for equality across quantiles.
2. Fixed reference to Engel (1857) in the vignette.
3.82 May 15, 2005
1. Added a formula.rq function that seems to be necessary to make formula updating
work.
3.82 May 20, 2005
1. Modified initial bandwidth in akj() to insure default starting value, this
had produced a rather mysterious bug that was only apparent on a few machines
due to (essentially) trying to check whether double(0) <= 0.
2. Modified predict.qss1 to fix a problem with non-unique x observations.
This needs further work, ideally a predict.rqss function that would dispatch
pieces of the prediction problem to the right lower level prediction function.
3.83 Nov 23 2005
1. Added a "cen" method to rq that fits the Powell censored regression
model using the Fitzenberger algorithm. This is very beta for the moment
and needs to have some inference methods written, before it is terribly
useful. A related project will add Portnoy's CRQ method as well.
2. Fixed a bug in the predict.qss1 function that made it invisible.
3. Fixed several bugs in the rank testing with anova.rqlist in response
to a report from Brian Cade. In particular, to enable rank tests with
weighted QR.
3.84 Nov 28, 2005
1. One (last?) bug fix for rq.test.rank which for weighted data introduced
a faulty intercept. Again, thanks to Brian Cade for the report.
2. Changed tau checking to not allow tau either 0 or 1 in an effort to
discourage these values, which seems to have dire consequences on some
machines, cf email of Andrew Clausen regarding segfault on Debian.
3. Added summary.fcrq and summary.fcrqs to provide some basic inference
on the Powell censored regression estimator.
3.85 Feb 11, 2006
1. Revised predict method for rqss objects motivated by an inquiry by
Denis Chabot.
2. Added a note to explain that the default se method in summary.rq was
sample size dependent.
3.86 March 16, 2006
1. Revised rq to allow taus to be 0 or 1 when there multiple taus.
3.89 March 31, 2006
1. Changed summary.rq so that call to rq.fit.fn is to rq.fit.fnb based
on an example provided by Nantachai Kantanantha. The former called
produced NaN's for the coef vector, while the latter agreed with rq.fit.br.
This deserves some more attention at a later point.
2. Added function kuantile which implements the O(n) algorithm of Floyd
and Rivest for computing univariate quantiles.
3.90 May 17 2006
1. Major revision of the rqProcess and KhmaladzeTest functions.
2006-08-14 Martin Maechler <maechler@stat.math.ethz.ch>
* tests/rq.R (stopifnot): regression tests added.
* man/plot.Rd: improve; notably plot.qss2() arguments
* man/predict.rqss.Rd: no rm(.) in example; improve
2006-08-12 Martin Maechler <maechler@stat.math.ethz.ch>
* R/quantreg.R (akj): 'iker2' is never used; add a check for
length(p) == length(x) [vignette did not fulfill this and
gave spuriously wrong results because of initialize memory
in .Fortran("arj" ...) !
* inst/doc/rq.Rnw: fix the akj() weights
* man/akj.Rd: no 'iker2'; cleanup
2006-08-11 Martin Maechler <maechler@stat.math.ethz.ch>
* tests/run-demos.R: one simple test suite ..
* demo/cobar.R: make sure this also works when 'rgl' does not
* demo/Frank.R: clean up a bit
* demo/engel1.R: nicer; + legend
* demo/engel2.R: is incomplete => if(FALSE) { .. } for the moment
FIXME: use vignette !
* man/engel.Rd: added somewhat interesting example.
* src/chlfct.c (chlfct): eliminate goto; correct timing also when
error; more comments (timewd, etc)
* R/sfn.R (rq.fit.sfn, rq.fit.sfnc): only keep what's needed from
.Fortran(). Save one (sparse) matrix multiplication
2006-08-09 Martin Maechler <maechler@stat.math.ethz.ch>
* src/srqfn.c: new from src/srqfn.f ...
* src/srqfnc.c: new from src/srqfnc.f ...
2006-08-05 Martin Maechler <maechler@stat.math.ethz.ch>
* src/cholesky.c: new from src/cholesky.f which must be renamed
3.91 Sept 11, 2006
1. Removed Makevars from src directory which seemed to be causing
some difficulties with multiple definitions of symbols for gfortran.
4.00 Sept 11, 2006
1. Implements some suggested fixes by Martin Maechler. See detailed
entries of Martin above.
4.02 Oct 21, 2006
1. Fixed problem with olscoef plotting in plot.summary.rqs.
2. Changed variable names in the engel data and examples to avoid
long-standing problems of masking x,y names. Thanks to Marc Schwartz
for pointing this out.
4.03 Nov 18, 2006
1. Fixed memory problem with rq.fit.fnc when n2 > n1, the vector u was
being used as a scratch array but had insufficient space.
2. Fixed rqProcess bug with "location-scale" option noted by Alvaro Novo.
4.04 Dec 19, 2006
1. Removed [.terms from rqss.R at the advice of BDR.
2. Added a summary.nlrq function to bootstrap se's. This is highly
experimental at this stage.
4.04 Jan 15, 2007
1. Modified penalty.r so that it checks to ensure that all triogram quadralaterals
have the same orientation, this was a longstanding bug that prevented that convexity
and concavity constraints from properly working. Still needs further checking....
2. Some mostly cosmetic changes were made in rq1.f in the course of debugging an
apparent problem in boot.rq.xy which eventually turned out to be caused by a rank
deficient X matrix. Some attempt was made to improve the reporting of this, but
I'm afraid there are some inherent problems in the BR code that makes it difficult
to recognize this sort of problem.
3. Added a residual vector to the object returned from rqss.fit to conform with
general R practice and also because it was needed to do some exploration of the
number of exactly fit points in an example of Xuming He.
4. Added a demo called cpoint.R that illustrates how rqss can be used for a
simple broken stick piecewise linear median regression problem.
4.06 Feb 1, 2007
1. Fixed legend ordering problem in rq.fit.fcen.Rd.
2. Fixed a call to as.matrix.csr(diag(n)) in rqss to avoid creating a dense matrix.
3. Added summary.rqss logLik.rqss and AIC.rqss functions
4. Fixed etime bug in Cholesky.c according to a patch kindly
provided by Simon Urbanek.
4.07 April 17, 2007
1. Added two new methods for fitting: rq.fit.lasso and rq.fit.scad.
2. Added ... to a call to plot from plot.summary.rqs suggested by Tyler Smith.
3. Added the Peirce dataset and my attempt to reproduce the Wilson and Hilferty
analysis of it.
4.08 July 1, 2007
1. Modified predict.rqs and added predict.rq.process to produce stepfun objects.
2. Added a function "rearrange" to do rearrangement of stepfun objects a la
Chernozhukov, Fernandez-Val and Galichon.
4.09 August 7, 2007
1. Modified plot.summary.rqs according to a proposal by Achim Zeileis to
improve default mfrow choice and tone down the colors to grey scale for better
plotting. Also added a plot.rqs function
2. Changed predict.rqs and predict.rq.process so that the stepfun version
is an option and the default is still returning a matrix.
4.10 September 12, 2007
1. Modified rearrange according to suggestions by Ivan Fernandez-Val and
Victor Chernozhukov to acommodate right and left continuous stepfuns.
2. Cleaned up some Rd files that improperly documented methods.
4.11 Jan 15, 2008
1. Fixed summary.nlrq problem with coef/coefficient duplication
2. Fixed rqss problem with models without any qss terms
Thanks to Hiroyuki Kawakatsu for pointing this out.
3. Fixed summary.nlrq to pass ... to boot.rq and updated man file
4. Fixed typo in demo/hinged.R pointed out by Brian Ripley
4.16 Jan 15 2008
1. Revised the formula handling for the Fitzenberger/Powell estimator and
replaced the old rq1 fortran routine with an even more stripped down version
from the crq package. (This seems to have eliminated a memory leak problem.)
This is now called via crq() not rq().
2. Added the Peng-Huang estimator as a option to crq(). This is preliminary
step toward also folding in the crq package.
3. Fixed problem with crq FP method which required a new (bastardized) version
of Surv called FSurv to accommodate fixed censoring times.
4. Incorporated crq package into quantreg and rationalized the interface to
all crq functionality. Insert of revision history of crq:
Version 0.3 Oct 2007
1. Fixed a bug in the boot.crq which led to double weighting in the bootstrap.
Version 0.4 Nov 2007
1. Modified summary.crq (at the suggestion of S. Portnoy) to:
a.) make .95 coverage the default rather than .90
b.) center intervals at betahat(tau) rather than median of bootstraps
5. Cleaned up the boot.whatever code to call rq1 in a consistent way as a prelude
to investigating other bs methosd for crq.
6. Replaced Fitzenberger's qrcens fortran subroutine with a new version that
was written from scratch along the lines of the pure R implementation of Barrodale
and Roberts.
7. Reworked the naming conventions for the crq methods. Note that FSurv is
now Curv.
8. Added an option to the Powell method to compute the full global optimum
by pivoting through all the possible h's. This entailed a new function combos()
that produces an ordered version of combn() output.
4.17 Feb 22 2008
1. boot.r had a wayward comma,
2. added start options for powell method.
3. Thanks to Robert McGehee for a report that g77 on his fedora system didn't
like the ordering of the integer declarations in my fortran. Integers used
as variable dimensions should be declared integer BEFORE they are used as
dimensions in other arrays. (Picky, picky. Sometimes I wonder whether this
is a conspiracy by the C-conspiracy to stamp out fortran altogether.)
4.18 Feb 23 2008
1. Revised the rho, logLik and AIC functionality of rq(), so it is
easier to extract these values.
2. Revised predict.rqss and friends to fix a problem with variable names
as suggested by Kyle Jennings. Further work is needed: print methods for
rqss objects would be nice.
3. Changes to predict.rqs as suggested by Achim Zeileis.
4.19 Mar 31 2008
1. Added extractAIC method for rq objects.
2. Added singularity check for rq.fit.br since Gabor G pointed out that
the checking otherwise isn't really reliable and when it fails, R may crash.
(Still open question: should I provide some automagic aliasing for such situations?)
4.20 July 17, 2008
1. Added a reference for rq.fit.scad.
2. Added crq.pdf as a pseudo-vignette, pseudo because it isn't sweaved.
3 Fixed a bug in rq.fit.lasso for tau != .5. And for rq.fit.scad.
4. Fixed bug in plot.summary.rqs and plot.rqs when OLS=FALSE. Thanks to Jim
Kossin UW-Madison for reporting this.
5. Modified both rq.fit.lasso and rq.fit.scad to allow a vector of lambdas to
be passed thereby allowing users to fine tune the style of l1 shrinkage. In
particular, to exempt some covariate effects from shrinkage by setting some
elements of lambda = 0. In prior versions only the intercept was exempt and
all slopes were shrunken equally.
6. Removed the function rq.fit.fn and made all invocations of method "fn"
fitting call rqfnb version of the fortran algorithm. This was precepitated
by finding that the earlier version of this alg had trouble with problems in
which there were observations (x,y) = (0,0). Such observations shouldn't
affect the solution, obviously, but on yzzy (my ppc mac desktop) they weren't
so innocuous. This eventually was attributed to the fact that the initial
setting of the dual variables was perhaps not feasible. The "fnb" version of
the algorithm relaxed this requirement and seems to be generally more robust.
7. Modified the class structure for lassorq(s) scadrq(s), etc. objects so that they
inherit from rq, rqs objects and therefore can use AIC evaluation for those
methods. Note that there is a edfThresh option for AIC to determine how to
evaluate the effective degrees of freedom when using the lasso and scad
penalty methods.
4.22 Spetember 17 2008
1. Fixed bug in summary.crq which for the Bilias, Chen Ying bootstrap of the
Powell estimator produced the wrong sample selection. Thanks to Ajay Shah
for pointing out the problem.
2. Fixed bug in rq.test.rank which computed the denominator degrees of
freedom incorrectly. (Thanks to Xuming He for pointing this out.)
3. Added a weighted bootstrap option to boot.rq a la Bose and Chatterjee
using unit exponential weights. (This is a prelude to implementing another
option for anova.rq using the approach of Chen, Ying, Zhang and Zhao
(Biometrika, 2008).
4. Made a distinct version of rq1.f called rq0.f for use in the
bootstrapping routines. So now rq1.f is used exclusively by crq, while
rq0.f is used exclusively by boot.rq.:
5. Implemented the test proposed by Chen, Ying, Zhang and Zhao (2008) based
on drop in the value of the objective function. (This uses the same
resampling scheme as the Bose and Chatterjee GBS to compute a reference distn
for the test the statistic.
4.23 October 13 2008
1. added the line:
fstcol = 1;
in cholesky.c which seemed to have been lost in MM's conversion to C.
Thanks to to Kurt for pointing this out. (rather scary -- what?)
2. A major extension of the function predict.rq was made to provide confidence
intervals for the predictions. This is now possible using a variety of methods,
including percentile bootstrap and Portnoy and Zhou's "direct method".
These methods can be used to construct prediction intervals as well.
A more systematic study to compare the efficacy of these methods would be
useful. A demo file has also been added to illustrate the useage of these
predict methods: try demo(predemo). Thanks to Ivan Mizera for several
contributions to this extension.
4.24 October 20 2008
1. Added an argument to nlrq.control called InitialStepSize that allows the
user to control the starting value used by optim to compute a step size given
a Meketon step. For some work on the AR(1) Clayton copula model, it seems
that the only prudent value is 0. Default value remains 1.
2. Changed rq.fit.lasso to fix a bug when p=2, as suggested by Gal
Goldshtein, and in rq.fit.scad.
3. Fixed a bug in predict.rq that involved factors. Fix required adding an
xlevels object to the fitted rq object as in lm. Thanks to Sandy Weisberg for
pointing out the bug.
4.25 January 6, 2009
1. Fixed buglet in latex.table diagnosed by Gert van Valkenhoef.
2. Fixed several .Rd files formatting identified by the new Rdversion 2
parser.
4.26 February 2, 2009
1. fixed rq.fit.pfn buglet for cases in which m > n.
2. Fixed Qhat at 0 and 1 in the sol array as suggested by Steve Portnoy.
3. Fixed logLik.rqs to have the right df attribute when pen = 0. Thanks
to Brian Cade for pointing out this omission.
4. Fixed some issues with plot.rqss: added an "add" option so that one
can either initiate a new plot, or add to an old plot, added a par(ask =TRUE)
when there are multiple qss terms. Added title and better axis labels using
names of the qss variables.
4.28 April 12, 2009
1. Fixed (I hope) an environmental issue in rqss: when data was specified in
rqss, the eval of the qss formulas failed to find the lambda values. This
seems to be resolved by defining pf <- parent.frame(), and then adding enclos
= pf to the eval call. But at the suggestion of Duncan Murdoch and Peter
Dalgaard I'm using instead pf <- enviroment(formula). Thanks to both for
their help with this.
2. Added Boscovich data to the data directory with an example in the
documentation file (Bosco.Rd).
4.30 May 10, 2009
1. Motivated by some trouble with rqss, I've reverted to the .f version of
cholesky.c originally used before MM provided the .c version. This has
somewhat reduced the frequency of occurance of the dreaded ierr=17.
2. rq.test.ranks and friends have been modified to allow trimmed Wilcoxon
score functions.
3. In .First.Lib cat was replaced by packageStartMessage() at the suggestion
of BDR.
4.34 June 3 2009
1. Added option in rqss to use lasso penalization for the linear covariate
effects. See also the file rqsslasso.R in the demo directory.
2. Deleted the component tausplit from the output of crq.fit.por which seemed
to do nothing useful, and had a potentially dangerous sideeffect.
3. Added coef names for rqss objects
4. Fixed rqss so that when no qss terms appear the fitting still by rq.fit.sfn
and weighting can be handled.
4.35 June 27 2009
1. Some fixups of rqss to handle models without any qss terms.
2. Added a function dither() to facilitate dithering.
3. Portnoy's bug fix to crq.fit.por to handle cases without censoring.
4. Minor changes to plot.rqss to handle ask parameter.
4.36 July 10 2009
1. Fixed bug in rq() that prevented contrasts from being properly propagated
forward to summary.rqs when there were multiple taus. Thanks (yet again!)
to Brian Cade for the bug report.
2. Added two new functions in tools.R FAQ and ChangeLog to facilitate looking
at those two files for packages that have such files in the package inst
directory.
3. A very primative print method for rqss objects was added, summary.rqss
needs some adaptation to provide better info for lasso fitting, etc and then
a better print method could be written.
4.37 July 24 2009
1. Fixed computation of residual and fitted.value components in rq.wfit,
thanks to Václav Varva#ovský for point this out.
2. At the suggestion of Steve Portnoy the default grid spacing in crq.fit.por
was modified to reduce the number of grid points.
4.38 August 3 2009
1. Removed a comma in an .Rd file, at the prodding of Kurt.
2. Fixed a bug in summary.rqss which led to a miscalculation of the edf
in cases when there was a lasso effect. This involved passed the number
of rows of the lasso constraint matrix forward as part of the fit object.
4.42 August 24, 2009
1. Added a demo for the Melbourne temperature data.
2. Made some extensive changes in plot.rqss and summary.rqss to implement
confidence bands and summary coef tables for rqss.
3. Added a faux vignette about rqss fitting and a function to read such
objects.
4. Minor mod of coef.crq to deal with a zero index problem identified by
Portnoy.
5. An experimental option to add uniform confidence bands for 1d rqss
components based on Hotelling tubes has been added. Further work is needed
to evaluate the performance of these bands, which will be eventually added
to the rqss vignette.
6. Fixed yet another missing drop = FALSE in summary.crq.
7. Added an iid argument to rq.test.rank, and the option (when iid = FALSE)
to do the nid version of the rank test, only when the score function is the
special tau specific one. (I don't think that nid makes much sense
otherwise.)
8. rq.fit.br modified so that it optionally returns dual vector, and
rq.test.rank modified to use this vector when rank test uses tau-score
function. This avoids computing the whole rq process in such cases.
9. Added a reference to the Peirce.Rd file.
4.43 October 17 2009
1. Fix bug in predict.rq so rdf were found, thanks to Richard Berk for
report.
2. Added set.seed(1989) for Frank demo, after Kurt reported that it choked
on a random realization.
4.44 October 17 2009
1. latex.table was producing two captions... why didn't I see this earlier?
2. pwy bootstrap method was badly centered for prediction intervals, this was
eventually traced to a mistaken inequality in boot.rq. Thanks to Richard Berk
(Wharton) for pointing out the original anomaly.
4.45 January 12 2010
1. Added 3 score functions to "ranks" for the work on the Jana Festschrift
paper.
2. Added shading option for plot.rqss confidence bands. Color of these
bands is hard coded to grey scale and this probably should be fixed.
3. Modified plot.rqss to (optionally) plot and return both pointwise and
uniform bands.
4. Added titles option for plot.rqss bands.
5. In plot.rqss the eigenvalue decomposition once in a while produced
negative eigenvalues which then caused havoc. I replaced E$values with
pmin(0,E$values).
4.46 March 15 2010
1. Added select argument to plot.rqss to plot subset of qss objects.
2. Commented out a line in latex.table at the suggestion of David Epstein,
Warwick.
4.47 April 21 2010
1. Updated mcmb.c to fix a problem with the 64bit version, thanks to Garth
Tarr for pointing this out.
2. Updated the references for rearrange manpage and fixed an ambiguity in the
summary.rq manpage.
3. Fixed a bug in predict.rqss having to do with name wrangling: when qss
terms had a variable name specified for lambda, this got carried along for the
ride and caused problems with name matching for newdata. Fix entailed
adapting the mcgv interpret.gam to do something similar for rqss.
Thanks to Ivan Mizera for pointing out the original problem.
4.48 May 21 2010
1. Added error message to alert users that summary.rq doesn't know how to
deal with lasso'd fitting. Thanks to Richard Berk (U. Penn) for pointed this out.
2. Fixed summary.rqss problem that made models without qss terms choke.
3. Changed predict.rqss so that confidence intervals for the prediction can
be returned.
4. Modified the fix in 4.47.3 to avoid using interpret.rqss. This avoids
calling qss twice for each fit, and returns a fake.formula directly from
rqss that can then be used by predict.rqss. Involved some semi-fancy
footwork to deal with the formula wrangling, but seems cleaner than the
prior approach (which had the unfortunate additional flaw that it didn't
work as intended).
5. Fixed a bug in predict.qss1 by adding the argument include.lowest = TRUE
in the call to cut. This (seems to) allow newdata values equal to the minimum
of those used in the fitting. Prior version produced NAs in such
circumstances and generated a god-awful error message when new() was called
to construct the design matrix for the predicted observations. Thanks again
to Richard Berk for the example that led to this fix.
4.50 May 26 2010
1. Added fitted() and resid() methods for rqss objects.
2. Fixed bug in powell.f -- failure to declare ddot double precision which
(curiously) caused example(crq) to produce something insane in 64bit R, even
though in 32bit R it was ok.
3. Updated some references in rq.fit.sfn.Rd as suggested by Ott Toomet.
4.51 Sept 25 2010
1. Fixed the vignette fiasco thanks to help from Bob Obenchain. See inst/doc
for the dummy Rnw files to enable one to make non-Sweave vignettes.
2. Fixed bug in predict.rq.process pointed out by Stephen Wegland (Mayo).
4.52 Sept 28 2010
1. Revert to my old Makefile processing of rq.tex, after Kurt reported
infinite loop in the texi2pdf step in Vienna.
4.53 Sept 28 2010
1. Changed run-tests.R in tests directory to conform to a suggestion of BDR
4.54
1. Added sentence to summary.rq.Rd to make it easier to find how to change
coverage probability for rank based confidence intervals. Thanks to Jochem
Kail for this suggestion.
2. Modified definition of S in summary.crq to fix a problem with bootstrap inference.
Thanks to Xianghua Luo for this suggestion.
3. Fixed vignette call to plot.summary.rqs... thanks to Jan Henckens.
4. Fixed call to latex.table to pass optional ... args. Thanks to Jan
Henckens, again.
5. Fixed rqss problem to pass optional space allocation arguments. Thanks
to Jungmo Yoon for noticing this problem.
4.55
1. Fixed bug in rq.wfit to allow fitted values to be computed when tau = -1.
Thanks to Brian Cade for this report.
2. Fixed bug in rqss that prevented models without qss terms to be estimated.
4.56
1. Cleanup and compression of vignettes for Kurt.
4.57
1. Slight change in summary.rq to clarify default behavior
2. Compactification of rqss0.pdf
4.58
1. bug fix in summary.crq for cases with only one tau.
4.59
1. bug fix in predict.rqss for cases without any qss terms.
4.60
1. bug fix in rqss lasso rhs. Thanks to Stefan Bache for reporting this.
This also affects rq.fit.panel as posted on my webpages, which as been
modified accordingly.
4.61
1. Moved non-R data files to extdata directory and fixed some problems with the
vignettes, as requested by Kurt.
4.64
1. Added an option to predict.rqs and predict.rq.process to allow one
to predict conditional dfs rather than just conditional qfs.
4.65
1. rqss fitting now passes a list called control that contains various
parameter for rq.fit.sfn(c) functions.
4.66
1. rqss now allows partially linear part of X to be made sparsely thanks to
maodel.Matrix from the Matrix package.
2. Typo introduced by the 4.65 change that caused cobs to seg.fault
corrected.
4.68
1. Added demo for the Mammal plot.
2. Added warning for specifying a vector of taus in rqss indicating that only
the first element will be used. (Thanks to Hadley Wickham for pointing out
that this used to generate a rather mysterious error message.)
4.69
1. Added an experimental new function dynrq() modeled after dynlm() by Achim
Zeileis, which is intended to make formula specification for dynamic models
involving time series data simpler and more natural.
4.70
1. Added NAMESPACE file kindly provided by BDR.
Now that there is a namespace it is somewhat more difficult to debug using
old fashioned work habits. A trick suggested by Martin Maechler is the
following:
example(source) # needed to define function sourceDir
sourceDir("<quantreghomedir>/quantreg/R")
This has the effect of putting all of the R functions in the global workspace
where they can be edited and changed at will.
4.71
1. Kurt's new gfortran found an error in the crq.f code: det in the call to
dgemi wasn't dimensioned, but it was supposed to be a 2-vector. Now fixed.
2. Added a new wild bootstrap option to boot.rq based on Xuming's forthcoming
Biometrika paper. For the moment only the two point weight distribution is
implemented, but stay tuned for a smoother variant.
4.72
1. Added a demo to illustrate automatic lambda selection for univariate rqss
fitting. This is based on a test problem in a recent paper by Oh and Nychka.
2. Changed the default bootstrap method in boot.crq from xy-pair to Bose,
at the urging of Steve Portnoy.
4.73
1. Changed the default score function in anova.rqlist to score = "tau" as
suggested by a question from Mo Dang-Arnoux (Grenoble).
4.74
1. Altered taus in rq() so that any tau == 0 or tau == 1 are replaced by
values strictly in (0,1). As noted by Christophe Rolphe under some exotic
circumstances this produced crashes from rq.fit.br.
2. Clarified the documentation for summary.rq to indicated that when se ==
"boot" you can't get separate Hinv and J components only the full sandwich cov
component.
3. Fixed the license designation to explicitly reflect the ambiguity of the
status of the cholesky.f code.
4.75
1. Fixed the documentation for qss where convexity was imposed by "V" not
"U".
4.77
1. Removed the LICENSE file that had described some uncertainties with respect to
the license status of the code in src/cholesky.f. These uncertainties have
now been resolved by the original authors, Esmond Ng and Barry Peyton,
declaring their code to be open source, and thus the quantreg package can now
be considered fully GPL.
2. Commented out some vestigial write and printf calls in mcmb.c and cholesky.f.
4.78
1. Fixed a bug in summary.crq which failed to check whether censoring in the
Powell method was "right" or "left" before calling boot.rq.
4.79
1. Added logLik and AIC functions for the nlrq class.
4.80
1. added optional se argument to anova.rqlist so one can specify "ker"
standard errors.
4.81
1. modified crq to allow left censoring for both Portnoy and Peng-Huang
methods.
2. added tsp to the object returned by crq.fit.por to facilitate conputing
the weights used by the Portnoy method. Eventually, there should be some
further documentation of this.
4.83
1. modified rq1.f to fix a dimension problem for the workspace, and added
a new argument to control the maximum number of simplex iterations. This
was needed to fix problems encountering severe degeneracy, which induced
the possibility of an (essentially?) infinite loop. A fixed 100000 limit
is currently implemented, with a warning when exceeded that users might
want to consider dithering the response variable.
2. added a few lines in summary.crq and print.summary.crq to provide the
number of NA replications in the bootstrap simulation for each of the
requested taus.
3. Modified the documentation files to mention the above changes and also
to mention that the grid for the Portnoy method is equally spaced.
4.84
1. Removed wayward files in ratfor directory
2. replaced call to dqrls in rq.fit.br by call to R qr function.
4.85
1. Changed example for uis data in crq.Rd to Peng from Portnoy.
4.86
1. Changed crq.f so that it stopped the tau iteration whenever IFT = 9
"simplex iteration limit exceeded" occurs.
4.90
1. Reverted to earlier code for rq1.f and crq.f pending resolution of
strange disparity between results for R CMD check for osx and windoz.
in versions 4.85-8 demo(KMvCRQ) produced errors on windows that were
irreproducible on osx.
4.91
1. Tried to clarify documentation for summary.rqs concerning changes
in the level of the confidence intervals when the rank method is being used.
2. Increased the default number of iterations in rq.fit.fnc.
4.91
1. Added a drop = FALSE in nas definition of summary.crq to preserve the
matrix structure there.
4.93
1. Fixed several bugs in the crq code for left censored data. Thanks to
Brian Cade as always for bringing this to my attention.
4.94
1. Moved UIS crq example from man directory to demos to save check time as
advised by Uwe Ligges.
4.95
1. Bug in summary.crq when ctype == "left" and some specified taus weren't
estimable -- upper quantiles from bootstrap were deleted, but it was the lower
ones that should have been.
2. BIG in crq.f was changed from 1.d37 to 1.d17 which "fixes" a segfault
condition in an example of Brian Cade's, but I have no frigging idea why.
4.96
For left censoring the idea of reversing the order of the taus in the solution
array turned out to cause all sorts of havoc in my interpolation scheme for
coef.crq.... so I've reverted to the usual ordering.
4.97
1. Yet another modification of coef.crq. This time I've decided to eliminate the
midpoint interpolation scheme that was originally motivated by the pivoting
method for the Portnoy crq estimator, and go back to conventional linear
interpolation. This is more consistent with the default grid methods that are
now being used and was endorsed at coffee by Steve. This change was again
stimulated by Brian Cade's careful checking of anomalies in crq output.
2. Added drop = FALSE for the coef object returned from crq.fit.[por,pen],
to hangle the case in which there is only one column of the solution, which
hopefully is a very rare occurrence.
3. Changed Curv to return a type object, to fix a bug introduced into the
Powell methods when I added ctype for left censoring for Portnoy and
PengHuang. Thanks to Mike Smithson for reporting this.
4.98
1. Fixed a plethora of places that the new dimension checking for fortran
arrays identified issues.
5.00
1. Fixed several places with excessive line lengths in the .Rd files.
2. Purged the econometrica.bst bib style, as requested by Brian R.
5.04
1. Fixed logLik.nlrq bug as noted by Erin Graham.
2. Changed the default bootstrap method for crq objects to the delete-d
jackknife method proposed recently by Portnoy. This seems to work better
especially when, as is ofter the case the process is "defective."
3. Fixed predict.crq so it would return fitted values when newdata was
omitted, bug report by Carles Forné Izquierdo.
5.05
1. BDR suggested a fix to dynrq to avoid a ":::" usage. This led to
some adventures in environments that eventually led to inclusion of a model
component in the first element of dynrqs objects so that plotting of
summary.dynrqs objects could find the appropriate design matrix.
2. And in addition the Description file was augmented with a greatly
expanded authors component -- which should have been done years ago
but was greatly facilitated by the (relatively) new person() function.
5.07
1. Bug fix in predict.rq: when mofn < n and percentile method the
interval needed to be recentered and rescaled, not enough to just
rescale B matrix.
5.08
1. Incorporated my qrisk package for portfolio selection into quantreg.
This includes the function rq.fit.hogg() that does what Zou and Yuan
call composite quantile regression, or more accurately a generalized
version of this.
5.13
1. Fixed several namespace problems identified by BR.
2. Fixed bug in qrisk code to convert data.frame X to matrix.
5.16
1. Fixed bug in rq.fit.lasso whose .Fortran call had an extra argument.
2. Fixed bug in rq.fit.pfn to correct behavior when m > n. Pointed out by
Ivan Diaz (Google). Cause of this was rather pathological but
((p-1)*n)^/2/3 > n can happen when p is large as it tends to be these days.
5.17
1. Added anova.rqs at the suggestion of Jon Peck (IBM). This just takes
rq() output from a multiple tau command and converts it to something that
anova.rqlist can understand. Peck is writing something on the SPSS <-> R
interface, so I was curious to see what is going on with that. The answer
seems to be not too much, but there is a very annoying article here:
http://www.ibm.com/developerworks/library/ba-call-r-spss/ --
ugly hacks indeed! It does make me wonder why I've spent part of my weekend
making this extension just to accommodate a commercial implementation by IBM
that enables SPSS to call quantreg.
2. Fixed a bug in rq.test.rank which produced the wrong p-value for the
chi-squared version of the test.
3. Added various importFrom directives in NAMESPACE in accordance with
Kurt's July 2015 suggestions.
4. Removed calls to crq.fit.por2 provisionally while we resolve some
problems with the code for this new procedure.
5.18
1. Added a couple of further importFrom directives in NAMESPACE at
Kurt's suggestion.
2. Added some further cautionary verbiage about the dangers of using
rank inversion for large problems at the suggestion of Jon Peck (IBM).
5.19
1. Changed the printing of the number of NAs in the crq bootstrap functions
so that it also reported "out of" number of bootstrap replications.
2. Changed the coef matrix for the Powell crq method so that it conformed
to the other methods to facilitate plotting as requested by Vladimir Pazitka.
3. Changed the eps in summary.rq from .Machine$double.eps^(2/3) to
.Machine$double.eps^(1/2). This will reduce (somewhat) the likelihood
of getting one or two influential f_i's that dominate a covariance matrix
estimate.
4. Introduced the Portnoy2 method for crq, which still should be considered
experimental. It is a pure R rewriting of the original algorithm that
iterates on a fixed grid.
|