Hi there,
I’m using the quap
routine from the rethinking
package. I’m modeling solar PV generation for a largish region, where there are a few unknown parameters that are easy-ish to constrain.
PV generation can be scaled by cos ( angle of incidence on PV panel ) – the parameter I’m modeling is cos(angle_incidence). This angle is a function of the day of the year, the hour of the day, the solar azimuth (gamma – oriented east or west? zero is due south), the latitude, and the tilt of the PV panel (0 is flat, 90 is upright).
For the raw generation data (actual production), I know the general latitude and the datetime.
My confusion is this: I’m not entirely clear on how to set this up in Stan.
I’ve done this, using quap
:
m1 <- quap(
alist(
PV ~ dnorm( mu, sigma ),
lat ~ dnorm(N,39,.5),
gamma ~ dnorm(N,0,30),
tilt ~ dunif(N,0,lat),
sigma ~ dexp(1),
capacity <- ifelse(solar_altitude(lat,datetime)<0,0,cap),
cos_incidence <- ifelse(cos_theta_i(solar_altitude(lat,datetime),tilt,gamma,datetime)<0,
0,cos_theta_i(solar_altitude(lat,datetime),tilt,gamma,datetime)),
mu <- capacity*cos_incidence
), data = cleandf)
I’ve already used this model to create a prior predictive simulation
These plots show two things – there are bad data, and the simulated data generally describe the actual data.
I’d like to use Stan to identify the most likely values of the parameters in quap
, but when I run it as above, I get this error:
Error in rfelse(1, c(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, : could not find function "rfelse"
Am I doing this all wrong? How should models like this be set up?