Saya mencoba memahami filosofi di balik menggunakan Generalized Linear Model (GLM) vs Linear Model (LM). Saya telah membuat kumpulan data contoh di bawah ini di mana:
Contohnya tidak memiliki kesalahan sebagai fungsi dari besarnya , jadi saya akan berasumsi bahwa model linear dari y yang ditransformasi log akan menjadi yang terbaik. Dalam contoh di bawah ini, memang demikian (saya kira) - karena AIC dari LM pada data yang ditransformasi log adalah yang terendah. AIC dari distribusi Gamma GLM dengan fungsi log-link memiliki jumlah kuadrat (SS) yang lebih rendah, tetapi derajat kebebasan tambahan menghasilkan AIC yang sedikit lebih tinggi. Saya terkejut bahwa distribusi AIC Gaussian jauh lebih tinggi (meskipun SS adalah yang terendah dari model).y
Saya berharap untuk mendapatkan beberapa saran tentang kapan seseorang harus mendekati model GLM - yaitu apakah ada sesuatu yang harus saya cari dalam model LM saya sesuai residual untuk memberi tahu saya bahwa distribusi lain lebih tepat? Juga, bagaimana seharusnya seseorang melanjutkan memilih keluarga distribusi yang tepat.
Banyak terima kasih sebelumnya atas bantuan Anda.
[EDIT]: Saya sekarang telah menyesuaikan statistik ringkasan sehingga SS dari model linear log-transformable sebanding dengan model GLM dengan fungsi log-link. Grafik statistik sekarang ditampilkan.
Contoh
set.seed(1111)
n <- 1000
y <- rnorm(n, mean=0, sd=1)
y <- exp(y)
hist(y, n=20)
hist(log(y), n=20)
x <- log(y) - rnorm(n, mean=0, sd=1)
hist(x, n=20)
df <- data.frame(y=y, x=x)
df2 <- data.frame(x=seq(from=min(df$x), to=max(df$x),,100))
#models
mod.name <- "LM"
assign(mod.name, lm(y ~ x, df))
summary(get(mod.name))
plot(y ~ x, df)
lines(predict(get(mod.name), newdata=df2) ~ df2$x, col=2)
mod.name <- "LOG.LM"
assign(mod.name, lm(log(y) ~ x, df))
summary(get(mod.name))
plot(y ~ x, df)
lines(exp(predict(get(mod.name), newdata=df2)) ~ df2$x, col=2)
mod.name <- "LOG.GAUSS.GLM"
assign(mod.name, glm(y ~ x, df, family=gaussian(link="log")))
summary(get(mod.name))
plot(y ~ x, df)
lines(predict(get(mod.name), newdata=df2, type="response") ~ df2$x, col=2)
mod.name <- "LOG.GAMMA.GLM"
assign(mod.name, glm(y ~ x, df, family=Gamma(link="log")))
summary(get(mod.name))
plot(y ~ x, df)
lines(predict(get(mod.name), newdata=df2, type="response") ~ df2$x, col=2)
#Results
model.names <- list("LM", "LOG.LM", "LOG.GAUSS.GLM", "LOG.GAMMA.GLM")
plot(y ~ x, df, log="y", pch=".", cex=3, col=8)
lines(predict(LM, newdata=df2) ~ df2$x, col=1, lwd=2)
lines(exp(predict(LOG.LM, newdata=df2)) ~ df2$x, col=2, lwd=2)
lines(predict(LOG.GAUSS.GLM, newdata=df2, type="response") ~ df2$x, col=3, lwd=2)
lines(predict(LOG.GAMMA.GLM, newdata=df2, type="response") ~ df2$x, col=4, lwd=2)
legend("topleft", legend=model.names, col=1:4, lwd=2, bty="n")
res.AIC <- as.matrix(
data.frame(
LM=AIC(LM),
LOG.LM=AIC(LOG.LM),
LOG.GAUSS.GLM=AIC(LOG.GAUSS.GLM),
LOG.GAMMA.GLM=AIC(LOG.GAMMA.GLM)
)
)
res.SS <- as.matrix(
data.frame(
LM=sum((predict(LM)-y)^2),
LOG.LM=sum((exp(predict(LOG.LM))-y)^2),
LOG.GAUSS.GLM=sum((predict(LOG.GAUSS.GLM, type="response")-y)^2),
LOG.GAMMA.GLM=sum((predict(LOG.GAMMA.GLM, type="response")-y)^2)
)
)
res.RMS <- as.matrix(
data.frame(
LM=sqrt(mean((predict(LM)-y)^2)),
LOG.LM=sqrt(mean((exp(predict(LOG.LM))-y)^2)),
LOG.GAUSS.GLM=sqrt(mean((predict(LOG.GAUSS.GLM, type="response")-y)^2)),
LOG.GAMMA.GLM=sqrt(mean((predict(LOG.GAMMA.GLM, type="response")-y)^2))
)
)
png("stats.png", height=7, width=10, units="in", res=300)
#x11(height=7, width=10)
par(mar=c(10,5,2,1), mfcol=c(1,3), cex=1, ps=12)
barplot(res.AIC, main="AIC", las=2)
barplot(res.SS, main="SS", las=2)
barplot(res.RMS, main="RMS", las=2)
dev.off()
sumber
Jawaban:
Upaya yang baik untuk memikirkan masalah ini. Inilah jawaban yang tidak lengkap, tetapi beberapa permulaan untuk langkah selanjutnya.
Pertama, skor AIC - berdasarkan pada kemungkinan - berada pada skala yang berbeda karena distribusi yang berbeda dan fungsi tautan, sehingga tidak dapat dibandingkan. Jumlah kuadrat dan jumlah kuadrat Anda telah dihitung pada skala asli dan karenanya pada skala yang sama, sehingga dapat dibandingkan, meskipun apakah ini merupakan kriteria yang baik untuk pemilihan model adalah pertanyaan lain (mungkin, atau mungkin tidak - cari arsip yang divalidasi silang pada pemilihan model untuk beberapa diskusi yang baik tentang ini).
Untuk pertanyaan Anda yang lebih umum, cara yang baik untuk berfokus pada masalah adalah dengan mempertimbangkan perbedaan antara LOG.LM (model linier Anda dengan respons sebagai log (y)); dan LOG.GAUSS.GLM, glm dengan respons sebagai y dan fungsi tautan log. Dalam kasus pertama model yang Anda pas adalah:
dan dalam kasus glm () itu adalah:
dan dalam kedua kasus didistribusikan .N ( 0 , σ 2 )ϵ N( 0 , σ2)
sumber
Tentang distribusi keluarga menurut saya adalah pertanyaan tentang varians dan hubungannya dengan mean. Misalnya dalam keluarga gaussian kita memiliki varian konstan. Dalam keluarga gamma, kita memiliki varians sebagai fungsi kuadrat dari mean. Plot residu terstandarisasi Anda vs nilai-nilai yang sesuai dan lihat bagaimana mereka.
sumber
Sayangnya,catatan( y) = x + ε x = log( y) + ε yx y
R
kode Anda tidak mengarah ke contoh di mana . Sebagai gantinya, contoh Anda adalah . Kesalahan di sini adalah horisontal, bukan vertikal; mereka adalah kesalahan di , bukan kesalahan di . Secara intuitif, sepertinya ini seharusnya tidak membuat perbedaan, tetapi itu benar. Anda mungkin ingin membaca jawaban saya di sini: Apa perbedaan antara regresi linier pada y dengan x dan x dengan y? Pengaturan Anda memperumit masalah apa model "benar" itu. Secara ketat, model yang tepat adalah regresi terbalik: x = log ( y ) + εMetrik untuk model ini (seperti AIC) tidak akan sebanding dengan model Anda. Namun, kita tahu bahwa ini adalah model yang tepat berdasarkan proses pembuatan data, dan perhatikan bahwa koefisien yang diperkirakan tepat pada target.
sumber
x = log(y) - rnorm(n, mean=0, sd=1)
, Anda mendapatkan log (y) = x + rnorm (n, rata-rata = 0, sd = 1). Jika komentar @ whuber menelurkan jawaban Anda (saya yakin memang demikian), maka saya yakin dia tidak merujuk pada pembuatan data, melainkan formulasi model GLM oleh @peterellis.Pilihannya didasarkan pada hipotesis Anda pada variabel Anda.
transformasi log didasarkan pada
distribusi gamma didasarkan pada
Transformasi log bertumpu pada hipotesis bahwa,
Lewat sini,
Berdasarkan aturan Taylor,
Kita mendapatkan
Jadi,
Namun, distribusi gamma bersandar pada hipotesis bahwa,
sumber