Giter VIP home page Giter VIP logo

Comments (2)

bob-carpenter avatar bob-carpenter commented on May 29, 2024

The problem is that Stan, unlike BUGS and R,
distinguishes between integer and floating-point (real)
types.

Specifically, your declaration

real Y[N];

is incompatible in Stan with its use:

Y[i] ~ poisson(a + b*X[i]);

The variate in a Poisson is required to be an
integer type.

You should be able to fix the problem by declaring:

int Y[N];

If your Y aren't integers, you can't technically use a Poisson
probability mass function.

You could define a probability density function that's Poisson-like
using lp__ as described in the manual section on writing your
own probability functions in Stan.

  • Bob

On 2/12/13 5:43 PM, rszoh wrote:

All,

I have the following code that fits a Poisson model to a data:

library(rstan)
Bcca_mod <- '
data {
int N; // sample size
real Y[N];
real X[N];
}
parameters {
real a;
real b;
}
transformed parameters {

}
model {
a ~ gamma(1,1);
b~ gamma(1,1);
for(i in 1:N)
Y[i] ~ poisson(a + b*X[i]);
}
'
N=20

X = seq(0,20,length.out=N)/20
a=1.5
b=3
Y = apply(matrix(a+b*X,ncol=1),1,rpois,n=1)

bcca_dat<-list("Y"=Y,"N"=N,"X"=X)
fit <- stan(model_code = Bcca_mod, data = bcca_dat, iter = 1000, chains = 2)

Note that I have the right constraints on a and b and Y even though they don't show.
When I run the above code I get this error message:

Error in stanc(file = file, model_code = model_code, model_name = model_name, :
failed to parse Stan model 'Bcca_mod' with error message:
EXPECTATION FAILURE LOCATION: file=input; line=18, column=1

Y[i] ~ poisson(a + b*X[i]);
^-- here

DIAGNOSTIC(S) FROM PARSER:
no matches for function name="poisson_log"
arg 0 type=real
arg 1 type=real
unknown distribution=poisson
Parser expecting:

Does it mean that stan does not yet support the poisson distribution??

Any help will be appreciated.
Thanks


Reply to this email directly or view it on GitHub #13.

from stan.

rszoh avatar rszoh commented on May 29, 2024

I realized after another close look a the code that Y was declared real instead of Int. Now things work just perfect!
Many thanks!

from stan.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.