3パーセンタイルに基づく分布の推定


23

パーセンタイルが3つしかわからない場合、どの方法を使用して分布を推測できますか?

たとえば、特定のデータセットでは、5パーセンタイルが8,135、50パーセンタイルが11,259、95パーセンタイルが23,611であることを知っています。他の数値からそのパーセンタイルに移行できるようにしたいです。

それは私のデータではなく、それらはすべて私が持っている統計です。分布が正規でないことは明らかです。私が持っている他の唯一の情報は、このデータがさまざまな学区の政府の一人当たりの資金を表しているということです。

この問題には明確な解決策がないことを知るには統計については十分知っていますが、良い推測を見つける方法を知るには十分ではありません。

対数正規分布は適切でしょうか?回帰を実行するためにどのツールを使用できますか(または自分で行う必要がありますか)?


rタグを追加したので、コメントでRコードが強調表示されます
-mpiktas

同じ質問(およびその解決策)の詳細な例については、stats.stackexchange.com / questions / 133129の重複スレッドを参照してください。
whuber

回答:


17

この作業を行うために純粋に統計的な方法を使用しても、学校支出の分布に関する追加情報はまったく提供されません。結果は、アルゴリズムの任意の選択を反映するだけです。

より多くのデータが必要です。

これは簡単に実現できます。前年度のデータ、同等の地区のデータを使用します。たとえば、2008年の14866学区での連邦政府の支出は、国勢調査のサイトから入手できます。全国で、一人当たり(登録)連邦歳入の合計がほぼ対数正規分布しているが、州ごとに分類するとかなりのばらつきがあることが示されています(たとえば、アラスカでのログ支出にはマイナスのスキューがあり、コロラドでのログ支出にはプラスのスキューがあります) 。これらのデータを使用して、分布の可能性の高い形式を特徴付け、その形式に変位値を適合させます。

適切な分布形式に近い場合でも、1つまたは最大2つのパラメーターを近似することで、変位値を正確に再現できるはずです。近似を見つけるための最良の手法は、使用する分布形式に依存しますが、はるかに重要なのは、結果を使用する対象に依存することです。平均支出額を見積もる必要がありますか?支出の上限と下限は?それが何であれ、あなたはあなたの結果で良い決定を下す最高のチャンスを与える適合度のある尺度を採用したいと思います。たとえば、すべての支出の上位10%に関心が集中している場合は、95パーセンタイルを正確に適合させる必要があり、5パーセンタイルの適合についてはほとんど気にする必要はありません。洗練されたフィッティング技術は、これらの考慮事項をあなたのためにしないでしょう。

もちろん、このデータに基づいた意思決定指向の方法が何らかの統計的レシピよりも優れた(または悪い)パフォーマンスを発揮することを誰も合法的に保証することはできませんが、純粋に統計的なアプローチとは異なり、この方法は現実に基づいた基盤を持ち、ニーズに焦点を当てて、批判に対する信頼性と防御力を与えます。


2
+1 より多くのデータ、結果をどのように使用するかが特に重要です。
vqv

2
あなたの答えには多くの知恵があるように思えます。私は彼らが望むものについて私に問題を提起した人々ともっと相談する必要があります。リンクとアドバイスをありがとう。
マークアイヘンラウブ

1
@Mark Best of luck!
whuber

23

@whuberが指摘したように、統計手法はここでは正確に機能しません。他のソースから分布を推測する必要があります。分布がわかったら、非線形方程式を解く練習をします。パラメーターベクトルを使用して、選択した確率分布の分位関数を表します。あなたが持っているのは、次の非線形方程式系です:θfθ

q0.05=f0.05θq0.5=f0.5θq0.95=f0.95θ

ここで、は分位数です。を見つけるには、このシステムを解く必要があります。これで、実際には3パラメーター分布について、この方程式を満たすパラメーターの値が見つかります。2パラメーターおよび1パラメーターの分布の場合、このシステムは過剰に決定されているため、正確な解はありません。この場合、矛盾を最小限に抑えるパラメーターのセットを検索できます。θqθ

q0.05f0.05θ2+q0.5f0.5θ2+q0.95f0.95θ2

ここでは二次関数を選択しましたが、好きなものを選択できます。@whuberのコメントによると、重みを割り当てることができるため、より重要な変位値をより正確に適合させることができます。

4つ以上のパラメーターの場合、システムは未決定であるため、無限の数の解が存在します。

このアプローチを示すサンプルRコードを次に示します。デモンストレーションのために、VGAMパッケージのSingh-Maddala分布から変位値を生成します。この分布には3つのパラメーターがあり、収入分布のモデリングに使用されます。

 q <- qsinmad(c(0.05,0.5,0.95),2,1,4)
 plot(x<-seq(0,2,by=0.01), dsinmad(x, 2, 1, 4),type="l")
 points(p<-c(0.05, 0.5, 0.95), dsinmad(p, 2, 1, 4))

