ポアソン回帰の優れた視覚化は何ですか?


11

コードの欠陥を、近接性などのコードの複雑さの指標と関連付けたいのですが。一般的なモデルの1つは、これをポアソンプロセスと見なすことです。ここで、継続時間はコーディングに費やされた時間であり、密度はコードの複雑さの関数です。回帰を行って有意値などを取得できます。

ただし、結果を視覚化することは困難です(数学にあまり興味がない同僚にとってはさらに困難です)。これが線形傾向である場合など、異常値などを確認するためにこれを表示する良い方法はありますか?(Rパッケージへのリンクは大歓迎です。)

たとえば、単にプロットすることもできますDefects / Time ~ Complexityが、これはかなりノイズDefectsが多く、離散化されているため非常に小さいため、傾向を確認することは困難です。私が考えていたのは、データを分位点にスライスしてから、分位点ごとに回帰を行い、結果の密度をプロットできることです。ただし、これがどれほど有効であるかはわかりません。分位とは何かについて人々を誤解させる。

回答:


6

モデルを適合させた後、予測される欠陥を変数として使用して、それらにとって意味のある標準的な手法を使用して他のものと比較してみませんか?小さな変数でも確認できるように、連続変数であるという利点があります。たとえば、予想される欠陥の数1.4と0.6の違いは、どちらも1つに丸められても、人々は理解するでしょう。

予測値が2つの変数にどのように依存するかを示す例として、時間のコンタープロットを作成します。そして実際のデータポイントを上に重ねます。

以下のプロットは、いくつかの洗練と凡例が必要ですが、出発点になる場合があります。

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

別の方法は、従来のガウス応答回帰からよりよく知られている追加の変数プロットまたは部分回帰プロットです。これらは自動車ライブラリに実装されています。残りの説明変数が応答変数と説明変数の両方への寄与を取り除いた後、効果的に、応答の残りと説明変数の1つの残りの関係を示します。私の経験では、ほとんどの非統計的読者はこれらを理解するのが少し難しいと感じています(もちろん、私の不十分な説明が原因かもしれません)。

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

#--------------------------------------------------------------------
# Simulate some data
n<-200
time <- rexp(n,.01)
complexity <- sample(1:5, n, prob=c(.1,.25,.35,.2,.1), replace=TRUE)
trueMod <- exp(-1 + time*.005 + complexity*.1 + complexity^2*.05)
defects <- rpois(n, trueMod)
cbind(trueMod, defects)


#----------------------------------------------------------------------
# Fit model
model <- glm(defects~time + poly(complexity,2), family=poisson)
# all sorts of diagnostic checks should be done here - not shown


#---------------------------------------------------------------------
# Two variables at once in a contour plot

# create grid
gridded <- data.frame(
    time=seq(from=0, to=max(time)*1.1, length.out=100),
    complexity=seq(from=0, to=max(complexity)*1.1, length.out=100))

# create predicted values (on the original scale)
yhat <- predict(model, newdata=expand.grid(gridded), type="response")

# draw plot
image(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE),
    xlab="Time", ylab="Complexity", main="Predicted average number of defects shown as colour and contours\n(actual data shown as circles)")
contour(gridded$time, gridded$complexity, matrix(yhat,nrow=100, byrow=FALSE), add=TRUE, levels=c(1,2,4,8,15,20,30,40,50,60,70,80,100))

# Add the original data
symbols(time, complexity, circles=sqrt(defects), add=T, inches=.5)

#--------------------------------------------------------------------
# added variable plots

library(car)
avPlots(model, layout=c(1,3))

2

したがって、カウントデータ変数「欠陥」に対してポアソン回帰を実行し、有意差を視覚化したいとします。回帰であると推定するときに行うことは、条件付き平均推定です、ここで、は欠陥であり、はコードの複雑さなどのリグレッサです。E[yi|xi]yixi

それを視覚化する最も簡単な方法は、 2つの異なる値(たとえば、高複雑度と低複雑度)を取り、両方の複雑度レベルに対してなどの予測頻度をプロットすることです。結果のヒストグラムは次のようになり、この違いが強い場合には、これらの周波数のhistrogramsは非常に異なる(低い複雑かつ高度に複雑なため、多くの高欠陥に対して例えば、多くのゼロ)を見ていきますスライド3に。これらの2つのヒストグラムを重ねたり、予測された欠陥の違いをプロットしたりすると、見栄えがよくなります。xiyi=0,yi=1

あなたが減少感じる場合 2つのカテゴリに単純化し過ぎている、あなたは、任意の離散集合のために同じことを行うことができますができますが、一度にあなたの聴衆でより4、と言うよりも、グラフを投げる場合、それは良い視覚的なプレゼンテーションのためになりません。 。xixi

あるいは、が連続的である場合、その応じて1つの予測カウント(たとえば、欠陥= 0)をプロットできます。たぶん、これはあなたの結果に沿った素敵なモノトーンの機能になります。xixi

ところで:データに対して負の二項回帰も実行しましたか?結果は大きく異なりますか?その場合、ポアソン仮定(条件付き平均と条件付き分散が等しい)は制限が多すぎる可能性があります(「過剰分散」を参照)。たとえば、変数の「欠陥」に多くのゼロがある場合などです。

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