ポアソン回帰のログリンクとIDリンクの長所と短所


12

私は私のモデルで比較する(との差をとる)の最終目標を持つ2つの因子レベル間の予測の平均数をポアソン回帰しております μ 1 - μ 2μ^1μ^2、他のモデルの共変量を保持しながら、(すべてのバイナリであります) 絶え間ない。ログリンクとIDリンクのどちらを使用するかについて、誰かが実際的なアドバイスを提供できるかどうか疑問に思っていました。差を比較するという私の目標を考えると、ポアソン回帰におけるこれら2つの異なるリンク関数の長所と短所は何ですか?

また、ロジスティック/二項回帰(ロジットリンクまたはIDリンクを使用)についても同じ目標を念頭に置いて、2つの因子レベル間の比率の違いを比較し、同様のアドバイスが必要です。この問題に関連するいくつかの投稿を読んだことがありますが、なぜか、いつ他のリンクよりも1つのリンクを選択し、賛否両論がどうなるかを説明するものはありません。よろしくお願いします!

更新:

また、特定のリンク機能を使用する主な目的は、可能な予測値の範囲範囲を平均応答の範囲内に制限することであることを認識しています(たとえば、ロジスティックの場合、範囲は0から1の間で、リンク、予測は正の数に制限されます)。だから、私が求めているのは、ロジスティック/二項回帰にアイデンティティリンクを使用し、結果が範囲(0,1)内にある場合、実際にロジスティックリンク関数を使用する必要があるかどうかです単純に識別リンクを使用するように考えられますか?


2
いい質問ですね。ただし、その記述方法を考えると、バイナリファクターが1つだけで他の変数がない場合は、選択するリンクに違いはないことを知っておくと便利です。
whuber

1
ありがとう、@ whuber。モデルに他の共変量があることを明確にするために、質問を更新しました。また、私の質問をもう少し説明する「更新」セクションを追加しました。
StatsStudent

1
リンク関数の役割に関する別の観点については、stats.stackexchange.com / questions / 63978の密接に関連した質問に対する私の答えを参照してください。
whuber

1
魅力的な例@whuber!
StatsStudent

1
通常、リンク機能の選択は、問題と手元のデータによって決まります
...-トムウェンセリアーズ

回答:


4

ポアソン回帰の場合のアイデンティティリンクの短所は次のとおりです。

  • 既に述べたように、範囲外の予測を生成する可能性があります。
  • リンクでラムダを0未満にすることは許可されていますが、ポアソン分布はそのような値に対して定義されていないため、モデルを近似しようとすると、奇妙なエラーと警告が表示される場合があります。
  • ポアソン回帰では平均と分散が同じであると仮定されているため、リンクを変更すると、分散に関する仮定も変更されます。私の経験では、この最後のポイントが最も重要だということです。

しかし、最終的にこれは経験的な問題です。両方のモデルに適合します。任意のチェックを実行します。IDリンクのAICが低く、他のすべてのチェックと同等またはそれ以上の場合、IDリンクで実行します。

ロジットモデルと線形確率モデル(つまり、アイデンティティリンクと呼ぶもの)の場合、状況はずっと簡単です。計量経済学の非常にエキゾチックなケース(検索を行うとわかります)を除いて、ロジットモデルの方が優れています。仮定が少なく、ほとんどの人が使用するものです。代わりに線形確率モデルを使用すると、邪悪になります。

:あなたはRを使用している場合は、モデルの解釈に関しては、すべての重労働を行います二つの大きなパッケージがある効果スーパー使いやすいです、そしてカメレオンマン、あなたが予測を作りたい場合は困難を使用するのではなく、素晴らしいです。


1
線形確率モデルは「エキゾチック」ですが、私の経済学者(私は統計学者です)とのやり取りから、2つの陣営があるようです。 、これは通常気にすることです。
zipzapboing

1
私は経済学の異国的な事例に言及することで私の答えを警告しました。とはいえ、線形確率モデルの問題は、OLSを介して推定した場合、一般的にその仮定に違反することです。モデルがパラメーターで線形であるという仮定は、多くの場合、妥当ではありません(つまり、OLSを使用して推定すると、0および1以外の確率を得ることができます)。また、残差はリモートから正常に近づけることができないため、サンドイッチ推定器などを使用する必要があります。
ティム

ポアソンモデルの場合、アプリケーションは、共変量が相加的に作用するか(アイデンティティリンクを意味する)、または線形スケールで乗法的に作用するか(ログリンクを意味する)をしばしば指示するとも言います。しかし、通常、アイデンティティリンクを持つポアソンモデルは意味を持ち、近似係数に非負性制約を課す場合にのみ安定して適合します-これは、R addregパッケージのnnpois関数またはNNLMパッケージのnnlm関数を使用して実行できます。
トムウェンセリアーズ