代替テキスト

次に、非線形連立方程式を評価する関数を作成します。

 fn <- function(x,q) q-qsinmad(c(0.05, 0.5, 0.95), x[1], x[2], x[3])

真の値が式を満たすかどうかを確認します。

 > fn(c(2,1,4),q)
   [1] 0 0 0

非線形方程式システムを解くにはnleqslv、パッケージnlqeslvの関数を使用します。

 > sol <- nleqslv(c(2.4,1.5,4.3),fn,q=q)
 > sol$x       
  [1] 2.000000 1.000000 4.000001

ご覧のとおり、正確なソリューションが得られます。次に、これらの変位値に対数正規分布を適合させてみましょう。このために、optim関数を使用します。

 > ofn <- function(x,q)sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2)
 > osol <- optim(c(1,1),ofn)
 > osol$par
   [1] -0.905049  0.586334

結果をプロットします

  plot(x,dlnorm(x,osol$par[1],osol$par[2]),type="l",col=2)
  lines(x,dsinmad(x,2,1,4))
  points(p,dsinmad(p,2,1,4))

代替テキスト

このことから、二次関数がそれほど良くないことがすぐにわかります。

お役に立てれば。


1
すばらしいです!これに費やしたすべての努力に感謝します、mpiktas。私はRに精通していませんが、あなたのコードは十分に説明されているので、あなたが何をしているのかを簡単に伝えることができます。
マーク

この例に感謝します。に2つの間違いがあると思いますofn <- function(x,q) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2]))^2)。私が提案するofn <- function(x) sum(abs(q-qlnorm(c(0.05,0.5,0.95),x[1],x[2],x[3]))^2)ためqの入力ではないofn、とX[3]不足しています。よろしく

9

rriskDistributionsパッケージを試してみてください-対数正規分布ファミリーについて確信があるなら-コマンドを使用してください

get.lnorm.par(p=c(0.05,0.5,0.95),q=c(8.135,11.259,23.611))

これで問題が解決します。fit.perc1つの既知のpdfに制限しない場合は、代わりに使用します。


超シンプルなソリューション!
ルチョナチョ

6

対数正規分布の場合、95パーセンタイルの中央値に対する比率は、中央値の5パーセンタイルに対する比率と同じです。ここではほとんど真実ではないため、対数正規分布は適切ではありません。

3つのパラメーターを持つ分布に適合するのに十分な情報があり、明らかにスキュー分布が必要です。分析を簡単にするために、私はお勧めしたいシフト対数ロジスティック分布をそのようクォン機能(すなわちその累積分布関数の逆数)あなたがのために閉じた形の式を得ることができる必要がありますので、合理的に簡単な閉じた形で書くことができます3つの分位数に関する3つのパラメーターと、少しの代数(演習として残しておきます!)この分布は、洪水頻度分析で使用されます。

ただし、他の変位値の推定値の不確実性を示すものではありません。あなたがそれを必要とするかどうかはわかりませんが、統計学者として私はそれを提供できるはずだと思うので、この答えには本当に満足していません。5番目から95番目のパーセンタイルの範囲外に(大部分)を外挿するために、私は確かにこの方法、またはおそらくどの方法使用しません。


1
アドバイスをありがとう。Re:lognormal-すべてから7077を減算し、最後に再び追加することで、中央値に対するパーセンタイルの比率を計算できます。それはどれほど悪い考えでしょうか?
マークアイヘンラウブ

1
良い点は、それが「シフトした対数正規分布」を与えることです。対数正規分布と対数ロジスティックは、後者の重い尾部を除いて形状がかなり似ているため、両方を試して結果を比較できます。
ワンストップ

どのように比較しますか?シフトされた対数正規分布は、変位値に完全に適合することが保証されています。ほとんどの3パラメータファミリは完全に適合します。2つの完全な適合をどのように比較しますか?
whuber

@whuber他の値に対応するパーセンタイルの結果の予測を比較することを意味しました
-onestop

私は何かが欠けています:他にどのような値がありますか?OP では、利用できるパーセンタイルは3つだけであり、それ以外は何もないと述べています。
whuber

2

データから推測できる唯一のことは、分布が非対称であることです。これらの分位数が近似分布に由来するものなのか、単にecdfに由来するものなのかさえわかりません。

それらが適合分布からのものである場合、考えられるすべての分布を試して、一致するかどうかを確認できます。そうでない場合は、十分な情報がほとんどありません。分位関数の2次多項式または3次スプラインを補間して使用するか、分布族に関する理論を考え出し、分位数を一致させることができますが、これらの方法で行う推論は非常に疑わしいでしょう。


1
多項式とスプラインが有効なCDFである可能性は低いです。
whuber

