forked from cran/bnlearn
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChangelog
697 lines (618 loc) · 30.7 KB
/
Changelog
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
bnlearn (4.1)
* fixed memory corruption in dsep() (thanks Dominik Muller).
* added the marginal uniform prior.
* fixed the optimized score cache for the Castelo & Siebes and for the
marginal uniform priors, which were affected by several subtle bugs.
* bn.cv() now implements a "custom-folds" method that allows to manually
specify which observation belongs to each fold, and folds are not
constrained to have the same size.
* fixed checks in the C code involving R objects' classes; they failed
when additional, optional classes were present (thanks Claudia Vitolo).
* fixed cpdag() handling of illegal arcs that are part of shielded
colliders (thanks Vladimir Manewitsch).
* removed misleading warning about conflicting v-structures from cpdag().
* rsmax2() and mmhc() now return whitelists and blacklists as they are
at the beginning restrict phase (thanks Vladimir Manewitsch).
* bn.fit() can now fit local distributions in parallel, and has been mostly
reimplemented in C for speed (thanks Claudia Vitolo).
* added an impute() function to impute missing values from a bn.fit object.
* fixed loss functions for data in which observations have to be dropped
for various nodes (thanks Manuel Gomez Olmedo).
* added an all.equal() method to compare bn.fit objects.
* added a "by.node" argument to score() for decomposable scores (thanks
Behjati Shahab).
* added warning about partially direct graphs in choose.direction() and
improved its debugging output (thanks Wei Kong).
* added spouses(), ancestors() and descendats().
* fixed a segfault in predict(..., method = "lw") with discrete BNS and
sparse CPTs that included NaNs.
bnlearn (4.0)
* fixed memory usage in aracne(), chow.liu() and tree.bayes() (thanks
Sunkyung Kim).
* rework memory management using calloc() and free() to avoid memory
leaks arising from R_alloc() and missing memory barriers.
* fixed a coefficients indexing bug in rbn() for conditional Gaussian
nodes (thanks Vladimir Manewitsch).
* added a mean() function to average bn.strength objects.
* fixed S4 method creation on package load on MacOS X (thanks Dietmar
Janetzko)
* fixed more corner cases in the Castelo & Siebes prior, and increased
numeric tolerance for prior probabilities.
* allow non-uniform priors for the "mbde" score (thanks Robert Ness)
and for "bdes".
* the "mode" attribute in bn.strength objects it now named "method".
* added posterior probabilities to the predictions for all discrete
networks (thanks ShangKun Deng).
* added the Steck's optimal ISS estimator for the BDe(u) score.
* fixed the assignment of standard deviation in fitted CLG networks
(thanks Rahul Swaminathan).
* handle zero lambdas in the shrinkage Gaussian mutual information
(thanks Piet Jones).
* fixed segfault when computing posterior predictions from networks with
NaNs in their conditional probability tables (thanks Giulio Caravagna).
* fixed the assignment of LASSO models from the penalized package to
fitted Gaussian networks (thanks Anthony Gualandri).
* cpdag() now preserves the directions of arcs between continuous and
discrete nodes in conditional linear Gaussian networks, and optionally
also takes whitelists and blacklist into account (for any network).
* several checks are now in place to prevent the inclusion of illegal
arcs in conditional Gaussian networks.
* renamed the "ignore.cycles" argument to "check.cycles" in arcs<-() and
amat<-() for consistency with other functions such as set.arc().
* added an "undirected" argument to mmpc() and si.hiton.pc(), which can now
learn the CPDAG of the network instead of just the skeleton.
* added a "directed" argument to acyclic().
* removed unsupported argument "start" from learn.nbr().
* handle interventions correctly in boot.strength() when using the mixed
BDe score (thanks Petros Boutselis).
* "bdes" is now named "bds" (it is not score equivalent, so the "e" did
not belong).
bnlearn (3.9)
* fixed alpha threshold truncation bug in conditional independence tests
(thanks Janko Tackmann).
* massive cleanup of the C code handling conditional independence tests.
* fixed variance scaling bug for the mi-cg test (thanks Nicholas Mitsakakis).
* in the exact t-test for correlation and in Fisher's Z, assume independence
instead of returning an error when degrees of freedom are < 1.
* fixed segfault in cpdist(..., method = "lw") when the evidence has
probability zero.
* added loss functions based on MAP predictions in bn.cv().
* removed bn.moments() and bn.var(), they were basically unmaintained and had
numerical stability problems.
* added support for hold-out cross-validation in bn.cv().
* added plot() methods for comparing the results of different bn.cv() calls.
* permutation tests should return a p-value of 1 when one of the two
variables being tested is constant (thanks Maxime Gasse).
* improved handling of zero prior probabilities for arcs in the Castelo &
Siebes prior, so that hc() and tabu() do not get stuck (thanks Jim Metz).
* added an "effective" argument to compute the effective degrees of freedoms
of the network, estimated with the number of non-zero free parameters.
* fixed optional argument handling in rsmax2().
* fixed more corner cases related to singular models in
cpdist(..., method = "lw") and predict(..., method = "bayes-lw").
* fixed Pearson's X^2 test, zero cells may have dropped too often in
sparse contingency tables.
* fixed floating point rounding issues in the shrinkage estimator for the
Gaussian mutual information.
bnlearn (3.8.1)
* fixed CPT import in read.net().
* fixed penfit objects import from penalized (thanks John Noble).
* fixed memory allocation corner case in BDe.
bnlearn (3.8)
* reorder CPT dimensions as needed in custom.fit() (thanks Zheng Zhu).
* fixed two uninitialized-memory bugs found by valgrind, one in
predict() and one random.graph().
* fixed wrong check for cluster objects (thanks Vladimir Manewitsch).
* fixed the description of the alternative hypothesis for the
Jonckheere-Terpstra test.
* allow undirected cycles in whitelists for structure learning algorithms
and let the algorithm learn arc directions (thanks Vladimir Manewitsch).
* include sanitized whitelists (as opposed to those provided by the user)
in bn.fit objects.
* removed predict() methods for single-node objects, use the method for
bn.fit objects instead.
* various fixes in the monolithic C test functions.
* fixed indexing bug in compare() (thanks Vladimir Manewitsch).
* fixed false positives in cycle detection when adding edges to a graph
(thanks Vladimir Manewitsch).
* fixed prior handling in predict() for naive Bayes and TAN classifiers
(thanks Vinay Bhat).
* added configs() to construct configurations of discrete variables.
* added sigma() to extract standard errors from bn.fit objects.
bnlearn (3.7.1)
* small changes to make CRAN checks happy.
bnlearn (3.7)
* fixed the default setting for the number of particles in cpquery()
(thanks Nishanth Upadhyaya).
* reimplemented common test patterns in monolithic C functions to speed
up constraint-based algorithms.
* added support for conditional linear Gaussian (CLG) networks.
* fixed several recursion bugs in choose.direction().
* make read.{bif,dsc,net}() consistent with the `$<-` method for bn.fit
objects (thanks Felix Rios).
* support empty networks in read.{bif,dsc,net}().
* fixed bug in hc(), triggered when using both random restarts and the
maxp argument (thanks Irene Kaplow).
* correctly initialize the Castelo & Siebes prior (thanks Irene Kaplow).
* change the prior distribution for the training variable in classifiers
from the uniform prior to the fitted distribution in the
bn.fit.{naive,tan} object, for consistency with gRain and e1071 (thanks
Bojan Mihaljevic).
* note AIC and BIC scaling in the documentation (thanks Thomas Lefevre).
* note limitations of {white,black}lists in tree.bayes() (thanks Bojan
Mihaljevic).
* better input sanitization in custom.fit() and bn.fit<-().
* fixed .Call stack imbalance in random restarts (thanks James Jensen).
* note limitations of predict()ing from bn objects (thanks Florian Sieck).
bnlearn (3.6)
* support rectangular nodes in {graphviz,strength}.plot().
* fixed bug in hc(), random restarts occasionally introduced cycles in
the graph (thanks Boris Freydin).
* handle ordinal networks in as.grain(), treat variables as categorical
(thanks Yannis Haralambous).
* discretize() returns unordered factors for backward compatibility.
* added write.dot() to export network structures as DOT files.
* added mutual information and X^2 tests with adjusted degrees of freedom.
* default vstruct() and cpdag() to moral = FALSE (thanks Jean-Baptiste
Denis).
* implemented posterior predictions in predict() using likelihood weighting.
* prevent silent reuse of AIC penalization coefficient when computing BIC
and vice versa (thanks María Luisa Matey).
* added a "bn.cpdist" class and a "method" attribute to the random data
generated by cpdist().
* attach the weights to the return value of cpdist(..., method = "lw").
* changed the default number of simulations in cp{query, dist}().
* support interval and multiple-valued evidence for likelihood weighting
in cp{query,dist}().
* implemented dedup() to pre-process continuous data.
* fixed a scalability bug in blacklist sanitization (thanks Dong Yeon Cho).
* fixed permutation test support in relevant().
* reimplemented the conditional.test() backend completely in C for
speed, it is now called indep.test().
bnlearn (3.5)
* fixed (again) function name collisions with the graph packages
(thanks Carsten Krueger).
* fixed some variable indexing issues in likelihood weighting.
* removed bootstrap support from arc.strength(), use boot.strength()
instead.
* added set.edge() and drop.edge() to work with undirected arcs.
* boot.strength() now has a parallelized implementation.
* added support for non-uniform graph priors (Bayesian variable
selection, Castelo & Siebes).
* added a threshold for the maximum number of parents in hc() and tabu().
* changed the default value of "moral" from FALSE to TRUE in cpdag()
and vstructs() to ensure sensible results in model averaging.
* added more sanity checks in cp{query,dist}() expression parsing
(thanks Ofer Mendelevitch).
* added 'nodes' and 'by.sample' arguments to logLik() for bn.fit objects.
* support {naive,tree}.bayes() in bn.cv() (thanks Xin Zhou).
* fixed predict() for ordinal networks (thanks Vitalie Spinu).
* fixed zero variance handling in unconditional Jonckheere-Terpstra
tests due to empty rows/columns (thanks Vitalie Spinu).
* in bn.cv(), the default loss for classifiers is now classification
error.
* added a nodes<-() function to re-label nodes in bn and bn.fit object
(based on a proof of concept by Vitalie Spinu).
* replaced all calls to LENGTH() with length() in C code (thanks Brian
Ripley).
* default to an improper flat prior in predict() for classifiers for
consistency (thanks Xin Zhou).
* suggest the parallel package instead of snow (which still works fine).
bnlearn (3.4)
* move the test counter into bnlearn's namespace.
* include Tsamardinos' optimizations in mmpc(..., optimized = FALSE),
but not backtracking, to make it comparable with other learning
algorithms.
* check whether the residuals and the fitted values are present
before trying to plot a bn.fit{,.gnode} object.
* fixed two integer overflows in factors' levels and degrees of
freedom in large networks.
* added {compelled,reversible}.arcs().
* added the MSE and predictive correlation loss functions to bn.cv().
* use the unbiased estimate of residual variance to compute the
standard error in bn.fit(..., method = "mle") (thanks
Jean-Baptiste Denis).
* revised optimizations in constraint-based algorithms, removing
most false positives by sacrificing speed.
* fixed warning in cp{dist,query}().
* added support for ordered factors.
* implemented the Jonckheere-Terpstra test to support ordered
factors in constraint-based structure learning.
* added a plot() method for bn.strength objects containing
bootstrapped confidence estimates; it prints their ECDF and
the estimated significance threshold.
* fixed dimension reduction in cpdist().
* reimplemented Gaussian rbn() in C, it's now twice as fast.
* improve precision and robustness of (partial) correlations.
* remove the old network scripts for network that are now available
from www.bnlearn.com/bnrepository.
* implemented likelihood weighting in cp{dist,query}().
bnlearn (3.3)
* fixed cpdag() and cextend(), which returned an error about
the input graph being cyclic when it included the CPDAG of
a shielded collider (thanks Jean-Baptiste Denis).
* do not generate observations from redundant variables (those
not in the upper closure of event and evidence) in cpdag()
and cpquery().
* added Pena's relevant() nodes identification.
* make custom.fit() robust against floating point errors
(thanks Jean-Baptiste Denis).
* check v-structures do not introduce directed cycles in the
graph when applying them (thanks Jean-Baptiste Denis).
* fixed a buffer overflow in cextend() (thanks Jean-Baptiste
Denis).
* added a "strict" argument to cextend().
* removed Depends on the graph package, which is in Suggests
once more.
* prefer the parallel package to snow, if it is available.
* replace NaNs in bn.fit objects with uniform conditional
probabilities when calling as.grain(), with a warning
instead of an error.
* remove reserved characters from levels in write.{dsc,bif,net}().
* fix the Gaussian mutual information test (thanks Alex Lenkoski).
bnlearn (3.2)
* fixed outstanding typo affecting the sequential Monte Carlo
implementation of Pearson's X^2 (thanks Maxime Gasse).
* switch from Margaritis' set of rules to the more standard
Meek/Sprites set of rules, which are implemented in cpdag().
Now the networks returned by constraint-based algorithms are
guaranteed to be CPDAGs, which was not necessarily the case
until now.
* semiparametric tests now default to 100 permutations, not 5000.
* make a local copy of rcont2() to make bnlearn compatible with
both older and newer R versions.
bnlearn (3.1)
* fixed all.equal(), it did not work as expected on networks
that were identical save for the order of nodes or arcs.
* added a "moral" argument to cpdag() and vstructs() to make
those functions follow the different definitions of v-structure.
* added support for graphs with 1 and 2 nodes.
* fixed cpquery() handling of TRUE (this time for real).
* handle more corner cases in dsep().
* added a BIC method for bn and bn.fit objects.
* added the semiparametric tests from Tsamardinos & Borboudakis
(thanks Maxime Gasse).
* added posterior probabilities to the predictions for
{naive,tree}.bayes() models.
* fixed buffer overflow in rbn() for discrete data.
bnlearn (3.0)
* added dsep() to test d-separation.
* implemented Tree-Augmented Naive Bayes (TAN) in tree.bayes().
* implemented Semi-Interleaved HITON-PC in si.hiton.pc().
* improved parsing in read.{bif,dsc,net}().
* fixed an indexing error in Gaussian permutation tests.
* added a "textCol" highlight option to graphviz.plot().
* added {incoming,outgoing,incident}.arcs().
* fixed two hard-to hit bugs in TABU search (thanks Maxime Gasse).
* added custom.fit() for expert parameter specification.
* added support for Markov blanket preseeding in learn.mb().
* assume independence instead of returning an error when a
partial correlation test fails due to errors in the
computation of the pseudoinverse of the covariance matrix.
* fixed an incorrect optimization in the backward phase of mmpc().
* fixed a floating point rounding problem in the mutual
information tests (64bit OSes only, thanks Maxime Gasse).
* fixed cp{query,dist}() handling of TRUE (thanks Maxime Gasse).
* added learn.nbr() to complement learn.mb().
bnlearn (2.9)
* integrate with the graph package and provide import/export
functions for the graphNEL and graphAM classes.
* removed bn.var.test() and the "aict" test.
* fixed wrong ISS handling in the BDe score.
* fixed a buffer overflow in the BGe score.
* added subgraph(), tiers2blacklist(), and cextend().
* fixed bug in boot.strength(), which failed with a spurious
error when a PDAG was learned.
* support interval discretization as the initial step in
Hartemink's discretization.
* fixed blacklist handling in chow.liu().
* fixed choose.direction() and arc.strength(), both of them
require a .test.counter and should create it as needed.
* added as.bn() and as.bn.fit() for "grain" objects (from the
the gRain package) and as.grain() for "bn.fit" objects.
* fixed infinte loop in choose.direction().
* make choose.direction(..., criterion = "bootstrap") work again.
* added an 'every' argument to random.graph() for the 'ic-dag'
and 'melancon' algorithms.
* shortened the optional arguments for random.graph(...,
method = "hartemink") to "idisc" and "ibreaks".
bnlearn (2.8)
* switched "cpdag" to TRUE in {boot,custom}.strength().
* added a "weights" argument to custom.strength().
* implemented the modified BDe score handling mixtures of
experimental and observational data (mbde).
* reimplemented the BGe score for speed (about 20x faster).
* fixed a buffer overflow in predict() for discrete networks.
* fixed sanitization in predict() for bn.fit.{d,g}node objects.
* handle partially directed graphs in bn.cv() for log-likelihood
loss (both discrete and Gaussian).
bnlearn (2.7)
* make .onLoad() more robust, so that it passes "R CMD check"
even with a broken Graphviz installation.
* reduced memory usage in graphviz.plot(), now using arc lists
instead of adjacency matrices.
* added tie breaking in prediction.
* allow inter.iamb() to break infinite loops instead of returning
an error.
* fixed a buffer overflow in discrete Monte Carlo tests.
* added sequential Monte Carlo permutation tests.
* improved performance and error handling in Gaussian Monte
Carlo tests.
bnlearn (2.6)
* allow discrete data in Hartemink's discretization algorithm.
* implemented {read,write}.bif() to import/export BIF files.
* implemented {read,write}.dsc() to import/export DSC files.
* implemented {read,write}.net() to import/export NET files.
* completely reimplemented compare() to return useful metrics,
it was just a slower version of all.equal().
* implemented model averaging with significance thresholding
in averaged.network().
* use new significance thresholding in {boot,custom}.strength()
and arc.strength(criterion = "bootstrap").
* export predicted values in bn.cv() when using classification
error.
* fixed an integer overflow in mutual information tests.
bnlearn (2.5)
* reimplemented rbn.discrete() in C both for speed and to
get CPT indexing right this time.
* added bn.net() to complement bn.fit().
* changed the default value of the imaginary sample size to
10, which is a de facto standard in literature.
* implemented the ARACNE and Chow-Liu learning algorithms.
* improved robustness of correlation estimation.
* added a "cpdag" option to boot.strength().
* fixed bug in discretize().
* improved sanitization in graphviz.plot() and strength.plot().
* added Hamming distance.
bnlearn (2.4)
* reimplemented naive Bayes prediction in C for speed.
* added some debugging output to predict() methods.
* fixed printing of fitted Gaussian Bayesian networks.
* fixed stack imbalance in Gaussian Monte Carlo tests.
* implemented some discretization methods in discretize().
* added custom.strength() for arbitrary sets of networks.
* fixed strength.plot() threshold for significant arcs.
bnlearn (2.3)
* added cpdist() to generate observations from arbitrary
conditional probability distributions.
* added a simple naive.bayes() implementation for discrete
networks, complete with a predict() implementation using
maximum posterior probability.
* added the shrinkage test for the Gaussian mutual information.
* added ntests(), in.degree(), out.degree(), degree(),
whitelist() and blacklist().
* added support for the snow package in bn.boot(), bn.cv(),
cpquery() and cpdist().
* fixed integer overflow in the computation of the number of
parameters of discrete networks.
* fixed errors in the labels of Gaussian scores.
bnlearn (2.2)
* fixed a bug in moral(), which returned duplicated arcs when
shielded parents were present in the graph.
* implemented all.equal() for bn objects.
* added workaround for plotting empty graphs with graphviz.plot(),
which previously generated an error in Rgraphviz.
* added a CITATION file.
* added the narcs() function.
* print.bn()'s now supports small(er) line widths.
* added support for "bn.fit" objects in graphviz.plot().
* added support for changing the line type of arcs in
graphviz.plot().
* added the learn.mb() function to learn the Markov blanket of
a single variable.
* fixed calls to UseMethod(), which were not always working
correctly because of the changed parameter matching.
* fixed an off-by-one error in the prediction for discrete
root nodes.
bnlearn (2.1)
* optimized data frame subsetting and parents' configurations
construction in conditional.test() and score.delta().
* fixed and improved the performance of rbn().
* fixed wrong penalization coefficient for Gaussian AIC (was
computing a Gaussian BIC instead).
* added cpquery() to perform conditional probability queries
via Logic (Rejection) Sampling.
* added bn.cv() to perform k-fold cross-validation, with
expected log-likelihood and classification error as
loss functions.
* added predict(), logLik() and AIC() methods for bn.fit
objects.
* renamed bnboot() to bn.boot() for consistency with bn.cv()
and bn.fit().
bnlearn (2.0)
* added the shd() distance.
* renamed dag2ug() to skeleton(), which is more intuitive.
* added support for "bn.fit" objects in rbn().
* added vstructs() and moral().
* added the coronary data set.
* improved partial correlation resillience to floating point
errors when dealing with ill-behaved covariance matrices.
* miscellaneous (small) optimizations in both R and C code.
bnlearn (1.9)
* added support for "bn.fit" objects in nodes(), nbr(),
parents(), children(), root.nodes(), leaf.nodes(),
arcs(), directed.arcs(), undirected.arcs(), amat(),
nparams(), mb(), path(), directed(), acyclic(),
node.ordering().
* fixed bug in hybrid and score-based learning algorithms,
which did not handle blacklists correctly.
bnlearn (1.8)
* removed the fast mutual information test in favour of
the equivalent shrinkage test, which uses a more
systematic approach.
* fixed fast.iamb(), which should not have truncated
exact and Monte Carlo tests.
* added the HailFinder and Insurance data sets.
* updated the Grow-Shrink implementation according to
newer (and much clearer) literature from Margaritis.
* rewritten more of the configuration() function in C,
resulting in dramatic (2x to 3x) speedups for large
data sets.
* implemented tabu search.
* removed rshc() in favour of rsmax2(), a general two-stage
restricted maximization hybrid learning algorithm.
* reimplemented cpdag() in C, with an eye towards a
future integration with constraints-based algorithms.
* fixed a bug in coef() for discrete bn.fit objects.
* implemented Melancon's uniform probability random DAG
generation algorithm.
bnlearn (1.7)
* big clean-up of C code, with some small optimizations.
* fixed bug in the handling of upper triangular matrices
(UPTRI3 macro in C code).
* added the dag2ug() and pdag2dag() functions.
* fixed a bug in bn.fit(), now it really works even for
discrete data.
* added bn.moments(), bn.var() and bn.var.test() for
basic probabilistic modelling of network structures.
bnlearn (1.6)
* implemented the mmhc() algorithm and its generic
template rshc().
* rewritten both the optimized and the standard implementation
of hc() in C, they are way faster than before.
* various fixes to documentation and bibtex references.
* revised the functions implementing the second half
of the constraint-based algorithm.
* improved parameter sanitization in "amat<-"().
* fixed the functions that set arcs' direction in
constraint-based algorithms.
bnlearn (1.5)
* improved parameter sanitization in the "<-"()
functions and modelstring().
* added support for bootstrap inference with bnboot(),
boot.strength(), arc.strength(, criterion = "bootstrap")
and choose.direction(, criterion = "bootstrap").
* fixed a bug in acyclic() causing false negatives.
* added bn.fit() for estimating the parameters of a Bayesian
network conditional on its structure.
* mapped some S3 methods (print, fitted, fitted.values,
residuals, resid, coefs, coefficients) to objects of
class "bn.fit", "bn.fit.gnode" and "bn.fit.dnode".
* added some plots for the fitted models based on the
lattice package.
* implemented AIC and BIC for continuous data, and
removed the likelihood score.
* various optimizations to C code.
* throughout documentation update.
* fixed an infinite loop bug in inter.iamb().
bnlearn (1.4)
* exported the "B" parameter to specify the number of
permutations to be done in a permutation test.
* removed the "direction" parameter from constraint-based
learning algorithms, as it was non-standard,
misnamed and had various reported problems.
* removed the duplicate "dir" label for the BDe score.
* added support for Gaussian data to rbn() and nparams().
* added "modelstring<-"().
* revised references in documentation.
* added the alarm and marks data sets.
* moved the scripts to generate data from the networks
included as data sets to the "network.scripts"
directory.
bnlearn (1.3)
* added Monte Carlo permutation tests for mutual
information (for both discrete and Gaussian data),
Pearson's X^2, linear correlation and Fisher's Z.
* added strength.plot().
* reimplemented random.graph() in C for speed.
* clean up of C memory allocation functions.
bnlearn (1.2)
* added cache.partial.structure() to selectively
update nodes' cached information stored in
'bn' objects.
* fixed a bug in cache.structure().
* reimplemented is.acyclic() in C to fix a bug
causing false negatives.
* added the lizards data set.
bnlearn (1.1)
* implemented mmpc().
* slightly changed gaussian.test to be more learning-friendly.
* fixed bugs in empty.graph() and "arcs<-"().
* changed the default probability of arc inclusion for
the "ordered" method in random.graph() to get sparser
graphs.
* added graphviz.plot().
* implemented the possibility of not learning arc directions
in constraint-based algorithms.
* changed the default value of the strict parameter
from TRUE to FALSE.
* reimplemented cache.structure() in C to increase
random.graph() performance and scalability.
bnlearn (1.0)
* completely rewritten random.graph(); now it supports
different generation algorithms with custom tuning
parameters.
* moved to dynamic memory allocation in C routines.
* improved performance and error handling of rbn().
bnlearn (0.9)
* reimplemented all the functions that deal with cycles
and paths in C, which increased their speed manifold
and greatly improved their memory use.
* cycle detection and elimination snow parallelized in
gs(), iamb(), fast.iamb() and inter.iamb().
* renamed {root,leaf}nodes() to {root,leaf}.nodes().
* rewritten node ordering in C to improve performance
and avoid recursion.
* added ci.test(), which provides a fronted to all the
independence and conditional independence tests
implemented in the package.
* added mutual information (for Gaussian data) and
Pearson's X^2 tests (for discrete data).
* removed the Mantel-Haenszel test.
bnlearn (0.8)
* added support for random restarts in hc().
* added arc.strength(), with support for both conditional
independence tests and network scores.
* added the asia data set.
* lots of documentation updates.
* reimplemented functions related to undirected arcs in C
for speed.
* added more parameter sanitization.
bnlearn (0.7)
* optimized hc() via score caching, score equivalence,
and partial reimplementation in C.
* many utility functions' backends reimplemented in C
for speed.
* improved cycle and path detection.
* lots of documentation updates.
* added more parameter sanitization.
bnlearn (0.6)
* implemented hc().
* added support for the K2 score for discrete networks.
* ported Gaussian posterior density from the deal package.
* added the gaussian.test data set.
* added an AIC-based test for discrete data.
* lots of documentation updates.
* added more parameter sanitization.
bnlearn (0.5)
* added more utility functions, such as rootnodes(),
leafnodes(), acyclic(), empty.graph() and random.graph().
* reimplemented parents' configuration generation in C
for speed.
* lots of documentation updates.
* added lots of parameter sanitization in utils-sanitization.R.
bnlearn (0.4)
* added rbn(), with support for discrete data.
* added a score function, with support for likelihood,
log-likelihood, AIC, BIC, and posterior Dirichlet
density of discrete networks.
* ported modelstring(), a string representation of a network,
from package deal.
* added many utility functions, such as parents() and children()
and their counterparts "parents<-"() and "children<-"().
* lots of documentation updates.
bnlearn (0.3)
* added support for the snow package in gs(), iamb(), inter.iamb()
and fast.iamb().
* added the learning.test data set.
* reimplemented mutual information in C for speed.
* lots of documentation updates.
bnlearn (0.2)
* implemented iamb(), inter.iamb() and fast.iamb().
* added partial correlation and Fisher's Z conditional
independence tests for Gaussian data.
* first completely documented release.
bnlearn (0.1)
* initial release.
* preliminary implementation of gs() with mutual information
as conditional independence test.