0

ポアソンモデルの場合、アプリケーションは、共変量が相加的に作用するか(アイデンティティリンクを意味する)、または線形スケールで乗法的に作用するか(ログリンクを意味する)をしばしば指示するとも言います。しかし、恒等リンクをもつポアソンモデルも通常は意味があり、適合係数に非負性制約を課す場合にのみ安定して適合します。これはnnpois、R addregパッケージのnnlm関数を使用するか、NNLMパッケージ。だから、アイデンティティとログの両方のリンクを持つポアソンモデルに適合し、最終的に純粋な統計的根拠に基づいて最高のAICを持ち、最高のモデルを推測するものを確認する必要があることに同意しません-むしろ、ほとんどの場合、解決しようとする問題の根本的な構造または手元のデータ。

たとえば、クロマトグラフィー(GC / MS分析)では、いくつかの近似ガウス型ピークの重畳信号を測定することが多く、この重畳信号は電子増倍管で測定されます。つまり、測定信号はイオン数であり、したがってポアソン分布です。各ピークは定義により正の高さを持ち、相加的に作用し、ノイズはポアソンであるため、ここではアイデンティティリンクを持つ非負のポアソンモデルが適切であり、ログリンクポアソンモデルは明らかに間違っています。エンジニアリングでは、Kullback-Leibler損失はそのようなモデルの損失関数としてよく使用され、この損失を最小化することは、非負のアイデンティティリンクポアソンモデルの尤度を最適化することと同等ですアルファまたはベータの発散などの他の発散/損失測定もあります) 特別な場合としてポアソンがある)。

以下は、通常の制約のないアイデンティティリンクポアソンGLMが適合しない(非負の制約がないため)ことを示すデモンストレーションと、非負のアイデンティティリンクポアソンモデルを適合させる方法の詳細を含む数値例です。nnpois、ここでは、単一ピークの測定形状のシフトされたコピーを含むバンド共変量行列を使用して、ポアソンノイズを含むクロマトグラフピークの測定重ね合わせをデコンボリューションするコンテキストで。ここでの非負性は、いくつかの理由で重要です:(1)手元のデータの唯一の現実的なモデル(ここのピークは負の高さを持つことはできません)、(2)ポアソンモデルを恒等リンクに安定的に適合させる唯一の方法です(そうしないと、一部の共変量値の予測が負になる可能性があり、これは意味をなさず、尤度を評価しようとすると数値問題を引き起こします)、(3)非負性が回帰問題を正則化するように作用し、安定した推定値を得るのに非常に役立ちます通常、通常の制約のない回帰のように過剰適合の問題は発生しません。非負性の制約により、グラウンドトゥルースにより近いスパース推定値が得られることがよくあります。以下のデコンボリューションの問題の場合、たとえば、パフォーマンスはLASSOの正規化とほぼ同等ですが、正規化パラメーターを調整する必要はありません。L0偽核のペナルティ付き回帰は、わずかに改善されますが、計算コストが高くなります

# we first simulate some data
require(Matrix)
n = 200
x = 1:n
npeaks = 20
set.seed(123)
u = sample(x, npeaks, replace=FALSE) # unkown peak locations
peakhrange = c(10,1E3) # peak height range
h = 10^runif(npeaks, min=log10(min(peakhrange)), max=log10(max(peakhrange))) # unknown peak heights
a = rep(0, n) # locations of spikes of simulated spike train, which are assumed to be unknown here, and which needs to be estimated from the measured total signal
a[u] = h
gauspeak = function(x, u, w, h=1) h*exp(((x-u)^2)/(-2*(w^2))) # peak shape function
bM = do.call(cbind, lapply(1:n, function (u) gauspeak(x, u=u, w=5, h=1) )) # banded matrix with peak shape measured beforehand
y_nonoise = as.vector(bM %*% a) # noiseless simulated signal = linear convolution of spike train with peak shape function
y = rpois(n, y_nonoise) # simulated signal with random poisson noise on it - this is the actual signal as it is recorded
par(mfrow=c(1,1))
plot(y, type="l", ylab="Signal", xlab="x", main="Simulated spike train (red) to be estimated given known blur kernel & with Poisson noise")
lines(a, type="h", col="red")

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

# let's now deconvolute the measured signal y with the banded covariate matrix containing shifted copied of the known blur kernel/peak shape bM

