作为新手,我想问可否用pomp来做简单的linear regression?为了回答这个问题,我自己写了一个小程序准备测试,但是一直报错 Error: in ‘pomp’: error in building shared-object library from C snippets: in ‘pompCBuilder’: compilation error: cannot compile shared-object library。根据具体错误报告,我感觉是pomp无法自动识别已经定义的自变量x,想请教大家如何修改程序?
###先模拟一组数据,x是自变量,是已知的,y是模拟的数据,将来作为观测值使用。被估计的参数是a,b和sd
x<-seq(1,20,1)
a=3
b=2
sd=1
y_hat<-a*x+b
y<-y_hat+rnorm(length(x),0,sd)
####启动pomp;因为此例子没有时间序列,所以忽略rprocess
require(pomp)
linear_rmeasure<-Csnippet("
y=rnorm(a*x+b,sd);
")
linear_dmeasure<-Csnippet("
lik = dnorm(y,a*x+b,give_log);
")
linear_pomp<-pomp(data=data.frame(y=y,t=x),times="t",t0=0,rmeasure=linear_rmeasure,
dmeasure=linear_dmeasure,params=c(a=0.5,b=0.6,sd=1),paramnames = c("a","b","sd"),obsnames = c("y"))
因为pomp报错无法识别x,我就将x直接用seq(1,20,1)代替,但是还是报错说seq不识别,我估计是因为本人不用c,所以在snippet中直接用R的命令造成的结果。哪位童鞋帮忙修改个?