Statalist


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

st: RE: ado file from my personal folder not loading


From   "Martin Weiss" <[email protected]>
To   <[email protected]>
Subject   st: RE: ado file from my personal folder not loading
Date   Fri, 6 Nov 2009 23:09:17 +0100

<>

Try -which emlatentclass- to check whether Stata sees it... -set trace on- to make sense of the error...


HTH
Martin

-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of László Sándor
Sent: Freitag, 6. November 2009 23:05
To: [email protected]
Subject: st: ado file from my personal folder not loading

Thank you for all your help today.

I have another quick question. I saved my first ever user-written ado
file in my personal folder. The proof is the output:
. personal dir
your personal ado-directory is ~/ado/personal/

emlatentclass.ado


But when I would run it (under Stata 11), I get:
. emlatentclass d_fdeic treat, by(taxproid07)
last estimates not found
(error occurred while loading emlatentclass.ado)
r(301);


I tried to catch basic syntax errors, to no avail so far. I'd be
grateful for any quick guesses what are the usual suspects, or you
might even skim my draft of code below. Thank you!

Laszlo

program emlatentclass, eclass
                version 11
                syntax varlist [if] [in], BY(varname)
                marksample touse
                markout touse `varlist' `by'
                tokenize `varlist'
                local lhs `1'
                macro shift
                local rhs `*'
                local k: word count `rhs'
qui sum touse
local nobs = r(sum)
gen prob_class1 = 0.5
local mix "prob_class1"

set matadebug on
mata:
mata set matalnum on

void function estep(real rowvector b1, real rowvector b2, real scalar
s1, real scalar s2, string scalar lhs, string scalar rhs, string
scalar mix, string scalar by) {
            real scalar logli_l, logli_h
            real vector y
            real matrix X
            st_view(id,.,by)
            info = panelsetup(id, 1)
            st_view(X,.,rhs)
            st_view(y,.,lhs)
            st_view(pi,.,mix)
            index_hi = normalden(y:-X*b1', 0, sqrt(s1))
            index_li = normalden(y:-X*b2', 0, sqrt(s2))
            for (i=1;i<=rows(info);i++) {
                index_l = panelsubmatrix(index_li,i,info)
                index_h = panelsubmatrix(index_hi,i,info)
                panelsubview(pi_i,pi,i,info)
                logli_l = quadcolsum(log(index_l))
                logli_h = quadcolsum(log(index_h))
                pi_i[.] =
J(rows(nu_i),1,exp(logli_h)/(exp(logli_h)+exp(logli_l)))
            }
}
mata mosave estep, replace

function mstep(transmorphic M,
                 real rowvector b,
                 real colvector lnf)
              {
                      real colvector  p1, p2
                      real scalar s1, s2
                      real colvector  y1

                      p1 = moptimize_util_xb(M, b, 1)
                      p2 = moptimize_util_xb(M, b, 2)
                      s1 = moptimize_util_xb(M, b, 3)
                      s2 = moptimize_util_xb(M, b, 4)
                      y = moptimize_util_depvar(M, 1)
                      st_view(mix,.,moptimize_util_userinfo(M,1))

                      lnf = ln(mix:*normalden(y:-p1, 0,
sqrt(s1))+(1:-mix):*normalden(y:-p2, 0, sqrt(s2)))
              }
mata mosave mstep, replace

b1 = J(1,`k',1)
b2 = J(1,`k',1)
s1 = 1
s2 = 1
d = 1
while d>10^(-3)) {
// E-step
    estep(b1,b2,s1,s2,"`lhs'","`rhs'","`mix'","`by'")
// M-step
    M = moptimize_init()
    moptimize_init_evaluator(M, &mstep())
    moptimize_init_evaluatortype(M,"lf")
    moptimize_init_touse(M, "touse")
    moptimize_init_ndepvars(M, 1)
    moptimize_init_depvar(M, 1, "`lhs'")
    moptimize_init_eq_n(M, 4)
    moptimize_init_eq_indepvars(M, 1, "`rhs'")
    moptimize_init_eq_cons(M, 1, "on")
    moptimize_init_eq_indepvars(M, 2, "`rhs'")
    moptimize_init_eq_cons(M, 2, "on")
    moptimize_init_eq_name(M, 1, "class1")
    moptimize_init_eq_name(M, 2, "class2")
    moptimize_init_eq_name(M, 3, "se1")
    moptimize_init_eq_name(M, 4, "se2")
//    moptimize_init_by(M, "`by'")
    moptimize_init_eq_coefs(M, 1, b1)
    moptimize_init_eq_coefs(M, 2, b2)
    moptimize_init_eq_coefs(M, 3, s1)
    moptimize_init_eq_coefs(M, 4, s2)
    moptimize_init_search(M, "on")
    moptimize_init_search_random(M, "on")
    moptimize_init_search_bounds(M, 3, (0,.))
    moptimize_init_search_bounds(M, 4, (0,.))
    moptimize_init_valueid(M, "LogL with given mixing")
    moptimize_init_nuserinfo(M, 1)
    moptimize_init_userinfo(M, 1, "`mix'")
    _moptimize(M)
    moptimize_result_post(M)
    b1n = moptimize_result_coefs(M,1)
    b2n = moptimize_result_coefs(M,2)
    s1n = moptimize_result_coefs(M,3)
    s2n = moptimize_result_coefs(M,4)
    d = sum(abs((b1n-b1,b2n-b2,s1n-s1,s2n-s2)))
    b1 = b1n
    b2 = b2n
    s1 = s1n
    s2 = s2n
}
end
// ereturn post b V, esample(touse) o(`nobs')
ereturn display
end

exit
*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/



© Copyright 1996–2024 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   What's new   |   Site index