広がりの「均一性」の尺度はありますか?


14

私はウェブで調べましたが、役に立つものは見つかりませんでした。

私は基本的に、値がどのくらい「均等に」分布しているかを測定する方法を探しています。同様に、Xのような「均等な」分散ディストリビューション: ここに画像の説明を入力してください

そして、ほぼ同じ平均と標準偏差の「不均一」な分布Yここに画像の説明を入力してください

しかし、m(X)> m(Y)のような均等性の尺度mはありますか?存在しない場合、このようなメジャーを作成する最良の方法は何でしょうか?

(Khan Academyの画像スクリーンショット)


1
スキューはどうですか?
wolfsatthedoor 14年

エントロピーは、同じサポートを持つ離散分布に適しています。しかし、私はそれが継続的な分布に適しているかどうかわかりません。
ステファンローラン14年

あなたはドットプロットがあなたが望むものであると確信していますか?均一性について質問するつもりはないと思います。これは、「塊」や「クラスタリングの程度」、さらにはマルチモダリティについての質問のように聞こえます。
シャドウトーカー14年

@StéphaneLaurent-いくつかの他の人にもエントロピーが勧められました。時間をかけて少し詳しく説明していただけますか?
ケタン14年

1
「均等に分散」という意味をより明確に定義する必要があります。私の文字通りの頭脳は、1、4、7、10、13などのデータは完全に均等に分散されていると言います。しかし、あなたは完全に異なる何かを意味するかもしれません。
エミールフリードマン14年

回答:


16

「均一性」の標準、強力、十分に理解され、理論的に確立され、頻繁に実装される尺度は、リプリーK関数とその近縁のL関数です。 これらは通常、2次元の空間ポイント構成を評価するために使用されますが、1次元に適合させるために必要な分析(通常は参照では提供されません)は簡単です。


理論

K関数は、典型的なポイントの距離内のポイントの平均比率を推定します。間隔で均一な分布のために[ 0 1 ]、真の割合は、(試料サイズに漸近)を計算することができ、等しい1 - 1 - D 2。L関数の適切な1次元バージョンは、Kからこの値を減算して、均一性からの偏差を示します。 そのため、データのバッチを正規化して単位範囲を作成し、そのL関数を調べてゼロ付近の偏差を調べることを検討します。d[0,1]1(1d)2


実施例

例示するために、私は、シミュレートされたサイズの独立したサンプル64を一様分布から短い距離のためのそれらの(正規化)L関数をプロットした(から99964 1 / 3、それによりL関数のサンプリング分布を推定するエンベロープを作成します)。(このエンベロープ内のプロットされたポイントは、均一性と大きく区別することはできません。)この上に、U字型分布、4つの明白な成分を持つ混合分布、および標準正規分布から同じサイズのサンプルのL関数をプロットしました。これらのサンプル(およびその親分布)のヒストグラムは、参照用に、ライン関数を使用してL関数のヒストグラムと一致するように表示されます。01/3

図

U字型の分布の鋭く分離されたスパイク(赤い破線、左端のヒストグラム)は、狭い間隔の値のクラスターを作成します。これは、でのL関数の非常に大きな勾配に反映されます。その後、L関数は減少し、最終的に負になり、中間距離のギャップを反映します。0

からのサンプル 正規分布(青色の実線、右端のヒストグラム)ほぼ均一に分布しています。したがって、そのL関数はすぐにから逸脱しません。しかし、0.10程度の距離で、エンベロープを十分に超えて上昇し、わずかなクラスター化傾向を示しています。中間の距離にわたって継続的に上昇していることは、クラスタリングが拡散しており、広範囲に広がっていることを示しています(一部の孤立したピークに限定されません)。00.10

混合分布からのサンプルの最初の大きな勾配(中央のヒストグラム)は、短い距離(未満)でのクラスタリングを明らかにしています。負のレベルに低下することにより、中間距離での分離を通知します。これをU字型の分布のL関数と比較すると、0での勾配、これらの曲線が0を超える量、および最終的に0に戻る速度はすべて、データ。これらの特性はいずれも、特定のアプリケーションに合わせて「均一性」の単一の尺度として選択できます。0.15000

