特定のデータセットを分析していますが、自分のデータに適合する最適なモデルを選択する方法を理解する必要があります。私は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)
まず、プロビットモデルとロジットモデルを適合させようとしました。ちょうど今、文学で私のデータに似た別の方程式を見つけたのでnls
、その方程式に従って関数を使用して自分のデータを近似しようとしました(しかし、私はそれに同意しません、そして著者は彼がなぜ彼に説明しないのですか?)その方程式を使用しました)。
ここに私が得る3つのモデルのコードがあります:
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))
次に、データと3つの近似曲線をプロットしました。
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
3つのモデルの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は最適なモデルを選択するのに十分ですか?(それはロジットモデルでしょうね?)それとも計算する必要がある何か他にありますか?
nls
モデルととの比較に関するものglm
です。これが私が同様の質問を(再)投稿した理由です:)
nls
わかりません。人々の言うことを見ていきます。GLiMに関しては、共変量が応答に直接接続していると思われる場合はロジットを使用し、潜在的な正規分布変数が介在していると考えられる場合はプロビットを使用する必要があります。
nls
。