Smooth pdqr-function
Smooth pdqr-function using random sampling and corresponding new_*() function.
form_smooth(f, n_sample = 10000, args_new = list())
General idea of smoothing is to preserve "sampling randomness" as much as reasonably possible while creating more "smooth" probability mass or density function.
At first step, sample of size n_sample
is generated from distribution
represented by f
. Then, based on the sample, "continuous" d-function is
created with new_d()
and arguments from args_new
list. To account for
density()'s default behavior of "stretching range" by
adding small tails, support of d-function is forced to be
equal to f
's support (this is done with form_resupport()
and method
"reflect"). Output represents a "smooth" version of f
as d-function.
Final output is computed by modifying "y" or "prob" column of f
's "x_tbl" metadata to be proportional to values of "smooth" output at
corresponding points from "x" column. This way output distribution has
exactly the same "x" grid as f
but "more smooth" nature.
Other form functions:
form_estimate()
,
form_mix()
,
form_regrid()
,
form_resupport()
,
form_retype()
,
form_tails()
,
form_trans()
set.seed(101) # Type "discrete" bad_dis <- new_d( data.frame(x = sort(runif(100)), prob = runif(100)), type = "discrete" ) smoothed_dis <- form_smooth(bad_dis) plot(bad_dis) lines(smoothed_dis, col = "blue") # Type "continuous" bad_con <- new_d( data.frame(x = sort(runif(100)), y = runif(100)), type = "continuous" ) smoothed_con <- form_smooth(bad_con) plot(bad_con) lines(smoothed_con, col = "blue")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.