[ADMB Users] quick TPL help ... ?

Ben Bolker bbolker at gmail.com
Mon Dec 31 10:43:30 PST 2012


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

I have a fairly simple TPL file in which I'm trying to fit a
four-parameter logistic regression model with a random effect on
the right-hand (lower) asymptotic value parameter R.

  I originally wrote my objective function as

   f = regression(X,pred)+norm2(Ru);

which gave me

error: no matching function for call to ‘regression(data_vector&,
df1b2vector&)’
/usr/local/admb/include/fvar.hpp:4073: note: candidates are: dvariable
regression(const dvector&, const dvar_vector&)
/usr/local/admb/include/fvar.hpp:4074: note:                 double
regression(const dvector&, const dvector&)

  After quite a bit of fussing around I discovered that if I just
replaced the regression() function with its guts,

   f = 0.5*nobs*log(norm2(X-pred)/nobs)+norm2(Ru);

I get reasonable answers ...

  I'm satisfied for now, but I assume this is due to some bit that
didn't get fully implemented in ADMB-RE?  I'm afraid I don't know
quite enough to hack in the extension to regression(const dvector&,
const dvector&); a boneheaded attempt to copy and modify the function
definitions in src/linad99/vregress.cpp and src/linad99/fvar.hpp fails
with

fvar.hpp:4073: error: ISO C++ forbids declaration of ‘df1b2vector’
with no type
fvar.hpp:4073: error: expected ‘,’ or ‘...’ before ‘&’ token

presumably because I ought to have put it into the df1b2-separable
directory where it would know all about the type definition ... ?

  The original TPL file:
==================
DATA_SECTION

  init_int nobs
  init_vector Day(1,54)
  init_vector X(1,54)
  init_matrix XR(1,54,1,3)
  init_matrix Z(1,54,1,9)

PARAMETER_SECTION

  objective_function_value f
  init_number asympL
  init_vector Rvec(1,3)
  init_number xmid
  init_number scale
  init_bounded_number Rsigma(0,10)
   vector pred(1,nobs)       // predicted values
   vector Rval(1,nobs)       //
  random_effects_vector Ru(1,9)

PROCEDURE_SECTION
   Rval = XR*Rvec+Rsigma*(Z*Ru);
   pred = asympL+elem_div(Rval-asympL,1.0+exp(-(Day-xmid)/scale));
   f = regression(X,pred)+norm2(Ru);
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with undefined - http://www.enigmail.net/

iQEcBAEBAgAGBQJQ4dzRAAoJEOCV5YRblxUHxxAIAJi1LLLG2FzQzfXYJRmokL98
4c4jKjErKcue9gAlkeQP2rRrX8Px5jaAxuV8IkIEhigOwcvap0Ix1Ty/hMAN9cMs
z3tAqZ9wiiYekdBNdzoYfHvFQWTxvfd3uhPRTkNwhWIYtxy5mmYVBF9l23HWE9Vp
ZSENSpE6rPSgxiQLpTGENB6zh6Pd9twUIgQo2LgHmGRahY7nRPGfYy9T8laL1/4X
c/b17o5H+yppdhDaRKQ6JahUcQrzyBMHKtd/A0r9u49xuxeTNLPzv3cdHBJV4zuV
An1Js2KbRYqu070WdtAFXwWSmiffADzSRemM4H0JUObVuFwTLWmtfv3G5ls4Xik=
=e6Ai
-----END PGP SIGNATURE-----



More information about the Users mailing list