NEWS
NetSimR 0.3.2
- The test of the settings files asked for a double to come back from its
text form bit for bit. A platform built without long double reads such
text up to a bit out, whatever the number of digits written, so the test
failed on CRAN's noLD check; it now allows that difference where the
platform cannot do better and still asks for an exact value everywhere
else. Settings files themselves are unchanged.
NetSimR 0.3.1 (2026-09-22)
- Results change in four cases, each described below: an each-and-every-loss
layer with limited reinstatements combined with an aggregate deductible;
totals, gross claims and reinstatements used, which are no longer rounded
to two decimals; the ratios of PureIBNRGamma() and PureIBNRLNorm(); and the
quantiles, capped means and exposure curves in the three items that follow.
The Shiny tools also no longer load settings files saved as .rds.
- qSlicedGammaPareto() and qSlicedLNormPareto() give NaN for a probability
outside [0, 1], as qgamma() does. Where the reciprocal of the Pareto shape
is a whole number (a shape of 1, 0.5 or a third), a probability above 1
gave a plausible-looking quantile instead: q = 1.1 gave -7357.59 with a
shape of 1, and 54134.1 with a shape of 0.5.
- SlicedGammaParetoCappedMean() and SlicedLNormParetoCappedMean() give Inf
at an infinite cap when the Pareto shape is 1 or below, agreeing with
SlicedGammaParetoMean() and SlicedLNormParetoMean(). They gave NaN when
the weight of the tail underflowed to zero.
- ExposureCurveLNorm() gives 1 at an infinite cap, where it gave NaN when
the mean of the distribution overflowed (a sigma of 40, say).
- ExposureCurveGamma() and ExposureCurveLNorm() name themselves when
arguments of different lengths cannot be recycled, as the other functions
do; they named the capped mean they call.
- simulate_claims() rejects a progress argument that is not a function,
which it used to ignore.
- Settings files keep the exact value of every number. They were written
with 15 significant digits, so a value such as a third came back slightly
different and a seeded run loaded from its own settings file could give
different results. Values that need no more digits are still written
plainly (0.3 stays 0.3).
- A settings file with a setting given twice, a blank line between the
settings, no version line, or a value built to be enormous is refused with
a message saying what is wrong. A repeated setting used to load two values
into a field that holds one, and a missing version line reported
"subscript out of bounds".
- Claims simulator: a slice added while settings or an example are loading no
longer makes the next "Add slice" jump by the slices that were pending.
- Claims simulator: the report's histogram of claim totals keeps simulations
whose total is negative. It left them out while its note said that only
the simulations totalling zero were left out.
- Claims simulator: the report's headline figures, layer metrics and
gross/ceded/net table round the modelled series on its own scale, so they
agree with the statistics table on the same page and with the Compare tab.
A layer with a mean of 1.90 and a median of 0.00 was shown as 2 and 0.
- Claims simulator: distribution parameters far below one are shown to three
significant figures (an Exponential rate of 1e-5, a mean claim of 100,000,
was shown as 0), and a seed of 100000 is shown as 100,000, not 1e+05.
- Claims simulator: the report fits a phone-width window; below about 352 px
the right edge of every section was cut off. Its charts are drawn with the
cairo device on Windows, as the charts in the app already were.
- Claims simulator: the Compare tab tells apart two runs that differ only by
"Truncate at zero", and leaves out of the chart a run with too few
simulations to draw a curve, which appeared in the legend with no curve.
Return-period charts label their vertical axis Ceded or Net when that is
what they show, as the other charts do.
- Claims simulator: the frequency and severity choices and the Compare tab's
run name are announced by screen readers.
- Claims simulator: with multiprocessing on, an ordinary error during a run
(an invalid parameter, an overflowing distribution) no longer shuts the
parallel workers down, so the next run reuses them instead of starting new
ones. The workers are restarted only when one of them breaks, and then no
connection to a replaced worker is left open to be closed later with a
"closing unused connection" warning.
- GLM fitting tool: a formula may use the data's columns, the formula
operators and I(), log(), exp(), sqrt(), pmin(), pmax(), poly(), factor(),
as.factor(), interaction() and offset(); anything else is refused by name.
The formula was run as R code, so a settings file from someone else could
carry code that ran on the next click of Fit model.
- GLM fitting tool: after data is imported, the model tiles, the chart and
the downloads say which file the model on screen was fitted to, and the
downloads wait until it is fitted again; a download asked for anyway (from
a page left open across the import, or a kept link) is refused rather than
served. The tiles, the coefficients and the downloaded predictions used to
come from the previous import with nothing saying so.
- GLM fitting tool: two stored models are compared by AIC only when they
were fitted to the same import and left out the same rows; models of
unrelated data with the same number of rows were marked "lower".
- GLM fitting tool: warnings raised before a binomial response with more
than two values are kept rather than replaced; the predictions CSV calls
its column model_prediction when the data already has one called
prediction; and the number of bands read from a settings file is held to
the range of the slider.
- GLM fitting tool: a model is fitted as the screen shows it even when Fit
model is clicked straight after loading a stored model or a settings file,
or after a change of family, before the browser has reported the new
values. The fit mixed the loaded family and link with the response, offset,
weights and formula shown before the load, so a stored binomial model could
be fitted to the previous count response and fail. A settings file whose
link does not suit its family uses the family's default link and says so,
instead of leaving the link blank on screen.
- GLM fitting tool: MySQL is no longer offered as a data source, and RMySQL is
no longer suggested; RMySQL is deprecated by its authors. A settings file
that chose MySQL loads without it, and the database type is left as it is.
The database user no longer defaults to MySQL's "root".
- Distribution fitting tool: a file that is not valid UTF-8 is read as
Windows-1252, which is what Excel writes on a German or French Windows. An
accented character used to end the session with a grey overlay as soon as
the file was uploaded.
- Distribution fitting tool: a row with more fields than the rows above it
keeps them in their own columns. The surplus value started a new row
instead, so claims that were never in the file were fitted (a file of
eight claims gave eleven).
- Distribution fitting tool: the slicing point and piecewise Pareto
threshold sliders span the claims up to the largest once the top half a
percent are left out, so the body of a heavy-tailed distribution can be
reached; one large claim used to leave the body in less than a pixel of
the bar. A point can also be typed in the box beside its slider, and the
sliders grow to hold a value beyond their range.
- Distribution fitting tool: the header is found after more than 100 blank
lines; the frequency histogram shows the probability a model puts below
the smallest count, which zero-truncated data left off the chart; the
Pareto alpha between two slicing points needs at least three claims
between them and reports a fit that did not converge, instead of showing
whatever the optimiser stopped at; and the Data tile asks whether the
first row is a header when the column names are all numbers.
- The help pages say what each function does rather than repeating its
title, the sliced distribution pages say which argument is the Pareto
shape, and the three applications link to each other.
- The vignettes no longer carry LaTeX-only markup (\pagebreak and
\usepackage[utf8]{inputenc}) that an HTML vignette ignores, and no longer
show the date they were built on CRAN. The Sliced distributions vignette
refers to the capped mean vignette by its title.
- The exploratory scripts in tests/CappedMean, tests/PureIBNR and
tests/SlicedDistributions are left out of the package tarball; they were
never run by R CMD check.
- DESCRIPTION: the third article is "Taken to excess", the Shiny tools are
listed one by one, and testthat (>= 3.0.0) is required for the tests.
README: a CRAN badge and a list of the vignettes.
- PureIBNRGamma() and PureIBNRLNorm() compute the ratios from the unrounded
pure IBNR duration. They divided the duration rounded to 0.01 days, so
short periods lost precision (a one-hour period gave 0.96 instead of
1.00000, a week was wrong in the fourth decimal); ratios of long periods
can change in the fifth decimal.
- Shiny tools: charts are redrawn when the window is resized (legends used
to overlap), and on Windows they are drawn with the cairo device when no
other device is installed, with greyscale anti-aliasing, so the dark theme
no longer shows smeared text, bright grid lines or coloured fringes on
text.
- GLM fitting tool: the downloaded model (RDS) no longer contains the Shiny
session. It used to hold every input, including a database password typed
on the Data tab, and was many times larger than the model itself.
- GLM fitting tool: an import that fails keeps the data imported before, so
the data and the fitted model stay together, and the Data tab says that
the last import failed.
- GLM fitting tool: the AIC of two stored models is marked "lower" only when
they use the same weights; otherwise the models are shown as not
comparable.
- GLM fitting tool: after an import, the response defaults to a column whose
name suggests one (such as claim_count or loss), and the chart variable to
a column that is not an ID. Columns already chosen are kept.
- GLM fitting tool: settings are saved as a plain text file
("glm_fitting_tool_settings.txt"), one "field: value" line per setting,
and loading one never runs code. Settings files saved as .rds by earlier
versions no longer load; save the settings again to get a text file.
- GLM fitting tool: the database server, port, database name, user and SQL
query are saved with the settings only when "Include database connection
details" is ticked (off by default), so a shared file does not disclose
internal infrastructure. The password is never saved.
- GLM fitting tool: in the "Data with predictions" CSV download, text cells
and column names that a spreadsheet would read as a formula (starting with
=, +, -, @, a tab or a carriage return) are written with a leading ', so
opening the file cannot run a formula from the uploaded data. Numbers are
unchanged.
- Claims simulator: values typed just after loading settings or an example
are no longer set back to the loaded values on a slow machine, and fields
that appear late (a slow browser) still start from the loaded values.
- A failed parallel run no longer leaves a socket connection open: the worker
that the future package relaunched after the error was never shut down,
and R later warned "closing unused connection" in the console.
- Distribution fitting tool: the Negative Binomial fit no longer falls back
to the Poisson (size 1e8) on overdispersed claim counts; it finds the
maximum likelihood size whenever the variance is above the mean, with or
without weights, and matches MASS::fitdistr().
- Distribution fitting tool: the columns are guessed again after the
separator or decimal mark is changed, while a column you chose is kept;
the slicing point and piecewise Pareto threshold sliders no longer show
overlapping tick labels.
- Claims simulator: simulations whose total is undefined (NaN) are no longer
dropped silently; the report, the summary and the Compare tab count them,
and the statistics state how many simulations they use. Normal severities
whose summed mean or standard deviation overflows add up the claims, as
simulating every claim does, instead of giving NaN.
- Claims simulator: very large values are shown as e.g. 1.000e+308 on the
Compare tab and in the implied moments instead of hundreds of digits.
- Claims simulator: switching a distribution or layer away and back, or
switching the custom seed off and on, keeps the values typed.
- Claims simulator: loading settings resets 'Truncate at zero' and clears
unused Pareto slices; quick 'Add slice' clicks each add a slice.
- Claims simulator: layout fixes for the navbar brand, the example list
(two examples have shorter names), the Compare table labels and the
return-period chart's "1 in 200" label, which stays inside the chart.
- Claims simulator: report charts of one simulation or of equal totals are
drawn sensibly; the 95% range for the mean is not below zero for totals
that cannot be negative and is labelled a normal approximation; the tail
count is now "Simulations at or beyond VaR 99.5%" and TVaR is documented
as the mean of the worst ceiling(n x (1 - p)) simulations.
- simulate_claims() and simulate_function(): the documentation of
number_of_reinstatements_used says that with an aggregate "exclude" layer
the reinstatements are counted before the exclusion.
- Claims simulator: the report and the Compare tab no longer fail for a run
whose totals include both +Inf and -Inf when a reinsurance structure is
set.
- Claims simulator: the report explains undefined (NaN) totals by their
cause (claims that overflowed to both +Inf and -Inf, or an infinite amount
meeting a layer with an infinite deductible or limit) instead of always
blaming an excluded layer with an infinite limit.
- Claims simulator: the Compare tab shows infinite values as Inf or -Inf in
every row, keeps the dash for undefined values, and says what both mean;
the report uses the singular wherever a count is one ("1 simulation").
- Shiny tools: the header stays on one row from 992 px wide, and on narrow
screens the app name gives way to the menu button instead of pushing it
off the page.
- Claims simulator: settings files are plain text (.txt) files that can be
read and compared, and loading one never runs code. Old .rds settings
files no longer load; save the settings again from this version.
- Claims simulator: the Compare tab's return-period chart is drawn with base
R graphics. It follows the app's light, dark or system theme and wraps its
legend at narrow widths; it no longer shows values on hover.
- Parallel runs of simulate_function() use the future package directly
instead of future.apply. Seeded results are unchanged, sequential and
parallel.
- simulate_function() and simulate_claims() return totals, gross claims
and reinstatements used at full precision; they were rounded to two
decimals, which distorted results for small amounts (e.g. in millions).
The app and the report round only for display, and small amounts keep
about three significant digits.
- Results change when an each-and-every-loss layer with limited
reinstatements is combined with an aggregate deductible. The aggregate
deductible now comes off the year's layer recoveries before the aggregate
limit and the reinstatement capacity cap them (the market convention):
three claims of 100 through 100 xs 0 with no reinstatements and an
aggregate deductible of 50 now cede 100, not 50. Reinstatements used are
counted after the deductible.
- The chance that all reinstatements are used, and the chance the layers are
exhausted, are exact rather than counting amounts just below the limit.
- Infinite distribution parameters, numbers of simulations, seeds, chunk
sizes, slice alphas and numbers of reinstatements are rejected with a
clear message. Inf is still allowed for the cap, deductibles, limits and
slice thresholds.
- apply_deductible_limit() stops on a negative deductible or limit, and its
documentation describes what it returns for each structure.
- PureIBNRGamma() and PureIBNRLNorm() count days on each date's own calendar
and clock, so Date, POSIXct and mixed inputs agree and results no longer
depend on the time zone or daylight saving (a mix of Date and POSIXct used
to report the whole period as unearned). Results can change in the second
decimal where the time zone had shifted them. Non-date input and expiry
dates before inception dates are errors.
- The capped mean, exposure curve, ILF and sliced distribution functions
stop with a clear error on non-positive parameters or negative caps,
instead of returning plausible-looking numbers. NA parameters still give
NA.
- ParetoCappedMean(), ExposureCurvePareto() and the sliced functions accept
zero-length input (returning numeric(0)) and keep matrix dimensions and
names.
- LNormCappedMean() no longer overflows to NaN or Inf for large sigmas, and
dSlicedGammaPareto() and dSlicedLNormPareto() no longer overflow for large
slice points or shapes. erf() is accurate near zero. The sliced functions
give the attritional distribution for an infinite slice point, instead of
NaN.
- The PureIBNR vignette computes its theoretical pure IBNR count rather than
hard-coding it.
- Distribution fitting tool: the Gamma fit gives the exact maximum
likelihood estimate at any scale; claims of 1e9 or more got a wrong shape.
- Fitting tools data upload: with a decimal comma, points are read as
thousands separators ("15.000,5" is 15000.5), and files with a separator
at the end of each row are read correctly (the columns were shifted by
one, or the file failed to load).
- GLM fitting tool: "." in a formula (also ". - x", ".^2") leaves out the
offset and weights columns, empty or single-valued columns, and text
columns with very many values such as IDs, and says which were left out.
- GLM fitting tool: explains formulas it cannot read, text responses for
non-binomial families, single-valued predictors and columns with no
values, instead of showing R errors; reads numbers with thousands
separators ("1,200") as numbers; chart labels mention exposure only when
the offset is used as one.
- Distribution fitting tool: the first piecewise Pareto layer includes the
smallest claim; all-zero claim counts give a clear message instead of
failed fits; very large and very small numbers are shown in scientific
notation, and large weighted totals in full.
NetSimR 0.3.0 (2026-09-15)
- Fewer dependencies: plotly, reactable, fitdistrplus, future.apply and
htmltools are no longer imported, so installing NetSimR installs 35
packages instead of 82. The charts of the three Shiny tools are
drawn with base R graphics, the tables are plain HTML, and the Poisson and
Negative Binomial fits of the distribution fitting tool are computed
directly, with the same results as before.
- Distribution fitting and GLM fitting tools: the charts follow the light or
dark theme; they no longer show values on hover or zoom. The data previews
show the first 100 rows in a table that scrolls both ways, instead of a
searchable table.
- Distribution fitting tool: the Poisson and Negative Binomial fits are the
exact maximum likelihood estimates (fitdistrplus's optimiser stopped
slightly short of the maximum). When the counts are not overdispersed the
Negative Binomial tends to the Poisson; its size is then set to 1e8, with a
note.
- Distribution fitting tool: suggests the Negative Binomial only when its
fit has the lower AIC (the suggestion could contradict the fit table); the
frequency histogram labels counts from 2^31 up in full (they read "NA")
and its last bin ends at the largest count; the mean excess chart explains
that it needs three different claim sizes instead of drawing an empty
chart.
- Fitting tools: the data preview shows the first 50 columns and opens at
once for wide files (1,000 columns took about 20 seconds).
- GLM fitting tool: the actual against predicted chart fits its left axis to
the values, so a response around 1,000 no longer draws as a flat line; its
bands read "18-24" rather than "(18.0006,23.9723]"; a text variable with
more than 100 values gives a message instead of hundreds of bars.
- Claims simulator: the Compare tab's return-period chart shows runs with
negative totals (e.g. a Normal severity with a negative mean); its y axis
used to start at zero. The chart's x axis reaches 1 in 1,000,000.
- Simulation report: runs with infinite totals (e.g. a Pareto severity with a
very small alpha) no longer fail with "need finite 'ylim' values". The
charts leave infinite totals out with a note, the tables show Inf, and a
ceded or net column that would be infinite minus infinite is left blank
instead of showing NaN. Very large amounts are shown in scientific
notation.
- simulate_function(): a seedValue given without seedSetBinary fixes the
seed (seedSetBinary defaults to TRUE when seedValue is given); it used to
be ignored.
- apply_deductible_limit(): an NA, missing or unknown reinsurance_structure,
or more than one, is an error that lists the options.
- The capped mean, exposure curve, ILF, sliced distribution and pure IBNR
functions stop with "argument must be numeric" for non-numeric input,
and all of them treat lengths that do not recycle as an error.
GammaCappedMean(), LNormCappedMean(), IGamma() and the ILF functions used
to recycle them with a warning. Results for valid input are unchanged.
- PureIBNRGamma() and PureIBNRLNorm(): one period with several parameter
values or valuation dates gives the right ratios on every row; rows after
the first used to repeat the first row's ratios.
- New vignette "Simulating claims with simulate_claims()". Help pages link
related functions, and internal objects are hidden from the index.
Vignette typos are corrected.
NetSimR 0.2.0 (2026-09-13)
- Fewer dependencies: rmarkdown, shinybusy, data.table, scales, shinyjs, MASS
and Pareto are no longer imported. The Gamma maximum likelihood fit and the
piecewise Pareto fit of the distribution fitting tool are now computed with
base R and give the same results as before.
- The database drivers of the GLM fitting tool (DBI, RMySQL, RSQLite, RODBC,
RPostgreSQL) moved from Imports to Suggests, so they are no longer installed
with the package. The tool shows a message naming the package to install when
a database type is selected whose driver is missing.
- The GLM and distribution fitting tools raise the shiny upload limit only while
they run and restore the option when they stop; loading the package no longer
changes options(shiny.maxRequestSize).
- GammaCappedMean() and LNormCappedMean() are computed with pgamma() and pnorm()
directly: no NaN for large shapes (gamma() overflow) and no loss of precision
for caps far above or far below the mean. Results elsewhere are unchanged up
to floating point.
- ParetoCappedMean() with shape == 1 uses the exact limit
scale * (1 + log(cap / scale)) instead of averaging shape +/- 0.0001; values
change by less than 1e-6 relative to before.
- An infinite cap now gives the uncapped mean (or Inf when the mean is infinite)
in the capped mean, exposure curve and ILF functions, instead of NaN.
- Distribution fitting tool: the mean excess function plot now shows the
empirical mean excess of the claims (mean of the claims above each point,
less the point) instead of a mean over the plotted grid points; fitting
errors are shown in the app instead of the console; the severity cdf plots
are labelled correctly when the log scale is off.
- GLM fitting tool: model fitting errors are shown in the app.
- IGamma() documentation corrected: it is the upper incomplete gamma function.
- Added examples to run_shiny_glm_fitting_tool() and
run_shiny_distribution_fitting_tool(), and a testthat suite.
- Claims simulator: redesigned interface with light, dark and system themes;
a Report tab that shows the full report inside the app; a Compare tab that
keeps up to six runs with side-by-side metrics and a return-period chart;
save and load of settings, and three built-in examples.
- Claims simulator inputs: clearer parameter labels, the implied mean and
standard deviation of each distribution shown while typing, number boxes for
the simulations and seed, and checks that name any missing or invalid
setting before a run (including whole-number claim counts and increasing
Pareto slice thresholds).
- New option to truncate Normal claim sizes at zero, so no claim is negative
(argument sevTruncateAtZero of simulate_function()).
- simulate_function() also returns the gross total claims before reinsurance,
works outside a Shiny session, reuses running parallel workers and has
examples.
- The simulation report is built in R and no longer needs pandoc or
rmarkdown. It adds gross, ceded and net figures, layer metrics, simulation
accuracy, claim frequency and return periods, and follows the light or dark
theme. TVaR now averages exactly the worst share of simulations.
- Shiny's built-in busy indicators replace the shinybusy package in the
simulator and the GLM fitting tool.
- simulate_function() checks every distribution parameter against its range
(e.g. Poisson mean at least 0, Binomial probability between 0 and 1,
positive Gamma, Exponential and Pareto parameters) and checks that
deductibles, the cap and reinstatements are not negative and that limits
are positive, instead of failing or returning NA part-way through a run.
The Normal mean and the Log-Normal mu may now be negative, and the implied
moments are shown for them.
- simulate_function() random numbers: every chunk of simulations has its own
L'Ecuyer-CMRG stream, so a run gives the same results in sequence and in
parallel, and a fixed seed no longer changes the caller's random number
stream. Results for a given seed differ from earlier versions.
- simulate_function() is faster: Pareto slices are drawn in one step; when
nothing acts on individual claims, each year's total is drawn at once for
Normal, Gamma, Exponential and fixed severities; with the new argument
gross = FALSE and an each-and-every-loss layer only the claims that reach
the layer are drawn. The chunk size adapts to the expected number of
claims (new default chunk_size = NULL), which keeps memory use flat for
high claim frequencies. The new argument shortcuts = FALSE turns the
shortcuts off.
- simulate_function() has defaults for every optional argument, a progress
argument for progress reporting, and no longer calls Shiny itself.
- The Normal severity has its own parameter ids in the simulator, so values
no longer carry over between the Normal and the Log-Normal. Settings files
saved by earlier versions still load.
- Distribution fitting tool: redesigned interface in the style of the
simulator, with light, dark and system themes (system by default), summary
tiles, result tables that mark the best fit, and charts that follow the
theme. Messages replace errors when a column cannot be used, and the column
lists default to likely count, amount and weight columns.
- Distribution fitting tool data upload: decimal comma option, thousands
separators such as "1,234.5" read as numbers, a UTF-8 byte order mark no
longer ends up in the first column name, column names are kept as in the
file, and the preview is capped at 10,000 rows.
- Distribution fitting tool fixes: weighted frequency fits keep each count
with the weight of its own row, and the weighted choice is fixed when the
analysis runs; the mean, variance and suggestion use the weights; claim
counts and weights must be whole numbers (non-integer counts gave a
meaningless Negative Binomial fit). The Kolmogorov-Smirnov figures are now
the distance of stats::ks.test() in every tab (before, a scaled statistic
based on rank / (n + 1)). The single Pareto cdf is zero below its threshold
instead of negative. The sliced LogNormal body allows a negative mu (claims
below 1 were fitted with mu held at 0.0001). The Gamma fit no longer fails
on small whole numbers or claims far below 1. Severity cdfs of claims below
1,000 are drawn on a fine grid instead of whole numbers, and the log scale
uses a log axis.
- GLM fitting tool: redesigned interface in the style of the simulator, with
light, dark and system themes (system by default); CSV separator, decimal
and quote options; links offered per family with the family's default;
column buttons that add terms to the formula; a coefficient table with
relativities or odds ratios; tiles for AIC, deviance explained and
dispersion; and download buttons that appear once a model is fitted.
- GLM fitting tool fixes: an offset can be the log of an exposure column (the
column was always used raw, so an exposure gave a wrong model); the actual
against predicted chart uses the fitted model's columns, divides by the
exposure only when it is one, weighs rows by the weights, and offers bands
of equal counts. A stored model keeps the AIC, family, link and offset of
the model it was fitted with (before, the AIC of whatever was fitted last
was shown next to the saved formula) and marks the lower AIC when the
models are comparable. Predictions no longer fail on a factor level found
only in rows the fit left out. Fit warnings are shown instead of hidden,
text binomial responses are read as factors, "." stands for every other
column, and import errors show the actual error in a dialog that can be
closed.
- GLM fitting tool settings file: only the import options and model choices
are kept, never the database password; loading checks the file and applies
the column choices once the data is imported. Files saved by earlier
versions still load.
- Distribution fitting tool sliders: slicing points start at the 75th and
95th percentiles with a fine step, moving the first past the second moves
only the second, and piecewise Pareto thresholds start at the 50th, 75th,
87.5th, ... percentiles and are kept when the number of thresholds changes.
- Claims simulator: up to six Pareto slices, added with an Add slice button
and removed with a button on each slice; removing a slice moves the later
slices up. The switch and the number-of-slices list are gone. Settings
files saved with the old switch still load.
- New simulate_claims(): a simpler interface to simulate_function() with
short argument names (n_sims, frequency, severity_params, eel_layer,
agg_limit, ...), distributions chosen by name in any case, parameters
that may be named, and defaults for every optional feature.
- ParetoCappedMean() now returns the cap when it is at or below the scale
(it gave wrong values, 0 or NaN before), which also fixes
ExposureCurvePareto() and ILFPareto() for small limits, and it stays
accurate for shapes very close to 1.
- The sliced Gamma-Pareto and LogNormal-Pareto functions work with vectors
of parameters (extra values were silently dropped, and the exposure curve
could return wrong values). qSlicedGammaPareto() and qSlicedLNormPareto()
stay accurate for probabilities very close to 1. IGamma() no longer
returns Inf for large shapes when the result is finite.
- simulate_claims() checks that gross, shortcuts, parallel and
truncate_at_zero are a single TRUE or FALSE, and gives a clearer error
when distribution parameters mix named and unnamed values.
- GLM fitting tool: the actual against predicted chart codes a binomial
response as glm() does, so a text response with more than two values
shows the share of responses other than the first value, and an all-TRUE
logical response is no longer treated as failures. The app says which
value it takes as failure when a text response has more than two values.
- GLM fitting tool: the download section explains that the saved model
refers to its data as model_data, so update() needs the data assigned to
model_data or passed as data =.
- Distribution fitting tool: the sliced Pareto table note says that the
alpha of the layer between the slicing points is a least-squares fit; only
the tail alphas are maximum likelihood estimates.
- Claims simulator: a failed run keeps the previous results, downloads and
results tabs, and shows the error.
- Claims simulator: the app restores the user's future plan when the session
ends or a run fails, and only shuts down workers it started.
- Seeds outside the integer range are rejected with a clear message, and a
fixed seed gives the same results whatever the caller's RNGkind().
- Claims simulator: the number of simulations input accepts 1 to
10,000,000, the same range as the validation.
- bslib 0.9.0 or later is required.
NetSimR 0.1.6 (2026-07-12)
- Updated the shiny simulation tool.
NetSimR 0.1.5 (2023-12-02)
- Added database name in inputs of glm database
- Increased the maximum csv file size for glm builder and distribution fitting to 64gb
- Fixed bug loading inputs for GLM builder
- Added piecewise pareto fit to distribution fitting tool
NetSimR 0.1.4 (2023-10-24)
- Added port selection for sql and prioritised csv input in Shiny glm fitting tool.
- Added distribution fitting tool
NetSimR 0.1.3 (2023-09-28)
- Added Shiny glm fitting tool.
NetSimR 0.1.2 (2023-01-17)
- Added shiny simulation tool.
NetSimR 0.1.1 (2021-04-22)
- Updates a dependency to the rmarkdown package.
NetSimR 0.1.0 (2019-08-20)
- First official release of the package on CRAN. The accompanying articles
are listed in the package description.