# forum.alglib.net

ALGLIB forum
 It is currently Tue Sep 10, 2024 2:14 pm

 All times are UTC

### Forum rules

1. This forum can be used for discussion of both ALGLIB-related and general numerical analysis questions
2. This forum is English-only - postings in other languages will be removed.

 Page 1 of 1 [ 5 posts ]
 Print view Previous topic | Next topic
Author Message
 Post subject: alglib parameter estimationPosted: Fri Jul 08, 2011 9:47 am

Joined: Fri Jul 08, 2011 12:59 am
Posts: 3
Hi I am new to using alglib, and I want to use the following code, but for my own equation of parameter estimation, therefore I have replaced the function and x and y data points with mine, however I cannot get it to successfully compute.

Please can anyone see my mistake?

Thanks

Alex Walker

Code:
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "interpolation.h"

using namespace alglib;
void function_debt_func(const real_1d_array &c, const real_1d_array &x, double &func, void *ptr)
{
//
// this callback calculates f(c,x)=c[0]*(1+c[1]*(pow(x[0]-1999,c[2])-1))
//
//func = c[0]*(1+c[1]*(pow(x[0]-1999,c[2])-1));
func = (1/(c[0]*c[1]))*(c[2]-asinh(sinh(c[2])*exp(c[0]*x[0]*2*pi())));
}

int main(int argc, char **argv)
{

real_2d_array x = "[1,2,3,4,5]";
real_1d_array y = "[1.9, 1.7, 1.45, 1.3, 1.2]";
real_1d_array c = "[1, 1, 1]";
double epsf = 0;
double epsx = 1.0e-5;
real_1d_array bndl = "[-inf, -10, 0.1]";
real_1d_array bndu = "[+inf, +10, 2.0]";
real_1d_array s = "[1, 1, 1]";
ae_int_t maxits = 0;
ae_int_t info;
lsfitstate state;
lsfitreport rep;
double diffstep = 1.0e-5;

lsfitcreatef(x, y, c, diffstep, state);
lsfitsetcond(state, epsf, epsx, maxits);
lsfitsetbc(state, bndl, bndu);
lsfitsetscale(state, s);
alglib::lsfitfit(state, function_debt_func);
lsfitresults(state, info, c, rep);
printf("%d\n", int(info)); // EXPECTED: 2
printf("%s\n", c.tostring(-2).c_str()); // EXPECTED: [4.142560E+12, 0.434240, 0.565376]
return 0;
}

My function is the line func = ...

Top

 Post subject: Re: alglib parameter estimationPosted: Fri Jul 08, 2011 1:45 pm

Joined: Fri May 07, 2010 7:06 am
Posts: 922
First error I saw is that you initialize 2D array X with 1-dimensional array [1,2,3,4,5]. It should be [[1],[2],[3],[4],[5]].

Maybe there are other errors, but right now I can't test your code. Try to fix it and compile one more time

Top

 Post subject: Re: alglib parameter estimationPosted: Sat Jul 09, 2011 6:14 pm

Joined: Fri Jul 08, 2011 12:59 am
Posts: 3
Thanks that did actually get it to compute.
Please can you just help me understand a couple of lines, because I have no real way of checking whether the parameters it estimates are correct, this line:

real_1d_array s = "[1, 1, 1]";

i think scales the starting value of the parameter estimations, is this correct? How do you decide on the scaling factor?

Top

 Post subject: Re: alglib parameter estimationPosted: Sat Jul 09, 2011 7:04 pm

Joined: Fri May 07, 2010 7:06 am
Posts: 922
Yes, these coefficients are scaling factors. You can read http://www.alglib.net/optimization/scaling.php which briefly discusses this question. If you still has questions (for example, what will be correct scales for your problem), feel free to ask them.

Top

 Post subject: Re: alglib parameter estimationPosted: Sun Jul 10, 2011 12:32 am

Joined: Fri Jul 08, 2011 12:59 am
Posts: 3
I think it is solving correcly for the data I am giving it now, thank you. This is part of a bigger 'thing' I am trying to understand, I wandered whether you maybe able to shed some light on it. I am trying to learn parameter estimation, but cant follow through this paper:
I have attached an image of part of a freely available paper I was reading. It shows the equations for least squares minimization of some equations based on empirical data.

I am not completely confident I understand the required steps, and therefore just wanted to talk it through with others, see what you say and see if it sparks any ideas to solve these.

As I understand it, the first equation (eqn 40) is minimizes using levenberg marquardt for a, b and c0. k is 1,2,3,4..... t_k is times stored, the rest of the equation is trying to model the time it will take (whatever that time may be).

Ok so using levenberg marquardt estimate a, b and c0.
But the the next equation (eqn 41) says that he freezes beta to be ab^2, and uses golden section method to 'refine' a and b?

Did the leveneberg marquardt not do a good enough job because I thought we found and ab that way?

the author also give the sub equations for c0. Why? I thought we estimated c0?

Ok so however it has been done, we have a good estimate for a, b and c0.
Eqn 42. Same thing again except now for nu, phi, omega^2.

How is it explaining to solve this?
"robus linear estimation"? "Directly minimizing"? Is that how? Why cant we use levenberg marquardt again?

I just would like discussion, Im not after just the answer, I would like to understand when to use what, and why...

Thanks guys

By the way, that is the whole chapter I havent left anything out except the chapter title

 Attachments: parameter estimation.JPG [ 109.49 KiB | Viewed 4697 times ]
Top

 Display posts from previous: All posts1 day7 days2 weeks1 month3 months6 months1 year Sort by AuthorPost timeSubject AscendingDescending
 Page 1 of 1 [ 5 posts ]

 All times are UTC

#### Who is online

Users browsing this forum: No registered users and 5 guests

 You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum

Search for: