コピュラを使用した簡単なソリューションから、豊富なパラメトリックファミリを開発できます F(x 、y)= min (x 、y)、完全な(正の)相関の場合、および完全な負の相関の対応。代わりに、とを結ぶ線分に沿って確率を集中すると、コピュラが得られます(0 、α )(1 、β)β> α
F(x 、y; α 、β)=⎧⎩⎨⎪⎪x y、βx 、α X + Y- α0 ≤ Y< α または β< y≤ 1x (β- α )≤ Y- αさもないと。
にも同様のコピュラが発生しこれもます。β< αF(x 、y; α 、β)
これらを混合と考えてください。場合、水平方向の長方形、に均一な成分があります。中央の長方形には、完全に相関があります(その分布は分布であり、一様に分布した変数)。この概念により、回帰の計算が容易になります。これは、3つの条件付き平均の加重和であり、β> α[ 0 、1 ] × [ 0 、α ][ 0 、1 ] × [ β、1 ][ 0 、1 ] × [ α 、β](U、α + (β- α )U)UF
E(Y|X)= α (α2)+(β−α)(α+(β−α)X)+(1−β)(1+β2).
これは明らかにで線形です。切片は等しく、勾配は倍の符号です。さらに、境界が均一になるように構成されています。X(1+(β−α)2)/2(β−α)2β−α
パラメトリックファミリーを作成するには、パラメーター分布をパラメーターます。LET分布関数です。統合により混合を記述し:(α,β)θG(α,β;θ)F(;α,β)
F~(x,y;θ)=∬F(x,y;α,β)dG(α,β;θ)
分布関数(コピュラ)です。各境界は均一なので、も同様です。さらに、その回帰は線形であるため、F(;α,β)F~(;θ)
EF~(;θ)(Y∣X)=∬EF(;α,β)(Y∣X)dG(α,β;θ)=∬((1+(β−α)2)/2+sgn(β- α )(β- α)2バツ)dG (α 、β; θ )= ∬(1 + (β- α)2)/ 2 dG (α 、β; θ )+ ∬sgn(β- α )(β- α)2dG (α 、β; θ )バツ=EG (; θ )((1 + (β- α)2)/ 2 )+EG (; θ )(sgn(β- α )(β- α)2)X。
これは、切片と勾配が切片と勾配の期待値(に関して)であることを示し、適切なファミリを選択するための有用な情報を提供します。GG (; θ )
これらのグラフィックは、そのようなファミリのシミュレーションを示しています。ここで、はベータ分布から描画され、はベータ分布から独立して描画されました。最初の列は、これらのパラメーターの実現のヒストグラムを示しています。2番目の列は、と周辺分布のヒストグラムを示しています。これらは均一に十分に近い値です。右端の列は、100,000のシミュレーション値のランダムなサブセットと、その回帰の推定(赤い線)および理論的な回帰の近似(黒い点線)を示しています。これらは密接に一致しています。推定回帰は、の平均を計算することによって得られましたα(5、1 )β(3 、10 )バツYバツそして、の窓内の、その後、黄土で自分のトレースを滑らかに。Yバツ
(「理論的な」回帰直線は、期待値の式のとを期待値で置き換えることによって得られる近似にすぎません。この場合、正確な式は簡単に計算できますが、コードが長くて面倒です。)αβ
R
この図を生成したコードは、容易に他の家族研究するために使用することができる。G (; θ )
#
# Draw `n` variates from the mixture copula.
# `alpha` and `beta` are intended to be realizations of G(;theta).
#
runif.xy <- function(n, alpha=0, beta=1) {
a <- pmin(alpha, beta)
b <- pmax(alpha, beta)
xy <- matrix(runif(2*n), nrow=2) # Start with a uniform distribution
i <- xy[2,] > a & xy[2,] < b # Select the middle rectangle
xy[2, i] <- (xy[1,]*(beta - alpha) + alpha)[i]# Create perfect correlation
return(xy)
}
#
# Specify the parameters ("theta").
#
a.alpha <- 5
b.alpha <- 1
a.beta <- 3
b.beta <- 10
#
# Draw the slope `beta` and intercept `alpha` from G(;theta).
#
n.sim <- 1e5
alpha <- rbeta(n.sim, a.alpha, b.alpha)
beta <- rbeta(n.sim, a.beta, b.beta)
#
# Draw (X,Y) from the mixture.
#
sim <- runif.xy(n.sim, alpha, beta)
#
# Plot histograms of alpha, beta, X, Y.
#
par(mfcol=c(2,3))
hist(alpha); abline(v=a.alpha/(a.alpha+b.alpha), col="Red", lwd=2)
hist(beta); abline(v=a.beta/(a.beta+b.beta), col="Red", lwd=2)
hist(sim[1,], main="X Marginal", xlab="X")
hist(sim[2,], main="Y Marginal", xlab="Y")
#
# Plot the simulation and its regression curve.
#
i <- sample.int(n.sim, min(5e3, n.sim)) # Limit how many points are shown
plot(t(sim[, i]), asp=1, pch=19, col="#00000002", main="Simulation",
xlab="X", ylab="Y")
library(zoo)
i <- order(sim[1,])
x <- as.vector(rollapply(ts(sim[1, i]), ceiling(n.sim/100), mean))
y <- as.vector(rollapply(ts(sim[2, i]), ceiling(n.sim/100), mean))
lines(lowess(y ~ x), col="Red", lwd=2)
#
# Overplot the theoretical regression curve.
#
a <- a.alpha / (a.alpha + b.alpha) # Expectation of `alpha`
b <- a.beta / (a.beta + b.beta) # Expectation of `beta`
intercept <- (1 + (b-a)^2)/2
slope <- (b - a)^2 * sign(b-a)
abline(c(intercept, slope), lty=3, lwd=3)