Estimate coefficients of a polynomial in Gaussian-based model: $$\mathrm{poly}(x, \alpha) N(x; \mu, \sigma^2)$$, where \(\alpha\) is a coefficient vector, \(\mu\) and \(\sigma\) are a mean and a standard deviation of Gaussian distribution: $$N(x; \mu, \sigma^2) :=\frac{1}{\sigma \sqrt{2\pi}} \exp\left(-\frac{(x-\mu)^2}{2\sigma^2}\right) $$
Using data and optionally its frequencies freq,
and a degree of a polynomial,
a mean mu and a standard deviation sig of Gausian distribution,
it computes the coefficients of a polynomial, along with
Akaike Information Criterion(AIC) and an accuracy information from
an underlying SDP solver.
In general, the smaller the AIC is, the better the model is.
An accuracy around 1e-7 is a good indication for a computational
result of coefficients estimation.
gauss_est(deg, mu, sig, data, freq, verbose, stepsize)A list of deg, mu, sig, aic, accuracy,
coefficient vector.
A degree of polynomial, which is positive even integer.
A mean of Gaussian distribution.
A standard deviation of Gaussian distribution, which is positive.
A numeric vector of a data set to be estimated.
A numeric vector of frequencies for a data set data.
The default value is NULL, which indicates that all frequencies are
equally one.
If freq is not NULL, then it should be the same length as data, and
all values should be positive integers.
If TRUE, it shows a detail information about SDP solver.
It designates the stepsize for SDP solver.
If the problem is easy, i.e., the number of a data set are small and a degree
of a polynomial is small, then, for example, 0.9 might be ok.
If it looks difficult, then c(0.5, 0.3) might work.
estimate.gaussmodel()
rlst <- gauss_est(4, 0, 1, mix2gauss$n200, NULL, FALSE, c(0.7, 0.4))
Run the code above in your browser using DataLab