ビニングされたデータの3番目の四分位数を推定する方法は?


12

人口の4分の1以上を含むオープンインターバルに属する場合、3番目の四分位を決定するための技術的なトリックはありますか(したがって、インターバルを閉じて標準式を使用できません)?

編集

何かを誤解した場合に備えて、多かれ少なかれ完全なコンテキストを提供します。2列、たとえば6行のテーブルにデータを配置しています。各列は、間隔(最初の列)とその間隔に「属する」人口の量に対応します。最後の間隔は開いており、人口の25%以上が含まれます。すべての間隔(最後を除く)の範囲は同じです。

サンプルデータ(プレゼンテーション用に転置):

Column 1: (6;8),(8;10),(10;12),(12;14),(14;16),(16;∞)
Column 2:    51,    65,     68,     82,     78,   182 

最初の列は、収入レベルの範囲として解釈されます。2番目は、収入が間隔に属する従業員の数として解釈されます。

私が考えている標準的な式はQ3=xQ3+3N4i=1k1ninQ3rQ3


ビン化されたデータを使用して変位値を推定する際の一般的な仮定は、ビン内の均一性を仮定することです。しかし、データがどのように分配される可能性が高いかについて(何かが正しいスキューである場合)、知識が優れている傾向があることを反映する仮定について何かを知っているとき。別の代替方法は、それが滑らかであると仮定し、データを滑らかにし(KDEまたは適合した分布によって)、モデルに従ってビン内の点を再分布することです(おそらく(ややEMのように)適合を再推定し、再度ビンに再配布する]]から、分位数を推定します。
-Glen_b-モニカーの復活2014

回答:


16

これらのビニングされたデータを何らかの分布モデルに適合させる必要があります。それが上位四分位に外挿する唯一の方法です。

モデル

定義により、このようなモデルは0から1に上昇するcadlag関数によって与えられます。任意の間隔a b ]に割り当てる確率は、F b F F01(a,b]。フィットを作るために、あなたは(ベクトルでインデックス付け可能な機能の家族を断定する必要があります)パラメータ θ { Fのθ }。サンプルは、いくつかの特定の(しかし未知の)によって記述集団から無作為に及び独立して選ばれる人々のコレクションをまとめたものと仮定すると、 F θF(b)F(a)θ{Fθ}Fθ、試料の確率(または尤度は)個々の確率の積です。例では、それは等しいだろうL

L(θ)=(Fθ(8)Fθ(6))51(Fθ(10)Fθ(8))65(Fθ()Fθ(16))182

ので、人の確率が関連付けられていますF θ8 - Fのθ6 6551Fθ(8)Fθ(6)65確率を有するなど。Fθ(10)Fθ(8)

モデルをデータに適合させる

最尤推定値最大になる値Lを(同等、又は、の対数L)。θLL

所得分布は、多くの場合、対数正規分布によってモデル化されます(たとえば、http://gdrs.sourceforge.net/docs/PoleStar_TechNote_4.pdfを参照)。と書くと、対数正規分布のファミリーはθ=(μ,σ)

F(μ,σ)(x)=12π(log(x)μ)/σexp(t2/2)dt.

このファミリ(および他の多くのファミリ)では、数値的に最適化するのは簡単です。たとえば、log L θ を計算して最適化する関数を作成すると、log L LRlog(L(θ))log(L)の最大値と一致自体と(通常)ログLが計算するために簡単です数値的に安定して動作します:Llog(L)

logL <- function(thresh, pop, mu, sigma) {
  l <- function(x1, x2) ifelse(is.na(x2), 1, pnorm(log(x2), mean=mu, sd=sigma)) 
                        - pnorm(log(x1), mean=mu, sd=sigma)
  logl <- function(n, x1, x2)  n * log(l(x1, x2))
  sum(mapply(logl, pop, thresh, c(thresh[-1], NA)))
}

thresh <- c(6,8,10,12,14,16)
pop <- c(51,65,68,82,78,182)
fit <- optim(c(0,1), function(theta) -logL(thresh, pop, theta[1], theta[2]))

この例の解は、値に見出されます、。θ=(μ,σ)=(2.620945,0.379682)fit$par

モデルの仮定の確認

少なくともこれが仮定された対数正規性にどれだけ適合しているかを確認する必要があるため、を計算する関数を作成します。F

predict <- function(a, b, mu, sigma, n) {
  n * ( ifelse(is.na(b), 1, pnorm(log(b), mean=mu, sd=sigma)) 
        - pnorm(log(a), mean=mu, sd=sigma) )

データに適用されて、近似または「予測」ビン母集団が取得されます。

pred <- mapply(function(a,b) predict(a,b,fit$par[1], fit$par[2], sum(pop)), 
               thresh, c(thresh[-1], NA))

これらのプロットの最初の行に示すように、データと予測のヒストグラムを描画して視覚的に比較できます。

ヒストグラム

それらを比較するために、カイ2乗統計を計算できます。これは通常、有意性を評価するためにカイ2乗分布と呼ばれます

chisq <- sum((pred-pop)^2 / pred)
df <- length(pop) - 2
pchisq(chisq, df, lower.tail=FALSE)

の「p値」は、多くの人に適合が良くないと感じさせるほど小さいです。プロットを見ると、問題は明らかに最低の6 8ビンに集中しています。おそらく、下の末端はゼロであるはずでしたか?探索的な方法で、6を削減する場合0.008768630.40

近似を使用して変位値を推定する

63(μ,σ)(2.620334,0.405454)F75th

exp(qnorm(.75, mean=fit$par[1], sd=fit$par[2]))

18.066317.76

これらの手順とこのコードは、一般的に適用できます。最尤法の理論をさらに活用して、3番目の四分位の周りの信頼区間を計算できます(関心がある場合)。


わあ、ありがとう!解決策を見つけるために、このような(少なくとも私にとって)高度な機械が使用されるとは思わなかったことを認めなければなりません。
ATAD

機械は高度または高度である必要はありませんが、この例と同じ一般的な線に従う必要があります:所得分布について何かを仮定し、それを使用して数学モデルに適合し、妥当性についてモデルをチェックし、合理的な適合、それを使用して四分位数を計算します。途中で、興味深いパターンを明らかにできるため、グラフィカルな方法を使用します。(ここでの関心は、所得層で対数正規性からの明らかな逸脱があることです。なぜそれが発生し、この人口について何を言っているのでしょうか。)
whuber

+1、素晴らしい答え。まだRを学ばなければならないようです。
ダブ14

8

コメントが長すぎます:

whubersの答えは他の人と同じくらい良いですが、彼は対数正規モデルで正しい歪みを仮定しています。これは、一般人口の収入については現実的かもしれませんが、特定のグレードの単一の雇用主の収入についてはそうではありません。

68645017.5

8017.3ます。

17


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