问题描述
通过实验,我获得了响应变量y和预测变量x1和x2的实验数据,根据自己的专业知识建立了如下数学模型:
其中a、b、c、d为待估计的参数。
如何对上式参数进行估计和显著性检验?
我的解答思路和尝试过的方法
- 利用R语言中的nlm()函数(Newton-type algorithm)获得了参数估计,但不知如何对其进行显著性检验。
- 利用自助法随机抽样,然后利用(1)中的方法进行了参数估计,获得参数分布,然后进行区间估计;但问题是第一次抽样和第二次抽样的数据会有重叠,其结果并不独立,该方法可能并不可行。
- 看文献有很多模型使用MCMC进行参数的点估计和区间估计,但该函数的后验概率不会求。
- 不论何种方法,如何实现该模型的参数估计和区间估计
我使用的代码
exp1 <- function(x){exp(x)/(exp(x)+1)}
model1 <- function(p,data){
(exp1(p[1] * data$x1+p[2]))*(p[3]*(data$x2)^2+p[4]*(data$x2))
}
ssq <- function(p,funk,data,observed){
predval <- funk(p,data)
return(sum((observed-predval)^2))
}
p=rep(2,4)
bestmodel <- nlm(f=ssq,funk=model1,observed=data$y,p=p,data=data,
iterlim = 1000)
outfit(bestmodel,backtran=FALSE,title="vB")
pred <- model1(bestmodel$estimate,data)
plot(pred,pred-data$y)
qqnorm(pred-data$y)
#Compare fitted value and observed value
plot(data$x2,data$y,type="p",pch=16, col=ifelse(data$x1<0.2,"red","blue"),
cex=1.2,yaxs="i",xlab="x2",
xlim=c(0,getmax(data$x2)),ylim=c(-1,getmax(data$y)),
ylab="y",panel.first=grid())
points(data$x2,pred,lwd=2,col=ifelse(data$x1<0.2,"black","gray"))
qqnorm(pred-data$y)
模型拟合与实验结果对比,其中黑色和灰色是模型拟合的点,红色和蓝色是实验结果
模型QQplot
我想要达到的结果
如何用R语言或python获得参数a、b、c、d的估计值及其显著性分析