この奇妙な形の分布をモデル化する方法(ほぼ逆J)


25

以下に示す私の従属変数は、私が知っている在庫分布に適合しません。線形回帰は、奇妙な方法で予測Yに関連するやや非正規の右スキューの残差を生成します(2番目のプロット)。最も有効な結果と最高の予測精度を得るための変換またはその他の方法に関する提案はありますか?可能であれば、たとえば5つの値(たとえば、0、lo%、med%、hi%、1)に分類することを避けたいと思います。

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

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


7
何かがいる:あなたは、これらのデータについての私達に言って、彼らがどこから来たほうが良いでしょうクランプ自然を超えて延びていることが分布の間隔を。データに適していない測定方法または統計手順を使用した可能性があります。洗練された分布近似手法、非線形再表現、ビニングなどを使用してこのようなミスを修正しようとすると、エラーが悪化するだけなので、問題を完全に回避するのが良いでしょう。[0,1]
whuber

2
@whuber-良い考えですが、変数は、残念なことに石に設定されている複雑な官僚制度を通じて作成されました。ここに含まれる変数の性質を開示する自由はありません。
rolando2

1
さて、一撃の価値がありました。データを変換する代わりに、MLプロシージャの形式でクランプメカニズムを認識して、回帰を実行する必要があるかもしれないと考えています。 。
whuber

団結よりも小さいパラメータとベータ分布を試してみて、en.wikipedia.org/wiki/File:Beta_distribution_pdf.svg
Alecosパパドプロス

2
このタイプのバスタブまたはU字型の配信は、多くの人が出版物の単一の号を読む雑誌の読者層で一般的です。いくつかのコメントと回答は、ベータ分布を可能な解決策の1つとして指摘しています。私がよく知っている文献は、より適切な選択肢としてベータ二項式を指摘しています。
マイクハンター

回答:


47

打ち切り回帰のメソッドは、このようなデータを処理できます。 彼らは、残差が通常の線形回帰のように振る舞うと仮定しますが、

  1. (左打ち切り):データに依存しない(ただし、ケースごとに異なる可能性がある)低しきい値よりも小さい値はすべて定量化されていません。および/または

  2. (右打ち切り):データに依存しない(ただし、ケースごとに異なる可能性がある)高しきい値よりも大きい値はすべて、定量化されていません。

「定量化されていない」とは、値がそのしきい値を下回る(または上回る)かどうかを知ることを意味しますが、それだけです。

フィッティング方法は通常、最尤法を使用します。ベクトルXに対応する応答モデルが次の形式の場合YX

YXβ+ε

IIDと共通の分布を有するF σは、 PDFが持つF σ(ここで、σは未知の「迷惑パラメータ」である)、次いで、 -検閲の非存在下で-観測値の対数尤度をX IY IでありますεFσfσσ(xi,yi)

Λ=i=1nlogfσ(yixiβ).

本発明を検閲して、我々は、クラスを(おそらく空の)三つにケースを分割することができる:インデックスのN 1Y iが含まれて下限閾値の値とを表す左側打ち切りデータを、インデックスのI = N 1 + 1N 2Y iは定量化されます。残りのインデックスについては、y i上限しきい値を含み、右打ち切りを表しますi=1n1yii=n1+1n2yiyiデータ。対数尤度は、以前と同じ方法で取得されます。これは、確率の積のログです。

Λ=i=1n1logFσ(yixiβ)+i=n1+1n2logfσ(yixiβ)+i=n2+1nlog(1Fσ(yixiβ)).

これは関数として数値的に最大化されます。(β,σ)

私の経験では、そのような方法は、半分以下のデータが打ち切られたときにうまく機能します。そうしないと、結果が不安定になる可能性があります。


RcensRegパッケージを使用した簡単なは、大量のデータがあってもOLSと検閲結果が(大きく)異なる場合があることを示しています。問題のデータを定性的に再現します。

library("censReg")
set.seed(17)
n.data <- 2960
coeff  <- c(-0.001, 0.005)
sigma  <- 0.005
x      <- rnorm(n.data, 0.5)
y      <- as.vector(coeff %*% rbind(rep(1, n.data), x) + rnorm(n.data, 0, sigma))
y.cen           <- y
y.cen[y < 0]    <- 0
y.cen[y > 0.01] <- 0.01
data = data.frame(list(x, y.cen))

:通知に重要なものはパラメータであり、真の勾配がある真の切片がある- 0.001、そして真のエラーSDはある0.0050.0050.0010.005

との両方lmを使用censRegして、行に合わせましょう。

fit <- censReg(y.cen ~ x, data=data, left=0.0, right=0.01)
summary(fit)