良い観察。この場合、通常の2次多項式は機能しませんが、選択できる2次スプラインは無限に多くあり(ベジエを考えてください)、同じ問題はないはずです(ただし、ドメインのトリミングが必要な場合もあります)。同様に、適切な単調3次スプラインを見つけることができるはずです。私は単調性を保証するスプラインアルゴリズムを知っていますが、今はそれを見つけることができません。そのため、「cdfとして機能する好きなものを選択する」ことに問題を残さなければなりません。
sesqu

単調なスプライン(または何でも)を変位値の対数に適合させ、変位値の範囲内で妥当な値を得ることができます。しかし、これは、2つの極端な変位値を超えてテールを適合させるのに役立ちません。フィットのこのような重要な側面を、数値フィッティング手順の偶発的な特性に任せることに消極的でなければなりません。
whuber

2

先験的分布のパラメータを推定するための分位数の使用は、ヒースコートによって詳細に説明されている「分位点最大確率推定」(QMPE、元々は「分位点最尤推定」、QMLE)と呼ばれる人間の応答時間測定に関する文献で議論されていますと同僚。多くの異なるアプリオリ分布(元ガウス分布、シフト対数正規分布、ウォルド分布、ワイブル分布)を近似し、各分布の結果の最適近似の対数尤度の合計を比較して、最適な近似をもたらすと思われる分布フレーバーを見つけることができます。


2
3パラメータ分布は、3つの変位値に完全に適合することが保証されています。 したがって、このアプローチを使用して1つまたは2つのパラメーターのみに適合させることは理にかなっています。また、尤度のみに基づいて、1つのパラメーターの適合を(異なるファミリーを使用した)2つのパラメーターの適合と比較することは意味がありません。
whuber

@whuber、「3パラメータ分布は、3つの変位値に完全に適合することが保証されています」。私はそれを理解していなかったので、知ってうれしいです!re:「尤度のみに基づいて、1つのパラメーターの適合と(異なるファミリーの)2つのパラメーターの適合とを比較することも意味がありません。」ああ、確かに。パラメーターの数が異なる分布フレーバーと適合を比較する場合、複雑さの修正(AIC、BIC、...)を適用する必要があるとは言いませんでした。それを指摘してくれてありがとう。
マイクローレンス

私は少し誇張しました。なぜなら、2つのパラメーターはスケールと位置であり、3番目のパラメーターは幅広い形状で構成されていると考えていたからです。それでも、ほとんどの3パラメータファミリは、すべてが明確である限り、3パーセンタイルに適合する柔軟性を備えています。
whuber

1

パーセンタイル情報を使用して何らかの方法でデータをシミュレートし、Rパッケージ「logspline」を使用してノンパラメトリックに分布を推定できます。以下は、このようなメソッドを使用する私の関数です。

calc.dist.from.median.and.range <- function(m, r) 
{
    ## PURPOSE: Return a Log-Logspline Distribution given (m, r).
    ##          It may be necessary to call this function multiple times in order to get a satisfying distribution (from the plot). 
    ## ----------------------------------------------------------------------
    ## ARGUMENT:
    ##   m: Median
    ##   r: Range (a vector of two numbers)
    ## ----------------------------------------------------------------------
    ## RETURN: A log-logspline distribution object.
    ## ----------------------------------------------------------------------
    ## AUTHOR: Feiming Chen,  Date: 10 Feb 2016, 10:35

    if (m < r[1] || m > r[2] || r[1] > r[2]) stop("Misspecified Median and Range")

    mu <- log10(m)
    log.r <- log10(r)

    ## Simulate data that will have median of "mu" and range of "log.r"
    ## Distribution on the Left/Right: Simulate a Normal Distribution centered at "mu" and truncate the part above/below the "mu".
    ## May keep sample size intentionaly small so as to introduce uncertainty about the distribution. 
    d1 <- rnorm(n=200, mean=mu, sd=(mu - log.r[1])/3) # Assums 3*SD informs the bound
    d2 <- d1[d1 < mu]                   # Simulated Data to the Left of "mu"
    d3 <- rnorm(n=200, mean=mu, sd=(log.r[2] - mu)/3)
    d4 <- d3[d3 > mu]                   # Simulated Data to the Right of "mu"
    d5 <- c(d2, d4)                     # Combined Simulated Data for the unknown distribution

    require(logspline)
    ans <- logspline(x=d5)
    plot(ans)
    return(ans)
}
if (F) {                                # Unit Test 
    calc.dist.from.median.and.range(m=1e10, r=c(3.6e5, 3.1e12))
    my.dist <- calc.dist.from.median.and.range(m=1e7, r=c(7e2, 3e11))
    dlogspline(log10(c(7e2, 1e7, 3e11)), my.dist) # Density
    plogspline(log10(c(7e2, 1e7, 3e11)), my.dist) # Probability
    10^qlogspline(c(0.05, 0.5, 0.95), my.dist) # Quantiles 
    10^rlogspline(10, my.dist) # Random Sample 
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.