NEWS.md
plot.FFTrees()
now has a truth.labels
argument which, if set, distinguishes labels of true (signal vs. noise) cases from decision outcomes.plot.FFTrees()
now has a grayscale
argument which, if TRUE, creates a grayscale plot.cost_cues_default
from 0 to 1, so that default cue costs correspond to mcu
.@aliases FFTrees-package
to documentation of main FFTrees()
function.data_old
folder.parsnip
and tidymodels
to create and evaluate these models.FFTrees version 2.0.0 was released on CRAN [on 2023-06-06]. This version adds functionality, improves consistency, and increases robustness.
Changes since last release:
get_fft_df
, read_fft_df
, write_fft_df
, add_fft_df
add_nodes
, drop_nodes
, edit_nodes
, flip_exits
, reorder_nodes
, select_nodes
stopping.rule = "statdelta"
fftrees_grow_fan()
that prevented ifan
algorithm from stopping when finding a perfect FFT (given the current goal.chase
parameter)NA
values) in data:
NA
values in categorical (i.e., character/factor/logical) predictors are treated as <NA>
factor levelsNA
values in numeric predictors are either ignored (by default) or imputed (as the mean of the corresponding predictor) when creating and using FFTs to decide/predict (if possible)NA
values in the criterion variable are yet to be dealt withget_best_tree()
retrieves the ID of the best tree in an FFTrees
object (given goal
)get_exit_type()
converts a vector of exit descriptions into FFT exits (given exit_types
)get_fft_df()
retrieves the tree definitions of an FFTrees
objectprint.FFTrees()
).quiet
a list with four options).my.tree
).FFTrees.guide()
).exit_types
as global constant.The current development version of FFTrees is available at https://github.com/ndphillips/FFTrees.
FFTrees version 1.9.0 was released on CRAN [on 2023-02-08]. Apart from adding functionality and fixing minor bugs, this version improves consistency, robustness, and transparency.
Changes since last release:
my.goal
on cue and tree levels (as defined by my.goal.fun
).dprime
on cue and tree levels (by using "dprime"
as goal.threshold
, goal.chase
, or goal
values).my.tree
).summary.FFTrees()
function:
"cost"
occurs in goals).dprime
values in cue level statistics (x$cues$thresholds
and x$cues$stats
).dprime
values in competition statistics (x$competition$train
and x$competition$test
).util_gfft.R
).fft_node_sep
).asif_results
(in fftrees_grow_fan()
).rounding
argument of FFTrees()
.FFTrees()
and fftrees_create()
) by functionality.util_const.R
).README
.FFTrees version 1.8.0 was released on CRAN [on 2023-01-06]. This version mostly extends and improves existing functionality.
Changes since last release:
plot.FFTrees()
:
n.per.icon
legend when what = 'icontree'
.Trimmed white space from elements in tree definitions (in fftrees_apply.R
).
Added check that cues occur in current data (in verify_all_cues_in_data()
).
FFTrees version 1.7.5 was released on CRAN [on 2022-09-15]. This version contains mostly bug fixes, but also improves and revises existing functionality.
Changes since last release:
Added distinctions between FFTs that “decide” vs. “predict” by using corresponding labels in plots and verbal descriptions.
Improved plotting and printing FFTs (with plot.FFTrees()
and print.FFTrees()
):
what = 'all'
vs. what = 'tree'
and what = 'icontree'
).data
.col
, font
, adj
) to text of panel titles.FFTrees
object x
(to allow re-assigning to global x
when using new test data).Added wacc
to measures computed for competing algorithms.
Plotting with plot.FFTrees()
:
main
argument.stats
argument.helper_plot.R
.FFTrees version 1.7.0 was released on CRAN [on 2022-08-31]. This version contains numerous bug fixes and improves or revises existing functionality.
Changes since last release:
print.FFTrees()
:
data
argument to print an FFT’s training performance (by default) or prediction performance (when test data is available).tree
to "best.train"
or "best.test"
(as when plotting FFTs).bacc
or wacc
in Accuracy section (and sens.w
, if deviating from the default of 0.50).plot.FFTrees()
:
what = 'ROC'
analogous to what = 'cues'
.bacc
or wacc
in Accuracy section (and sens.w
value, if deviating from the default of 0.50).tree
to "best.train"
or "best.test"
.showcues()
:
x
as cue ranking criterion (rather than always using wacc
).sens.w
value when goal == 'wacc'
.top
< 10.data
argument (as FFTrees
objects only contain cue training data).alt.goal
argument (to allow ranking cue accuracies by alternative goals).quiet
argument (to hide feedback messages).summary.FFTrees()
:
definitions
and stats
(as a list).my.tree
or fftrees_wordstofftrees()
.my.tree
or fftrees_wordstofftrees()
.store.data
argument of FFTrees()
.FFTrees version 1.6.6 was released on CRAN [on 2022-07-18].
Changes since last release:
plot.FFTrees()
to not display plots properly.plot.FFTrees()
no longer saves graphic params changed in par()
.plot.FFTRrees()
: When test = 'best.test'
and no test data are provided, the information text is no returned with message()
rather than print()
.plot.FFTrees()
are now returned as warnings, not messages.cost.cues
and cost.outcomes
are now specified as named lists to avoid confusion.goal
and goal.chase
.Added class probability predictions with predict.FFTrees(type = "prob")
.
Updated print.FFTrees()
to display FFT #1 ‘in words’ (from the inwords(x)
function).
Added show.X
arguments to plot.FFTrees()
that allow you to selectively turn on or turn off elements when plotting an FFTrees
object.
Added label.tree
, label.performance
arguments to plot.FFTrees()
that allow you to specify plot (sub) labels.
Bug fixes:
FFTrees
object to a new call to FFTrees()
.Many additional vignettes (e.g.; Accuracy Statistics and Heart Disease Tutorial) and updates to existing vignettes.
Added cost.outcomes
and cost.cues
to allow the user to specify specify the cost of outcomes and cues. Also added a cost
statistic throughout outputs.
Added inwords()
, a function that converts an FFTrees
object to words.
Added my.tree
argument to FFTrees()
that allows the user to specify an FFT verbally.
E.g., my.tree = 'If age > 30, predict True. If sex = {m}, predict False. Otherwise, predict True'
.
Added positive predictive value ppv
, negative predictive value npv
and balanced predictive value bpv
, as primary accuracy statistics throughout.
Added support for two FFT construction algorithms from Martignon et al. (2008): "zigzag"
and "max"
. The algorithms are contained in the file heuristic_algorithm.R
and can be implemented in FFTrees()
as arguments to algorithm
.
Added sens.w
argument to allow differential weighting of sensitivities and specificities when selecting and applying trees.
Fixed bug in calculating importance weightings from FFForest()
outputs.
Changed wording of statistics throughout package: hr
(hit rate) and far
(false alarm rate) (based on the classification frequency values hi
and fa
), are now sens
for sensitivity and spec
for specificity (1 − far
), respectively.
The rank.method
argument is now deprecated. Use algorithm
instead.
Added a stats
argument to plot.FFTrees()
. When stats = FALSE
, only the tree will be plotted without reference to any statistical output.
Grouped all competitive algorithm results (regression, cart, random forests, support vector machines) to the new x.fft$comp
slot rather than a separate first level list for each algorithm. Also replaced separate algorithm wrappers with one general comp_pred()
wrapper function.
Added FFForest()
, a function for creating forests of FFTs, and plot.FFForest()
, for visualizing forests of FFTs. (This function is experimental and still in development.)
Added random forests and support vector machines for comparison in FFTrees()
using the randomForest and e1071 packages.
Changed logistic regression algorithm from the default glm()
version to glmnet()
for a regularized version.
predict.FFTrees()
now returns a vector of predictions for a specific tree rather than creating an entirely new FFTrees
object.
You can now plot cue accuracies within the plot.FFTrees()
function by including the plot.FFTrees(what = 'cues')
argument. (This replaces the former showcues()
function.)
Many cosmetic changes to plot.FFTrees()
(e.g.; gray levels, more distinct classification balls). You can also control whether the results from competing algorithms are displayed or not with the comp
argument.
Bug-fixes:
Trees can now use the same cue multiple times within a tree. To do this, set rank.method = "c"
and repeat.cues = TRUE
.
Bug-fixes:
FFTrees()
now supports a single predictor (e.g.; formula = diagnosis ~ age
) which previously did not work.Streamlined code to improve cohesion between functions. This may cause issues with FFTrees
objects created with earlier versions of the package. They will need to be re-created.
Updated, clearer print.FFTrees()
method to see important info about an FFTrees
object in matrix format.
Training and testing statistics are now in separate objects (e.g., data$train
vs. data$test
) to avoid confusion.
Bug-fixes:
predict.FFTrees()
now works much better by passing a new dataset (data.test
) as a test dataset for an existing FFTrees
object.mar
and layout
are now reset after running plot.FFTrees()
which.tree
argument in plot.FFTrees()
to tree
to conform to blog posts.predict.FFTrees()
now works better with tibble
inputs.fft
label to FFTrees
throughout the package to avoid confusion with fast fourier transform. Thus, the main tree building function is now FFTrees()
and the new tree object class is FFTrees
.[File NEWS.md
last updated on 2024-05-08.]