root/doc/html/arx_8h-source.html @ 269

Revision 269, 18.8 kB (checked in by smidl, 15 years ago)

doc

Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3<title>mixpp: arx.h Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5<link href="tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.6 -->
8<div class="navigation" id="top">
9  <div class="tabs">
10    <ul>
11      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
12      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
13      <li><a href="modules.html"><span>Modules</span></a></li>
14      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
15      <li><a href="classes.html"><span>Classes</span></a></li>
16      <li class="current"><a href="files.html"><span>Files</span></a></li>
17    </ul>
18  </div>
19<h1>arx.h</h1><a href="arx_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001
20<a name="l00013"></a>00013 <span class="preprocessor">#ifndef AR_H</span>
21<a name="l00014"></a>00014 <span class="preprocessor"></span><span class="preprocessor">#define AR_H</span>
22<a name="l00015"></a>00015 <span class="preprocessor"></span>
23<a name="l00016"></a>00016 <span class="preprocessor">#include "../stat/libFN.h"</span>
24<a name="l00017"></a>00017 <span class="preprocessor">#include "../stat/libEF.h"</span>
25<a name="l00018"></a>00018
26<a name="l00019"></a>00019 <span class="keyword">namespace </span>bdm{
27<a name="l00020"></a>00020
28<a name="l00035"></a><a class="code" href="classbdm_1_1ARX.html">00035</a> <span class="keyword">class </span><a class="code" href="classbdm_1_1ARX.html" title="Linear Autoregressive model with Gaussian noise.">ARX</a>: <span class="keyword">public</span> <a class="code" href="classbdm_1_1BMEF.html" title="Estimator for Exponential family.">BMEF</a> {
29<a name="l00036"></a>00036 <span class="keyword">protected</span>:
30<a name="l00038"></a><a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026">00038</a>         <a class="code" href="classbdm_1_1egiw.html" title="Gauss-inverse-Wishart density stored in LD form.">egiw</a> <a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>;
31<a name="l00040"></a><a class="code" href="classbdm_1_1ARX.html#de5b7d83ff5d3f5af2f80068db0abdfd">00040</a>         <a class="code" href="classldmat.html" title="Matrix stored in LD form, (commonly known as UD).">ldmat</a> &amp;<a class="code" href="classbdm_1_1ARX.html#de5b7d83ff5d3f5af2f80068db0abdfd" title="cached value of est.V">V</a>;
32<a name="l00042"></a><a class="code" href="classbdm_1_1ARX.html#740b0582f180ba13cae91d66e9bdb67f">00042</a>         <span class="keywordtype">double</span> &amp;<a class="code" href="classbdm_1_1ARX.html#740b0582f180ba13cae91d66e9bdb67f" title="cached value of est.nu">nu</a>;
33<a name="l00043"></a>00043 <span class="keyword">public</span>:
34<a name="l00045"></a><a class="code" href="classbdm_1_1ARX.html#44914d0b259204b3446db82b989bd626">00045</a>         <a class="code" href="classbdm_1_1ARX.html#44914d0b259204b3446db82b989bd626" title="Full constructor.">ARX</a> ( <span class="keyword">const</span> <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> &amp;<a class="code" href="classbdm_1_1BM.html#18d6db4af8ee42077741d9e3618153ca" title="Random variable of the posterior.">rv</a>, <span class="keyword">const</span> mat &amp;V0, <span class="keyword">const</span> <span class="keywordtype">double</span> &amp;nu0, <span class="keyword">const</span> <span class="keywordtype">double</span> frg0=1.0 ) : <a class="code" href="classbdm_1_1BMEF.html" title="Estimator for Exponential family.">BMEF</a> ( rv,frg0 ),<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a> ( rv,V0,nu0 ), <a class="code" href="classbdm_1_1ARX.html#de5b7d83ff5d3f5af2f80068db0abdfd" title="cached value of est.V">V</a> ( <a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>._V() ), <a class="code" href="classbdm_1_1ARX.html#740b0582f180ba13cae91d66e9bdb67f" title="cached value of est.nu">nu</a> ( <a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>._nu() )
35<a name="l00046"></a>00046         {<a class="code" href="classbdm_1_1BMEF.html#06e7b3ac03e10017d4288c76888e2865" title="cached value of lognc() in the previous step (used in evaluation of ll )">last_lognc</a>=<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>.<a class="code" href="classbdm_1_1egiw.html#41d72ba7b2abc8a9a4209ffa98ed5633" title="logarithm of the normalizing constant, ">lognc</a>();};
36<a name="l00047"></a>00047
37<a name="l00049"></a><a class="code" href="classbdm_1_1ARX.html#73a55a3d66bfbeeee4df6c2ae40920ed">00049</a>         <a class="code" href="classbdm_1_1ARX.html#44914d0b259204b3446db82b989bd626" title="Full constructor.">ARX</a> ( <span class="keyword">const</span> <a class="code" href="classbdm_1_1ARX.html" title="Linear Autoregressive model with Gaussian noise.">ARX</a> &amp;A0 ) : <a class="code" href="classbdm_1_1BMEF.html" title="Estimator for Exponential family.">BMEF</a> ( A0),<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a> ( <a class="code" href="classbdm_1_1BM.html#18d6db4af8ee42077741d9e3618153ca" title="Random variable of the posterior.">rv</a>,A0.<a class="code" href="classbdm_1_1ARX.html#de5b7d83ff5d3f5af2f80068db0abdfd" title="cached value of est.V">V</a>,A0.<a class="code" href="classbdm_1_1ARX.html#740b0582f180ba13cae91d66e9bdb67f" title="cached value of est.nu">nu</a> ), <a class="code" href="classbdm_1_1ARX.html#de5b7d83ff5d3f5af2f80068db0abdfd" title="cached value of est.V">V</a> ( <a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>._V() ), <a class="code" href="classbdm_1_1ARX.html#740b0582f180ba13cae91d66e9bdb67f" title="cached value of est.nu">nu</a> ( <a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>._nu() ) {};
38<a name="l00050"></a>00050
39<a name="l00052"></a>00052         <a class="code" href="classbdm_1_1ARX.html" title="Linear Autoregressive model with Gaussian noise.">ARX</a>* <a class="code" href="classbdm_1_1ARX.html#20ff2de8d862f28de7da83444d65bcdb" title="Auxiliary function.">_copy_</a>(<span class="keywordtype">bool</span> changerv=<span class="keyword">false</span>);
40<a name="l00053"></a>00053         
41<a name="l00054"></a>00054 <span class="comment">//      //! Set parameters given by moments, \c mu (mean of theta), \c R (mean of R) and \c C (variance of theta)</span>
42<a name="l00055"></a>00055 <span class="comment">//      void set_parameters ( const vec &amp;mu, const mat &amp;R, const mat &amp;C, double dfm){};</span>
43<a name="l00057"></a><a class="code" href="classbdm_1_1ARX.html#cab0a1de5355b1027d24fd3d4862c9b0">00057</a> <span class="comment"></span>        <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1ARX.html#cab0a1de5355b1027d24fd3d4862c9b0" title="Set sufficient statistics.">set_parameters</a> ( <span class="keyword">const</span> <a class="code" href="classldmat.html" title="Matrix stored in LD form, (commonly known as UD).">ldmat</a> &amp;V0, <span class="keyword">const</span> <span class="keywordtype">double</span> &amp;nu0 )
44<a name="l00058"></a>00058         {<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>.<a class="code" href="classbdm_1_1egiw.html#15792f3112e5cf67d572f491b09324c8" title="returns a pointer to the internal statistics. Use with Care!">_V</a>() =V0;<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>.<a class="code" href="classbdm_1_1egiw.html#a025ee710274ca142dd0ae978735ad4a" title="returns a pointer to the internal statistics. Use with Care!">_nu</a>() =nu0;<a class="code" href="classbdm_1_1BMEF.html#06e7b3ac03e10017d4288c76888e2865" title="cached value of lognc() in the previous step (used in evaluation of ll )">last_lognc</a>=<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>.<a class="code" href="classbdm_1_1egiw.html#41d72ba7b2abc8a9a4209ffa98ed5633" title="logarithm of the normalizing constant, ">lognc</a>();}
45<a name="l00059"></a>00059         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1ARX.html#539f9d0127423c94b912708d390e67b8" title="get statistics from another model">set_statistics</a> ( <span class="keyword">const</span> <a class="code" href="classbdm_1_1BMEF.html" title="Estimator for Exponential family.">BMEF</a>* BM0 );
46<a name="l00061"></a><a class="code" href="classbdm_1_1ARX.html#1974409e022ea1efb3404b5c2fde66ad">00061</a>         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1ARX.html#1974409e022ea1efb3404b5c2fde66ad" title="Returns sufficient statistics.">get_parameters</a> ( mat &amp;V0, <span class="keywordtype">double</span> &amp;nu0 ) {V0=<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>.<a class="code" href="classbdm_1_1egiw.html#15792f3112e5cf67d572f491b09324c8" title="returns a pointer to the internal statistics. Use with Care!">_V</a>().<a class="code" href="classldmat.html#2c1ebc071de4bafbba55b80afd8a7e8e" title="Conversion to full matrix.">to_mat</a>(); nu0=<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>.<a class="code" href="classbdm_1_1egiw.html#a025ee710274ca142dd0ae978735ad4a" title="returns a pointer to the internal statistics. Use with Care!">_nu</a>();}
47<a name="l00063"></a>00063         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1ARX.html#17e7fe14654ab3c449846c3f43e66169" title="Here .">bayes</a> ( <span class="keyword">const</span> vec &amp;dt, <span class="keyword">const</span> <span class="keywordtype">double</span> w );
48<a name="l00064"></a><a class="code" href="classbdm_1_1ARX.html#8bdf2974052e8ce74eb0d4f3791c58a3">00064</a>         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1ARX.html#17e7fe14654ab3c449846c3f43e66169" title="Here .">bayes</a> ( <span class="keyword">const</span> vec &amp;dt ) {<a class="code" href="classbdm_1_1ARX.html#17e7fe14654ab3c449846c3f43e66169" title="Here .">bayes</a> ( dt,1.0 );};
49<a name="l00065"></a><a class="code" href="classbdm_1_1ARX.html#16797df43f85f1ddbe9d64fd6d82c25d">00065</a>         <span class="keyword">const</span> <a class="code" href="classbdm_1_1epdf.html" title="Probability density function with numerical statistics, e.g. posterior density.">epdf</a>&amp; <a class="code" href="classbdm_1_1ARX.html#16797df43f85f1ddbe9d64fd6d82c25d" title="Returns a reference to the epdf representing posterior density on parameters.">_epdf</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>;}
50<a name="l00066"></a>00066         <span class="keywordtype">double</span> <a class="code" href="classbdm_1_1ARX.html#080a7e531e3aa06694112863b15bc6a4">logpred</a> ( <span class="keyword">const</span> vec &amp;dt ) <span class="keyword">const</span>;
51<a name="l00067"></a><a class="code" href="classbdm_1_1ARX.html#e86ab499b116b837d3163ec852961eca">00067</a>         <span class="keywordtype">void</span> <a class="code" href="classbdm_1_1ARX.html#e86ab499b116b837d3163ec852961eca" title="Flatten the posterior according to the given BMEF (of the same type!).">flatten</a> (<span class="keyword">const</span> <a class="code" href="classbdm_1_1BMEF.html" title="Estimator for Exponential family.">BMEF</a>* B ) {
52<a name="l00068"></a>00068                 <span class="keyword">const</span> <a class="code" href="classbdm_1_1ARX.html" title="Linear Autoregressive model with Gaussian noise.">ARX</a>* A=<span class="keyword">dynamic_cast&lt;</span><span class="keyword">const </span><a class="code" href="classbdm_1_1ARX.html" title="Linear Autoregressive model with Gaussian noise.">ARX</a>*<span class="keyword">&gt;</span>(B);
53<a name="l00069"></a>00069                 <span class="comment">// nu should be equal to B.nu</span>
54<a name="l00070"></a>00070                 <a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>.<a class="code" href="classbdm_1_1egiw.html#8e610e95401a11baf34f65e16ecd87be" title="Power of the density, used e.g. to flatten the density.">pow</a> ( A-&gt;<a class="code" href="classbdm_1_1ARX.html#740b0582f180ba13cae91d66e9bdb67f" title="cached value of est.nu">nu</a>/<a class="code" href="classbdm_1_1ARX.html#740b0582f180ba13cae91d66e9bdb67f" title="cached value of est.nu">nu</a>);
55<a name="l00071"></a>00071                 <span class="keywordflow">if</span>(<a class="code" href="classbdm_1_1BM.html#faff0ad12556fe7dc0e2807d4fd938ee" title="If true, the filter will compute likelihood of the data record and store it in ll...">evalll</a>){<a class="code" href="classbdm_1_1BMEF.html#06e7b3ac03e10017d4288c76888e2865" title="cached value of lognc() in the previous step (used in evaluation of ll )">last_lognc</a>=<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a>.<a class="code" href="classbdm_1_1egiw.html#41d72ba7b2abc8a9a4209ffa98ed5633" title="logarithm of the normalizing constant, ">lognc</a>();}
56<a name="l00072"></a>00072         }
57<a name="l00074"></a>00074         <a class="code" href="classbdm_1_1enorm.html" title="Gaussian density with positive definite (decomposed) covariance matrix.">enorm&lt;ldmat&gt;</a>* <a class="code" href="classbdm_1_1ARX.html#7c8d1fe774fe1da50293d50ad8aef43d" title="Conditioned version of the predictor.">predictor</a>(<span class="keyword">const</span> <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> &amp;rv0, <span class="keyword">const</span> vec &amp;rgr) <span class="keyword">const</span>;
58<a name="l00075"></a><a class="code" href="classbdm_1_1ARX.html#5b73b70457f49ce4ad8660d729172dfd">00075</a>         <a class="code" href="classbdm_1_1enorm.html" title="Gaussian density with positive definite (decomposed) covariance matrix.">enorm&lt;ldmat&gt;</a>* <a class="code" href="classbdm_1_1ARX.html#7c8d1fe774fe1da50293d50ad8aef43d" title="Conditioned version of the predictor.">predictor</a>(<span class="keyword">const</span> <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> &amp;rv0)<span class="keyword"> const </span>{it_assert_debug(rv0.<a class="code" href="classbdm_1_1RV.html#2174751a00ce19f941edd2c1a861be67" title="Return number of scalars in the RV.">count</a>()==<a class="code" href="classbdm_1_1ARX.html#de5b7d83ff5d3f5af2f80068db0abdfd" title="cached value of est.V">V</a>.<a class="code" href="group__math.html#g96dfb21865db4f5bd36fa70f9b0b1163" title="access function">rows</a>()-1,<span class="stringliteral">"Regressor is not only 1"</span>);<span class="keywordflow">return</span> <a class="code" href="classbdm_1_1ARX.html#7c8d1fe774fe1da50293d50ad8aef43d" title="Conditioned version of the predictor.">predictor</a>(rv0,vec_1(1.0));}
59<a name="l00077"></a>00077         <a class="code" href="classbdm_1_1mlnorm.html" title="Normal distributed linear function with linear function of mean value;.">mlnorm&lt;ldmat&gt;</a>* <a class="code" href="classbdm_1_1ARX.html#7c8d1fe774fe1da50293d50ad8aef43d" title="Conditioned version of the predictor.">predictor</a>(<span class="keyword">const</span> <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> &amp;rv0, <span class="keyword">const</span> <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> &amp;rvc0) <span class="keyword">const</span>;
60<a name="l00078"></a>00078         <a class="code" href="classbdm_1_1mlstudent.html">mlstudent</a>* predictor_student(<span class="keyword">const</span> <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> &amp;rv0, <span class="keyword">const</span> <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> &amp;rvc0) <span class="keyword">const</span>;
61<a name="l00080"></a>00080         ivec <a class="code" href="classbdm_1_1ARX.html#16b02ae03316751664c22d59d90c1e34" title="Brute force structure estimation.">structure_est</a> ( <a class="code" href="classbdm_1_1egiw.html" title="Gauss-inverse-Wishart density stored in LD form.">egiw</a> Eg0 );
62<a name="l00081"></a><a class="code" href="classbdm_1_1ARX.html#ab2c55205a324e9d698fbd8ac229ad4f">00081</a>         <span class="keyword">const</span> <a class="code" href="classbdm_1_1egiw.html" title="Gauss-inverse-Wishart density stored in LD form.">egiw</a>* <a class="code" href="classbdm_1_1ARX.html#ab2c55205a324e9d698fbd8ac229ad4f" title="Returns a pointer to the epdf representing posterior density on parameters. Use with...">_e</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> &amp;<a class="code" href="classbdm_1_1ARX.html#11474a627367f81b76830cb8477cf026" title="Posterior estimate of  in the form of Normal-inverse Wishart density.">est</a> ;};
63<a name="l00082"></a>00082 };
64<a name="l00083"></a>00083
65<a name="l00084"></a>00084 }
66<a name="l00085"></a>00085
67<a name="l00086"></a>00086 <span class="preprocessor">#endif // AR_H</span>
68<a name="l00087"></a>00087 <span class="preprocessor"></span>
69<a name="l00088"></a>00088
70</pre></div></div>
71<hr size="1"><address style="text-align: right;"><small>Generated on Wed Feb 11 10:20:04 2009 for mixpp by&nbsp;
72<a href="http://www.doxygen.org/index.html">
73<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
74</body>
75</html>
Note: See TracBrowser for help on using the browser.