これらの例は、均一性(「均一性」)からのデータの逸脱を評価するためにL関数を調べる方法と、そこから逸脱の規模と性質に関する定量的情報を抽出する方法を示します。

(均一化からの大規模な逸脱を評価するために、完全に正規化された距離に及ぶL関数全体を実際にプロットできます。しかし、通常、より短い距離でのデータの挙動を評価することはより重要です。)1


ソフトウェア

Rこの図を生成するコードは次のとおりです。KとLを計算する関数を定義することから始めます。混合分布からシミュレートする機能を作成します。次に、シミュレートされたデータを生成し、プロットを作成します。

Ripley.K <- function(x, scale) {
  # Arguments:
  # x is an array of data.
  # scale (not actually used) is an option to rescale the data.
  #
  # Return value:
  # A function that calculates Ripley's K for any value between 0 and 1 (or `scale`).
  #
  x.pairs <- outer(x, x, function(a,b) abs(a-b))  # All pairwise distances
  x.pairs <- x.pairs[lower.tri(x.pairs)]          # Distances between distinct pairs
  if(missing(scale)) scale <- diff(range(x.pairs))# Rescale distances to [0,1]
  x.pairs <- x.pairs / scale
  #
  # The built-in `ecdf` function returns the proportion of values in `x.pairs` that
  # are less than or equal to its argument.
  #
  return (ecdf(x.pairs))
}
#
# The one-dimensional L function.
# It merely subtracts 1 - (1-y)^2 from `Ripley.K(x)(y)`.  
# Its argument `x` is an array of data values.
#
Ripley.L <- function(x) {function(y) Ripley.K(x)(y) - 1 + (1-y)^2}
#-------------------------------------------------------------------------------#
set.seed(17)
#
# Create mixtures of random variables.
#
rmixture <- function(n, p=1, f=list(runif), factor=10) {
  q <- ceiling(factor * abs(p) * n / sum(abs(p)))
  x <- as.vector(unlist(mapply(function(y,f) f(y), q, f)))
  sample(x, n)
}
dmixture <- function(x, p=1, f=list(dunif)) {
  z <- matrix(unlist(sapply(f, function(g) g(x))), ncol=length(f))
  z %*% (abs(p) / sum(abs(p)))
}
p <- rep(1, 4)
fg <- lapply(p, function(q) {
  v <- runif(1,0,30)
  list(function(n) rnorm(n,v), function(x) dnorm(x,v), v)
  })
f <- lapply(fg, function(u) u[[1]]) # For random sampling
g <- lapply(fg, function(u) u[[2]]) # The distribution functions
v <- sapply(fg, function(u) u[[3]]) # The parameters (for reference)
#-------------------------------------------------------------------------------#
#
# Study the L function.
#
n <- 64                # Sample size
alpha <- beta <- 0.2   # Beta distribution parameters

layout(matrix(c(rep(1,3), 3, 4, 2), 2, 3, byrow=TRUE), heights=c(0.6, 0.4))
#
# Display the L functions over an envelope for the uniform distribution.
#
plot(c(0,1/3), c(-1/8,1/6), type="n", 
     xlab="Normalized Distance", ylab="Total Proportion",
     main="Ripley L Functions")
invisible(replicate(999, {
  plot(Ripley.L(x.unif <- runif(n)), col="#00000010", add=TRUE)
}))
abline(h=0, lwd=2, col="White")
#
# Each of these lines generates a random set of `n` data according to a specified
# distribution, calls `Ripley.L`, and plots its values.
#
plot(Ripley.L(x.norm <- rnorm(n)), col="Blue", lwd=2, add=TRUE)
plot(Ripley.L(x.beta <- rbeta(n, alpha, beta)), col="Red", lwd=2, lty=2, add=TRUE)
plot(Ripley.L(x.mixture <- rmixture(n, p, f)), col="Green", lwd=2, lty=3, add=TRUE)
#
# Display the histograms.
#
n.breaks <- 24
h <- hist(x.norm, main="Normal Sample", breaks=n.breaks, xlab="Value")
curve(dnorm(x)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, col="Blue")
h <- hist(x.beta, main=paste0("Beta(", alpha, ",", beta, ") Sample"), 
          breaks=n.breaks, xlab="Value")
