mleB2B | R Documentation |
Bit error counts modeled as independent binary decisions result in a
log-likelihood dependent on the bit error probability. This function
inserts the supplied bit error probability function into the binomial
log-likelihood function, and passes that to stats4::mle, which ultimately
calls stats::optim. The function will optimize a binomial probability
of the form $r = N * P( x_1, x_2, ..., x_n, a_1, a_2, ... a_k)$, where the
$x_i$ are variables from data
, and the $a_j$ are parameters to be
estimated.
mleB2B(data = NULL, Errors, N, f, fparms, start, method = "Nelder-Mead", ...)
data |
a data frame or list with named components. If a list, each component must be the same length (just like a data frame). This is not checked, so usual rules of recycling will apply. Partial matching not performed, so you must use full column names. |
Errors |
A vector of error counts, or a string identifying a column of
|
N |
A single number, or a vector of the same length as
|
f |
A function that predicts the probability of errors. |
fparms |
a list of named components that are the arguments of |
start |
Named list of initial values for the parameters of |
method |
Optimization method. See |
... |
Optional arguments to be passed to mle. |
The function estimates the parameters identified in start
in the
constructed call to f
. For a function f
of the form
fun( SNR, x2, x3, B2B, offset)
A call of the form
mleB2B( data=df, Errors="r", N="trials", f=fun,
fparm=list( SNR="s", x2=1, x3="noise"), start=list(B2B=1, offset=2))
will construct a call to mle
of the form:
mle( minuslogl=ll, start=start, nobs=length( Errors), method=method)
where the function ll
is defined as
ll <- function( a, b) -sum( dbinom( df$r, df$n,
fun( SNR=df$s, x2=1, x3=df$noise, B2B=B2B, offset=offset),
log=TRUE))
An object of class stats4::mle with the parameters
identified in start
estimated.
stats4::mle()
, stats::optim()
QPSKdB.B2B <- B2BConvert( QPSKdB) O1 <- 3 B1 <- 16 s <- 0:20 N <- 1000000 r <- rbinom( length( s), N, QPSKdB.B2B( s, B1, O1)) df <- data.frame( Errors=r, SNR=s, N=N) llsb2 <- function( b2b, offset) -sum( dbinom( r, N, QPSKdB.B2B( s, b2b, offset), log=TRUE)) mle1 <- stats4::mle( llsb2, start=c( b2b=20, offset=0), nobs=length(s), method="Nelder-Mead") est1 <- mleB2B( data=df, Errors="Errors", N=N, f=QPSKdB.B2B, fparms=list( x="SNR"), start=c(b2b=20, offset=0))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.