# first observe that regular OLS regression without nonnegativity constraints would return very bad nonsensical estimates
weights <- 1/(y+1) # let's use 1/variance = 1/(y+eps) observation weights to take into heteroscedasticity caused by Poisson noise
a_ols <- lm.fit(x=bM*sqrt(weights), y=y*sqrt(weights))$coefficients # weighted OLS
plot(x, y, type="l", main="Ground truth (red), unconstrained OLS estimate (blue)", ylab="Peak shape", xlab="x", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_ols, type="h", col="blue", lwd=2)

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

# now we use weighted nonnegative least squares with 1/variance obs weights as an approximation of nonnegative Poisson regression
# this gives very good estimates & is very fast
library(nnls)
library(microbenchmark)
microbenchmark(a_wnnls <- nnls(A=bM*sqrt(weights),b=y*sqrt(weights))$x) # 7 ms
plot(x, y, type="l", main="Ground truth (red), weighted nnls estimate (blue)", ylab="Signal (black) & peaks (red & blue)", xlab="Time", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_wnnls, type="h", col="blue", lwd=2)
# note that this weighted least square estimate in almost identical to  the nonnegative Poisson estimate below and that it fits way faster!!!

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

# an unconstrained identity-link Poisson GLM will not fit:
glmfit = glm.fit(x=as.matrix(bM), y=y, family=poisson(link=identity), intercept=FALSE)
# returns Error: no valid set of coefficients has been found: please supply starting values

# so let's try a nonnegativity constrained identity-link Poisson GLM, fit using bbmle (using port algo, ie Quasi Newton BFGS):
library(bbmle)
XM=as.matrix(bM)
colnames(XM)=paste0("v",as.character(1:n))
yv=as.vector(y)
LL_poisidlink <- function(beta, X=XM, y=yv){ # neg log-likelihood function
  -sum(stats::dpois(y, lambda = X %*% beta, log = TRUE)) # PS regular log-link Poisson would have exp(X %*% beta)
}
parnames(LL_poisidlink) <- colnames(XM)
system.time(fit <- mle2(
  minuslogl = LL_poisidlink ,
  start = setNames(a_wnnls+1E-10, colnames(XM)), # we initialise with weighted nnls estimates, with approx 1/variance obs weights
  lower = rep(0,n),
  vecpar = TRUE,
  optimizer = "nlminb"
)) # very slow though - takes 145s 
summary(fit)
a_nnpoisbbmle = coef(fit)
plot(x, y, type="l", main="Ground truth (red), nonnegative Poisson bbmle ML estimate (blue)", ylab="Signal (black) & peaks (red & blue)", xlab="Time", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_nnpoisbbmle, type="h", col="blue", lwd=2)

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

# much faster is to fit nonnegative Poisson regression using nnpois using an accelerated EM algorithm:
library(addreg)
microbenchmark(a_nnpois <- nnpois(y=y,
                                  x=as.matrix(bM),
                                  standard=rep(1,n),
                                  offset=0,
                                  start=a_wnnls+1.1E-4, # we start from weighted nnls estimates 
                                  control = addreg.control(bound.tol = 1e-04, epsilon = 1e-5),
                                  accelerate="squarem")$coefficients) # 100 ms
plot(x, y, type="l", main="Ground truth (red), nonnegative Poisson nnpois estimate (blue)", ylab="Signal (black) & peaks (red & blue)", xlab="Time", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_nnpois, type="h", col="blue", lwd=2)

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

# or to fit nonnegative Poisson regression using nnlm with Kullback-Leibler loss using a coordinate descent algorithm:
library(NNLM)
system.time(a_nnpoisnnlm <- nnlm(x=as.matrix(rbind(bM)),
                                 y=as.matrix(y, ncol=1),
                                 loss="mkl", method="scd",
                                 init=as.matrix(a_wnnls, ncol=1),
                                 check.x=FALSE, rel.tol=1E-4)$coefficients) # 3s
plot(x, y, type="l", main="Ground truth (red), nonnegative Poisson nnlm estimate (blue)", ylab="Signal (black) & peaks (red & blue)", xlab="Time", ylim=c(-max(y),max(y)))
lines(x,-y)
lines(a, type="h", col="red", lwd=2)
lines(-a_nnpoisnnlm, type="h", col="blue", lwd=2)

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


1
Y1Y

1
@whuber具体的な例を追加して、私の主張をより明確にしました!重み付きの非負の最小二乗法を使用して実際の非負のアイデンティティリンクポアソンモデルを近似することについての考えも歓迎します。
トムウェンセリアーズ

Btw-非負のアイデンティティリンクポアソンGLMを近似するために使用する重み付きnnlsは、実際には、非負のポアソンGLM(R自体が1 /(y + 0.1)ポアソンGLMは初期化として適合)
トムウェンセリアーズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.