curve(dbeta(x, alpha, beta)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, lty=2, col="Red")
h <- hist(x.mixture, main="Mixture Sample", breaks=n.breaks, xlab="Value")
curve(dmixture(x, p, g)*n*mean(diff(h$breaks)), add=TRUE, lwd=2, lty=3, col="Green")

1
私は主にNumpyで働いており、時々SciPyで働いています。このメジャーが統計pythonライブラリで利用可能かどうかはわかりますか?検索しても、関連するものは何も返されません。
ケタン14年

通常、L関数は2つ以上の次元に対してコード化されているため、L関数は使用できません。ここでの実装からわかるように、アルゴリズムは単純です。すべての異なるデータペア間の距離の経験累積分布関数を計算し、次に示すように調整しRipley.Lます。
whuber

メジャー分散は不可知論的または分散依存ですか?
ケタン14年

1
私はここで説明した基本的な手順は、間隔の範囲の対応を行うためにデータを正規化し。そのため、「分散不可知論」です。ただし、それにより、外れ値の影響を受けやすくなります。(この問題は、より高い次元で重大な問題であり得る。)一つは、正規化することによってその制限を克服すると言う、(例えば、IQRのような)分位範囲および適切な調整を行うことができる1 - 1 - D 2補正用L関数。これにより、結果のL関数がノンパラメトリックになります。[0,1]1(1d)2堅牢になり、コメントの背後にある懸念に対処できると思います。
whuber

「この問題は、高次元では深刻な問題になる可能性があります」とおっしゃいました。単変量配列に適応されていますか?すべてをよく理解しているかどうかは完全にはわかりません。Ripley.Lを他の言語または擬似コードで書いていただけますか?または、既存のコードを少しコメントするか、少なくともRipley.Lを複数行にフォーマットして読みやすくします。statsmodels.sourceforge.net/stable/generated/…に適切なドキュメントがないと、とにかくあまり助けになりません。
ケタン14年

5

ユニフォームへの分布がどれだけ近いかを測定したいと思います。

一様分布の累積分布関数とサンプルの経験的累積分布関数の間の距離を調べることができます。

のは、変数がセットで定義されていると仮定する。次に、一様分布は次の式で与えられる累積分布関数F ux )を持ちます。{1,2,3,4,5}Fu(x)

Fu(x)=i=1[x]1/5.

さて、あなたのサンプルと仮定ある1 3 5Xの経験的分布はX1,3,5X

FX(1)=1/3,FX(2)=1/3,FX(3)=2/3,FX(4)=2/3,FX(5)=1

そして、サンプル聞かせてあること1 1 5。次に、Yの経験的分布はY1,1,5Y

FY(1)=2/3,FY(2)=2/3,FY(3)=2/3,FY(4)=2/3,FY(5)=1

さて、分布間の距離の尺度として、各ポイントでの距離の合計を取りましょう。

d(F,G)=i=15|F(x)G(x)|.

ことが簡単にわかります。d(Fu,FX)<d(Fu,FY)

より複雑な場合は、上記で使用した基準を修正する必要がありますが、主な考え方は変わりません。テスト手順が必要な場合は、テストが開発された標準(@TomMinkaが指摘した標準)を使用するとよい場合があります。


分布までの距離のその他の一般的な尺度には、コルモゴロフ-スミルノフ検定アンダーソン-ダーリング検定があります。
トムミンカ14年

こんにちは。答えてくれてありがとう。明確化のために更新された質問を再訪し、あなたの答えがそれに当てはまるかどうか私に知らせてください。もしそうなら。確認する必要があります。
ケタン14年

はい、「偶数」が「均一」を意味する限り、私の答えはそれに適用されます。
ルカシュKidziński

はい。答えを少し詳しく教えてください。
ケタン14年

@TomMinkaに感謝します。テスト手順が開発されているので、これらの規範は明らかに優れています。
ルカシュKidziński

