valita
March 10, 2020, 3:38pm
1
Hi everyone,
I’m trying to implement the Cox model in stan, but it throws me the following error
Error in path.expand(path) : invalid ‘path’ argument
This is my code:
data {
int<lower=0> n;
int<lower=0> T;
real<lower=0> obst[n];
real<lower=0> t[T + 1];
int<lower=0> fail[n];
real x[n];
real media[n];
}
transformed data {
int Y[n, T];
int dN[n, T];
real c;
real r;
for(i in 1:n) {
for(j in 1:T) {
Y[i, j] <- int_step(obst[i] - t[j] + .000001);
dN[i, j] <- Y[i, j] * fail[i] * int_step(t[j + 1] - obst[i] - .000001);
}
}
c <- 0.01;
r <- 0.1;
}
parameters {
real betaS;
real alpha;
real<lower=0> dL0[T];
}
model {
betaS ~ normal(0, 100);
alpha ~ normal(0, 100);
for(j in 1:T) {
dL0[j] ~ gamma(r * (t[j + 1] - t[j]) * c, c);
for(i in 1:n) {
if (Y[i, j] != 0)
increment_log_prob(poisson_log(dN[i, j], Y[i, j] * exp(betaS * x[i]+alpha*media[i]) * dL0[j]));
}
}
}
I hope you can help me!
Thanks!
That suggests a problem with how you are calling stan
from R. Make sure the Stan program that you want to use is in your working directory. If that doesn’t work, post the line of code you are using to call stan
.
valita
March 10, 2020, 3:59pm
3
Thanks for your answer, I’m using the following code:
fit <- stan(stan(model_code = cox.new,
data = list(n=nrow(Survdata), T = T, t =t,media = media, obst = obst,
x=Survdata$X1, fail = fail),
iter = 2000,
chains = 1))
I’m going to try your observation.
valita
March 10, 2020, 4:04pm
4
Sorry, the code is
fit <- stan(model_code = cox.new,
data = list(n=nrow(Survdata), T = T, t =t,media = media, obst = obst,
x=Survdata$X1, fail = fail),
iter = 2000,
chains = 1)
It is recommended to save your Stan code to a separate file, which will help yield better diagnostic messages when something goes wrong. So, try
fit <- stan("cox_new.stan", ...)
where cox_new.stan
is the file in your working directory where you saved that Stan program.
valita
March 11, 2020, 8:57am
6
Thanks a lot!..it is working!..Now I have problem with the arguments in the gamma distribution, because algorithm tell me that my values are negative.
valita
March 11, 2020, 3:27pm
7
Hi,
Do you know how to incorporate time dependent covariates in cox using stan?
Thanks!
I don’t see how the arguments to dL0[j] ~ gamma(r * (t[j + 1] - t[j]) * c, c);
can be negative unless the difference in times is negative, which would be weird. Are you now calling the gamma (log)-PDF differently. Time-dependent covariates are not a problem syntax-wise, but you need to be a lot more explicit about what you are trying to do.