As I typed in the below code

{parms,f,g,h,retcode}=CML(data,0,&LL,parms);

there encountered a problem which says

Undefined symbols

LL

So please kindly let me know how to solve this.

## 4 Answers

0

The CML program needs to calculate the user written likelihood function. The way that you tell CML which function is the likelihood function is by passing in a pointer to your likelihood function. The concept of a pointer can sometimes seem confusing, but the basic idea is that the ampersand (&) operator retrieves the address or location where CML can find your likelihood function.

It sounds like what your code is missing is a procedure named LL. Take a look at some of the CML examples in the GAUSSHOME/examples directory (cml1.e, etc). They should be helpful, but here is a partial example. For the sake of brevity, I will assume that our code has already defined the variables `data` and `parms` and will not repeat that. What we need to do is create a likelihood procedure and then pass in a pointer to *that* function.

proc (1) = my_likelihood(x, z); //likelihood calculations here endp; {parms,f,g,h,retcode}=CML(data,0,&my_likelihood,parms);

0

For the likelihood calculation, do we normally have it self-written or we can take from a part of the big thick cml.src? since when I pasted the source code from cml.src, there appears many syntax errors.

one more thing, I have the light version of 9.0, that's no problem to deal with all cml library, right?

newbie.

0

1. The likelihood function is a user supplied procedure. Check out section 2.3 in the manual (cml2.0.pdf). The manual can be found in GAUSSHOME/doc (which if you have GAUSS Light 9.0 would be C:\gausslt9.0\doc by default). You should never need to take any code from `cml.src`.

2. GAUSS Light 9.0 is compatible with CML. If you are a student, you can contact Aptech and get a newer version of GAUSS Light for free. I would recommend that.

Finally, there is nothing wrong with being a newbie. 🙂 That is how everybody starts.

0

Thank you so much 🙂 I really appreciate your help and support.

Cheers!

## Your Answer

## 4 Answers

The CML program needs to calculate the user written likelihood function. The way that you tell CML which function is the likelihood function is by passing in a pointer to your likelihood function. The concept of a pointer can sometimes seem confusing, but the basic idea is that the ampersand (&) operator retrieves the address or location where CML can find your likelihood function.

It sounds like what your code is missing is a procedure named LL. Take a look at some of the CML examples in the GAUSSHOME/examples directory (cml1.e, etc). They should be helpful, but here is a partial example. For the sake of brevity, I will assume that our code has already defined the variables `data` and `parms` and will not repeat that. What we need to do is create a likelihood procedure and then pass in a pointer to *that* function.

proc (1) = my_likelihood(x, z); //likelihood calculations here endp; {parms,f,g,h,retcode}=CML(data,0,&my_likelihood,parms);

For the likelihood calculation, do we normally have it self-written or we can take from a part of the big thick cml.src? since when I pasted the source code from cml.src, there appears many syntax errors.

one more thing, I have the light version of 9.0, that's no problem to deal with all cml library, right?

newbie.

1. The likelihood function is a user supplied procedure. Check out section 2.3 in the manual (cml2.0.pdf). The manual can be found in GAUSSHOME/doc (which if you have GAUSS Light 9.0 would be C:\gausslt9.0\doc by default). You should never need to take any code from `cml.src`.

2. GAUSS Light 9.0 is compatible with CML. If you are a student, you can contact Aptech and get a newer version of GAUSS Light for free. I would recommend that.

Finally, there is nothing wrong with being a newbie. 🙂 That is how everybody starts.

Thank you so much 🙂 I really appreciate your help and support.

Cheers!