1

私があなたの質問を正しく理解していれば、あなたにとっての「最も均一な」分布は、ランダム変数が観測されたすべての値を一度取るような分布になります。同じ値の観測値の「クラスター」がある場合、それは不均一になります。個別の観測値について話していると仮定すると、おそらく、確率質量点の平均差、最大差、または特定のしきい値を超える「平均」との差がある観測値の数の両方を調べることができます。

観測値が本当に均一である場合、すべてのPMポイントの値は等しく、最大値と最小値の差は0です。平均値の差が0に近いほど、観測値の大部分が「均等」になり、最大の差異と、より少ない「ピーク」も、経験的観測が「均等」であることを示します。

更新 もちろん、均一性のためにカイ二乗検定を使用するか、経験分布関数を均一と比較することができますが、その場合、観測値の分布がまだであっても、観測値の大きな「ギャップ」によってペナルティが課せられます「偶数」。


指定可能な値のセットについて、その値のセットから特定の値がどのように「まれ」または「特異」になるかを基本的にモデル化したいと思います。他のオプションがないため、値がどれだけ均等または均一に分布しているかを測定しようとしています。分布が均一であればあるほど、セットから固有の値を取得できる可能性は低くなります。一方、たとえばすべてのデータが分布の両極端にある場合、どの値も「特異」と見なされるに値するものになります。私はあなたがそれを手に入れることを望みますか?
ケタン14年

1

探している指標は、正式には不一致と呼ばれます。

一次元バージョンは次のとおりです。

I=[a,b)x1,,xNI

JIA(J,N)J

A(J,N)=|{x1,,xN}J|,
V(J)J

x1,,xN

>DN=supJ|A(J,N)V(J)N|,
J=j=1[0,tj)0tj1

x1,,xNI

低不一致シーケンスは、しばしば準ランダムシーケンスと呼ばれます

低不一致シーケンスの基本的な概要はここにあり、私のブログ記事「準ランダムシーケンスの不合理な有効性」では、数値積分、球の表面へのマッピング、準周期的タイリングに適用した場合のさまざまな方法を比較しています。


0

R2=1R2


あなたが何を意味しているかを十分に理解しているかどうかはわかりませんが、ディストリビューションで何かがどのように「均等に」配布されているかを理解する必要があります。分散は、同じ分散を取得し、2つの非常に異なる分布の平均を得ることができるため、それほど有用ではありません。
ケタン14年

@ケタン、あなたはあなたの質問を大幅に変えました。いずれにせよ、それが何であるかは明確ではありません。いずれにせよ、質問の最新バージョンに基づいて、私の答えがあなたが興味を持っているものに取り組んでいないことは明らかです。
AdamO 14年

指定可能な値のセットについて、その値のセットから特定の値がどのように「まれ」または「特異」になるかを基本的にモデル化します。他のオプションがないため、値がどれだけ均等または均一に分布しているかを測定しようとしています。分布が均一であればあるほど、セットから固有の値を取得できる可能性は低くなります。一方、たとえばすべてのデータが分布の両極端にある場合、どの値も「特異」と見なされるに値するものになります。私はあなたがそれを手に入れることを望みますか?
ケタン14年

いいえ、申し訳ありませんがまだフォローしていません。確認するために、「均一に」分散されたデータの正式な定義に精通していますか?たとえば、「正規」分布は一様ではありません。両方とも対称です。対称性に興味があるかどうかを暗示しているように見えますが、「まれな」値をサンプリングする確率に興味があると言っているようです。たとえば、コーシー分布は対称ですが、確率モデルとして外れ値を生成する分布の例として知られています。
AdamO 14年

このように言えば、各セットは単にデータセット内の特定の属性のすべての値のセットです。基本的には、各属性をその値がどの程度「安定」しているかを定量化したいのですが、これまでは単純な分散を使用してきました。しかし、昨夜、私は2つの属性についてまったく同じ分散と平均が可能であることに気付きました。したがって、今度は、値が均等に見つかるか、極端に多く存在するかどうかを測定するための追加のメジャーが必要です。
ケタン14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.