| vmideal | R Documentation |
Density, distribution function, quantile function, and random generation for the ideal distribution of visual meteor magnitudes.
dvmideal(m, lm, psi, log = FALSE, perception.fun = NULL)
pvmideal(m, lm, psi, lower.tail = TRUE, log = FALSE, perception.fun = NULL)
qvmideal(p, lm, psi, lower.tail = TRUE, perception.fun = NULL)
rvmideal(n, lm, psi, perception.fun = NULL)
cvmideal(lm, psi, log = FALSE, perception.fun = NULL)
m |
integer; visual meteor magnitude. |
lm |
numeric; limiting magnitude. |
psi |
numeric; the location parameter of the probability distribution. |
log |
logical; if |
perception.fun |
function; optional perception probability function. The default is vmperception. |
lower.tail |
logical; if |
p |
numeric; probability. |
n |
numeric; count of meteor magnitudes. |
The density of the ideal distribution of meteor magnitudes is
{\displaystyle f(m) = \frac{\mathrm{d}p}{\mathrm{d}m} = \frac{3}{2} \, \log(r) \sqrt{\frac{r^{3 \, \psi + 2 \, m}}{(r^\psi + r^m)^5}}}
where m is the meteor magnitude, r = 10^{0.4} \approx 2.51189 \dots is a constant, and
\psi is the only parameter of this magnitude distribution.
In visual meteor observations, magnitudes are usually estimated as integer values. Hence, this distribution is discrete and its probability mass function is given by
P[M = m] \sim g(m) \, \int_{m-0.5}^{m+0.5} f(m) \, \mathrm{d}m \, ,
where g(m) denotes the perception probability.
Thus, the distribution is the product of the
perception probabilities and the
underlying ideal distribution of meteor magnitudes.
If a perception probability function perception.fun is supplied,
it must have the signature function(x) and return the perception probabilities of
the difference x between the limiting magnitude and the meteor magnitude.
If x >= 15.0, the perception.fun function should return a perception probability of 1.0.
The argument perception.fun is resolved using match.fun.
dvmideal: density
pvmideal: distribution function
qvmideal: quantile function
rvmideal: random generation
cvmideal: partial convolution of the ideal distribution of meteor magnitudes
with the perception probabilities.
The length of the result is determined by n for rvmideal, and is the maximum
of the lengths of the numeric vector arguments for the other functions.
All arguments are vectorized; standard R recycling rules apply.
Since the distribution is discrete, qvmideal and rvmideal always return integer values.
qvmideal may return NaN with a warning.
Richter, J. (2018) About the mass and magnitude distributions of meteor showers. WGN, Journal of the International Meteor Organization, vol. 46, no. 1, p. 34-38
mideal vmperception
N <- 100
psi <- 5.0
limmag <- 6.5
(m <- seq(6, -4))
# discrete density of `N` meteor magnitudes
(freq <- round(N * dvmideal(m, limmag, psi)))
# log likelihood function
lld <- function(psi) {
-sum(freq * dvmideal(m, limmag, psi, log=TRUE))
}
# maximum likelihood estimation (MLE) of psi
est <- optim(2, lld, method='Brent', lower=0, upper=8, hessian=TRUE)
# estimations
est$par # mean of psi
# generate random meteor magnitudes
m <- rvmideal(N, limmag, psi)
# log likelihood function
llr <- function(psi) {
-sum(dvmideal(m, limmag, psi, log=TRUE))
}
# maximum likelihood estimation (MLE) of psi
est <- optim(2, llr, method='Brent', lower=0, upper=8, hessian=TRUE)
# estimations
est$par # mean of psi
sqrt(1/est$hessian[1][1]) # standard deviation of psi
m <- seq(6, -4, -1)
p <- vismeteor::dvmideal(m, limmag, psi)
barplot(
p,
names.arg = m,
main = paste0('Density (psi = ', psi, ', limmag = ', limmag, ')'),
col = "blue",
xlab = 'm',
ylab = 'p',
border = "blue",
space = 0.5
)
axis(side = 2, at = pretty(p))
plot(
function(lm) vismeteor::cvmideal(lm, psi, log = TRUE),
-5, 10,
main = paste0(
'Partial convolution of the ideal meteor magnitude distribution\n',
'with the perception probabilities (psi = ', psi, ')'
),
col = "blue",
xlab = 'lm',
ylab = 'log(rate)'
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.