ログ変換された応答変数のLMとGLMの選択


55

一般化線形モデル(GLM)対線形モデル(LM)を使用する背後にある哲学を理解しようとしています。以下にサンプルデータセットを作成しました。

log(y)=x+ε

この例には、yの大きさの関数としての誤差がないため、対数変換されたyの線形モデルが最適であると想定します。以下の例では、これは実際にそうです(私は思う)-ログ変換されたデータのLMのAICが最も低いからです。対数リンク関数を使用したガンマ分布GLMのAICは、より低い二乗和(SS)を持ちますが、自由度を追加するとAICがわずかに高くなります。ガウス分布のAICが非常に高いことに驚かされました(SSはモデルの中で最低ですが)。εy

GLMモデルにアプローチするタイミングについてアドバイスをもらいたいと思います。つまり、LMモデルの近似残差で、別の分布がより適切であることを確認する必要があるのでしょうか。また、適切なディストリビューションファミリを選択するには、どのように進める必要がありますか。

あなたの助けに前もって感謝します。

[編集]:対数変換線形モデルのSSが対数リンク機能を備えたGLMモデルに匹敵するように、要約統計を調整しました。統計のグラフが表示されます。

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()

ここに画像の説明を入力してください

ここに画像の説明を入力してください


log.lmの予測値の式が正しくありません。はの中央値を ます。期待値を取得するには、追加指数にexp(Xbeta^)y1/2×sigma2
pauljohn32

1
Rがファミリーを提供しない別のモデルは、対数正規分布です。SASはそれに適合しますが、R glmが適合しない理由はわかりません。tgat用のRパッケージgamlssを提案する人もいますが、私には理解できるほど決して機能しません。たぶんあなたはより良い運を持っているでしょう。
pauljohn32

回答:


23

この問題を熟考するための努力。不完全な答えはここにありますが、次のステップの出発点です。

まず、分布とリンク関数が異なるため、尤度に基づくAICスコアは異なるスケールにあるため、比較できません。あなたの二乗和と平均二乗和は元のスケールで計算されており、したがって同じスケールであるため、比較することができますが、これはモデル選択の良い基準であるかどうかは別の質問です(そうでないかもしれません-これについての適切な議論については、モデル選択で相互検証されたアーカイブを検索してください)。

より一般的な質問の場合、問題に焦点を当てる良い方法は、LOG.LM(応答がlog(y)である線形モデル)の違いを考慮することです。およびLOG.GAUSS.GLM、yとしての応答とログリンク関数を持つglm。最初の場合、フィッティングするモデルは次のとおりです。

log(y)=Xβ+ϵ ;

そしてglm()の場合:

log(y+ϵ)=Xβ

どちらの場合もは配布されます。ϵN(0,σ2)


3
glmの特性は正しくありません。左側にはランダム変数あり、右側にはデータとパラメーターのみが含まれ、ランダム変数は含まれていません。ϵ
whuber

4
それは私が@whuberを知って、それを置くの奇妙な方法ですがから来ているとなり。ポイントは、リンク機能が一周ということで、G E Y = X βのE Y E(Y)=g1(Xβ)g(E(Y))=XβE(Y)
ピーター・エリス

これは非常に役立つことがわかりました:christoph-scherber.de/content/PDF%20Files/…–
アディティア

16

より一般的な方法では、とは同じではありません。カウント分散としてのモデリング状況は、異なる分布ファミリーをとって異なる場合があります。ln [ E Y | X ] E[ln(Y|x)]ln([E(Y|X])

私の意見では、分布族については、分散とその平均との関係についての質問です。たとえば、ガウスファミリでは、一定の分散があります。ガンマファミリーでは、平均の二次関数として分散があります。標準化された残差対近似値をプロットし、それらがどのようになっているかを確認します。


1
実際には右の家族を選択する方法の質問(と私はここにいくつかのより多くの工夫の余地があると言うだろう)に関連するための1
etov

7

残念ながら、Rコードは例につながりません。代わりに、例はです。ここでのエラーは垂直ではなく水平です。それらはエラーであり、エラーではありません。直感的には、これは違いを生むべきではないように見えますが、実際は違います。あなたはここで私の答えを読むことをお勧めします:xとyの線形回帰とyとxの線形回帰の違いは何ですか? セットアップは、「正しい」モデルが何であるかという問題を複雑にします。厳密には、正しいモデルは逆回帰です。 X = 対数Y + εとのX 、Ylog(y)=x+εx=log(y)+εxy

ly = log(y)
REVERSE.REGRESSION = lm(x~ly)
summary(REVERSE.REGRESSION)
# Call:
# lm(formula = x ~ ly)
# 
# Residuals:
#      Min       1Q   Median       3Q      Max 
# -2.93996 -0.64547 -0.01351  0.63133  2.92991 
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  0.01563    0.03113   0.502    0.616    
# ly           1.01519    0.03138  32.350   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.984 on 998 degrees of freedom
# Multiple R-squared:  0.5119,    Adjusted R-squared:  0.5114 
# F-statistic:  1047 on 1 and 998 DF,  p-value: < 2.2e-16

このモデルのメトリック(AICなど)は、モデルと比較できません。ただし、これはデータ生成プロセスに基づいた正しいモデルであることがわかっており、推定された係数が目標どおりであることがわかります。


ご意見をありがとうございます。サンプルデータの方が良かったかもしれませんが、エラーの生成方法は正しいと思います。この例では、切片はなく、勾配は1です。線を回る場合x = log(y) - rnorm(n, mean=0, sd=1)、log(y)= x + rnorm(n、mean = 0、sd = 1)が得られます。@whuberのコメントがあなたの答えを生み出したなら(そうだと思う)、彼はデータ生成ではなく、@ peterellisによるGLMモデルの定式化について言及していると思います。
ボックス内のマーク14年

0

選択は、変数に関する仮説に基づきます。

ログ変換は基づいています

Var(XtE(Xt)=constant

ガンマ分布はに基づいています

Var(Xt)E(Xt)=constant

対数変換は、次の仮説に基づいています。

Var(Xt=E(Xt)σ

この方法では、

Xt=Xt=E(Xt)XtE(Xt)=E(Xt)XtE(Xt)+E(Xt)E(Xt)=E(Xt)(1+XtE(Xt)E(Xt))

テイラー規則に基づいて、

log(1+x)x

我々が得る

log(1+XtE(Xt)E(Xt))=XtE(Xt)E(Xt)

副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example、

Xt=E(Xt)(1+XtE(Xt)E(Xt))logXt=logE(Xt)+log(1+XtE(Xt)E(Xt))=logE(Xt)+XtE(Xt)E(Xt)E(logXt)logE(Xt)

ただし、ガンマ分布は次の仮説に基づいています。

YΓ(α,β)

{E(yi)=αiβiVar(yi)=αiβi2Var(yi)E(yi)=βi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.