Precision/FullSimplify
- To: mathgroup at smc.vnet.net
- Subject: [mg56230] Precision/FullSimplify
- From: leigh pascoe <leigh at cephb.fr>
- Date: Wed, 20 Apr 2005 05:30:01 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
Gentle beings,
I hope the method of cutting and pasting from Mathematica shown below is
acceptable. If not I would appreciate instructions on how to do it in a
more acceptable fashion.
Consider the likelihood equations for two parameters x and y, based on
experimental data (a,b,c,d,e,f,g) that are observed numbers (integers).
The likelihood and derivatives are defined in Ma by:
L:=(b+d+f)*Log[x]+(e+g)*Log[y]-(a+b)*Log[1+x]-(f+g)*Log[x+y]-(c+d+e)*Log[1+2*x+y]
D[L,x]
D[L,y]
Yielding the likelihood equations:
eq1=(b+d+f)/x-(a+b)/(1+x)-2*(c+d+e)/(1+2*x+y)-(f+g)/(x+y)\[Equal]0
eq2=(e+g)/y-(c+d+e)/(1+2*x+y)-(f+g)/(x+y)\[Equal]0
which I would like to solve for the maximum likelihood estimates of the
parameters and then evaluate for different data sets. Firstly define the
information matrix:
m11:=-D[D[L,x],x]
m12:=-D[D[L,x],y]
m21:=-D[D[L,y],x]
m22:=-D[D[L,y],y]
m:={{m11,m12},{m21,m22}}//MatrixForm
m
which can be inverted when the equations are solved to give the
variances of the estimates. To solve the equations I tried
Sols=Solve[{eq1,eq2},{x,y}]
Which gives me the answers I want, however the expressions are quite
large. By inspection I find that the last solution is the one that
corresponds to the maximum likelihood. However I run into problems
evaluating the resulting expression. If I try to evaluate the last
solution numerically I get a complex number, I assume due to rounding
errors. e.g.
N[Sols] /.{a->50,b->50,c\[Rule]2,d\[Rule]4,e->100,f\[Rule]2,g->100}
produces
\!\({{y \[Rule] \(-5.336646740150529`\) +
1.2546145287986817`*^-14\ \[ImaginaryI],
x \[Rule] \(\(3.8558775093812896`\)\(\[InvisibleSpace]\)\) -
2.220446049250313`*^-16\ \[ImaginaryI]}, {y \[Rule] \
\(-1.067199413695643`\) - 3.6306168234410265`*^-14\ \[ImaginaryI],
x \[Rule] \(-0.4135698170735974`\) -
6.661338147750939`*^-16\ \[ImaginaryI]}, {y \[Rule] \(\(50.`\)\(\
\[InvisibleSpace]\)\) + 1.1823875212257917`*^-14\ \[ImaginaryI],
x \[Rule] \(\(1.`\)\(\[InvisibleSpace]\)\) +
6.661338147750939`*^-16\ \[ImaginaryI]}}\)
The last solution is the correct one but without the addition of the
small complex part. I then tried
N[Sols, $MaxPrecision] /.{a->50,b->50,c\[Rule]2,d\[Rule]4,e->100,f\[Rule]2,
g->100}
Which gives me presumably exact expressions, but it is still not clear
that they are real. So I tried
FullSimplify[ N[Sols, $MaxPrecision]
/.{a->50,b->50,c\[Rule]2,d\[Rule]4,e->100,f\[Rule]2, g->100}]
N[%]
{{y\[Rule]-5.33665,x\[Rule]3.85588},{y\[Rule]-1.0672,
x\[Rule]-0.41357},{y\[Rule]50.,x\[Rule]1.}}
and the last solution appears to be the one I want, but it takes a long
time. Now let's try this with a different data set.
FullSimplify[
N[Sols, $MaxPrecision] /.{a\[Rule]42,b\[Rule]90,c\[Rule]5,d\[Rule]29,
e\[Rule]49,f\[Rule]6,g\[Rule]17}]
This one seems to hang forever. In any case there must be a better way
of evaluating the solutions for different data sets. Should I be telling
Mathematica to look for real solutions, using NSolve, substituting in
eq1 and eq2 before solving?? It is preferable to generate all the
solutions before choosing the one that gives the maximum likelihood. Any
suggestions, observations, help will be greatly appreciated.
Leigh
(Inexperienced User)
- Follow-Ups:
- Re: Precision/FullSimplify
- From: yehuda ben-shimol <bsyehuda@gmail.com>
- Re: Precision/FullSimplify