我正在分析某个数据集,我需要了解如何选择适合我的数据的最佳模型。我正在使用 R。
我拥有的数据示例如下:
corr <- c(0, 0, 10, 50, 70, 100, 100, 100, 90, 100, 100)
这些数字对应于 11 种不同条件下的正确答案百分比 ( cnt
):
cnt <- c(0, 82, 163, 242, 318, 390, 458, 521, 578, 628, 673)
首先,我尝试拟合一个概率模型和一个 logit 模型。刚才我在文献中发现了另一个方程来拟合与我相似的数据,所以我尝试使用nls
函数根据该方程拟合我的数据(但我不同意,作者没有解释为什么他使用该等式)。
这是我得到的三个模型的代码:
resp.mat <- as.matrix(cbind(corr/10, (100-corr)/10))
ddprob.glm1 <- glm(resp.mat ~ cnt, family = binomial(link = "logit"))
ddprob.glm2 <- glm(resp.mat ~ cnt, family = binomial(link = "probit"))
ddprob.nls <- nls(corr ~ 100 / (1 + exp(k*(AMP-cnt))), start=list(k=0.01, AMP=5))
现在我绘制了数据和三个拟合曲线:
pcnt <- seq(min(cnt), max(cnt), len = max(cnt)-min(cnt))
pred.glm1 <- predict(ddprob.glm1, data.frame(cnt = pcnt), type = "response", se.fit=T)
pred.glm2 <- predict(ddprob.glm2, data.frame(cnt = pcnt), type = "response", se.fit=T)
pred.nls <- predict(ddprob.nls, data.frame(cnt = pcnt), type = "response", se.fit=T)
plot(cnt, corr, xlim=c(0,673), ylim = c(0, 100), cex=1.5)
lines(pcnt, pred.nls, lwd = 2, lty=1, col="red", xlim=c(0,673))
lines(pcnt, pred.glm2$fit*100, lwd = 2, lty=1, col="black", xlim=c(0,673)) #$
lines(pcnt, pred.glm1$fit*100, lwd = 2, lty=1, col="green", xlim=c(0,673))
现在,我想知道:我的数据的最佳模型是什么?
- 概率
- 罗吉特
- nls
三个模型的 logLik 是:
> logLik(ddprob.nls)
'log Lik.' -33.15399 (df=3)
> logLik(ddprob.glm1)
'log Lik.' -9.193351 (df=2)
> logLik(ddprob.glm2)
'log Lik.' -10.32332 (df=2)
logLik 是否足以选择最佳模型?(这将是 logit 模型,对吗?)或者还有其他我需要计算的东西吗?