この打ち切り回帰の結果はprint(fit)

(Intercept)           x       sigma 
  -0.001028    0.004935    0.004856 

0.0010.0050.005

fit.OLS <- lm(y.cen ~ x, data=data)
summary(fit.OLS)

与えられたOLSフィットは、print(fit.OLS)であり、

(Intercept)            x  
   0.001996     0.002345  

summary0.002864

比較のために、回帰を定量化されたデータに制限しましょう。

fit.part <- lm(y[0 <= y & y <= 0.01] ~ x[0 <= y & y <= 0.01])
summary(fit.part)

(Intercept)  x[0 <= y & y <= 0.01]  
   0.003240               0.001461  

さらに悪いことに!

状況をいくつかの写真にまとめています。

lineplot <- function() {
  abline(coef(fit)[1:2], col="Red", lwd=2)
  abline(coef(fit.OLS), col="Blue", lty=2, lwd=2)
  abline(coef(fit.part), col=rgb(.2, .6, .2), lty=3, lwd=2)
}
par(mfrow=c(1,4))
plot(x,y, pch=19, cex=0.5, col="Gray", main="Hypothetical Data")
lineplot()
plot(x,y.cen, pch=19, cex=0.5, col="Gray", main="Censored Data")
lineplot()
hist(y.cen, breaks=50, main="Censored Data")
hist(y[0 <= y & y <= 0.01], breaks=50, main="Quantified Data")

プロット

00.01

Y0.00320.0037


すばらしい回答(+1)。2つの打ち切りspkiesを視覚的に削除すると、従属変数には指数分布に近いものがあるように見えます。まるで基になるデータが何らかのプロセスの長さであるかのようです。これは考慮すべきことですか?
user603

@ user603ガウスの上腕の一部で定量化された値をシミュレートしました。実際は:-)。関連する確率モデルは、応答変数自体ではなく残差に関係するため、ここで注意する必要があります。少し注意が必要ですが、打ち切られた残差プロットや打ち切られた確率プロットを作成して、仮想分布に対する適合度を評価できます。
whuber

私のポイントは、二重検閲ガウス、彼のヒストグラムで無修正値はやや平らでなければならないことですが、我々は0から離れるよう彼らを静かに減少しているように見える
user603

1
@ user603ああ、そうではありません。定量化された値のヒストグラムを自分で見てみましょう。問題のように、それらはほぼ直線的に下向きに傾斜しているように見えます。
whuber

2
データセットで打ち切り回帰を試してみましたが、結果はOLSの結果よりもよく交差検証されました。私のツールキットへの素晴らしい追加-thx。
rolando2

9

値は常に0と1の間ですか?

もしそうなら、ベータ分布とベータ回帰を検討するかもしれません。

ただし、データにつながるプロセスをよく考えてください。0および1の膨張モデルを実行することもできます(0膨張モデルは一般的です。おそらく、自分で1膨張モデルに拡張する必要があります)。大きな違いは、これらのスパイクが正確な0と1の多数を表す場合、または0と1に近い値だけを表す場合です。

最良のアプローチを決定するには、地元の統計学者(データの出所の詳細を議論できるように秘密保持契約)と相談するのが最善かもしれません。


2
01

はい、常に0%から1%の範囲です...そして、これらのスパイクは実際に正確に0%と1%です。ゼロまたはゼロと1つの膨張モデルは、これらのような非カウントデータに適用できますか?
rolando2

1
ゼロの膨張した法線がありますが、ここでは適用されません。
ピーターフロム-モニカの復職

正確な0と1が連続しているが、その領域の外側の値が0または1に丸められた基本的な連続分布があるように見えます。
グレッグスノー

4

Greg Snowのアドバイスと一致して、ベータモデルはそのような状況でも有用であると聞きました(Smithson&verkuilen、2006、A Better Lemon Squeezerを参照)、および分位回帰(Bottai et al。、2010)床と天井の効果が非常に顕著であるように思われます(特にベータ回帰)。

別の代替案は、打ち切られた回帰モデルのタイプ、特にTobit Modelを考慮することです。ここでは、観測された結果が、連続する(そしておそらく正常な)潜在的な潜在変数によって生成されると考えます。ヒストグラムを考えると、この基礎となる連続モデルが合理的であるとは言いませんが、分布を見ると(床を無視して)、楽器の値が低いほど密度が高く、ゆっくりと高くなるのを見ることができます値。

幸運なことに、検閲は非常に劇的であるため、極端なバケット内で多くの有用な情報を回復することを想像するのは困難です。あなたのサンプルのほぼ半分が床と天井のビンに入っているように思えます。

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