幾何学の問題とディストリビューションのビューb⃗ ⋅a⃗ と|b⃗ |2
以下は、問題の幾何学的ビューです。a⃗ の方向は実際には問題ではなく、これらのベクトルの長さを使用できます|a⃗ |と|b⃗ |すべての必要な情報を提供します。
ベクトルの射影の長さの分布 b⃗ 上a⃗ あろうb⃗ ⋅a⃗ /|a⃗ |∼N(|a⃗ |,1)あなたが探していることを量に関係しています
b⃗ ⋅a⃗ ∼N(|a⃗ |2,|a⃗ |2)
さらに、サンプルベクトルの2乗の長さを推定できます|b⃗ |2配布有する非中心カイ二乗分布の自由度で、p及びパラメータ非心∑pk=1μ2k=|a⃗ |2
|b⃗ |2∼χ2p,|a⃗ |2
さらに
(|b⃗ |2−(b⃗ ⋅a⃗ )2|a⃗ |2)conditional on b⃗ ⋅a⃗ and |a⃗ |2∼χ2p−1
間隔推定、この最後の式が示すb⃗ ⋅a⃗ できるので、特定の観点から、信頼区間として見ることb⃗ ⋅a⃗ の分布のパラメータとして見ることができます|b⃗ |2。しかし、迷惑なパラメータがあるため、複雑になります|a⃗ |2、また、パラメータはb⃗ ⋅a⃗ itselveはに関連して、確率変数であります|a⃗ |2。
分布のプロットとa c (→ b、p 、α )を定義するいくつかの方法c(b⃗ ,p,α)
画像では、右使用して95%の領域に対してプロット上にβ1の分布の部分N(|a⃗ |2,|a⃗ |2)及び上部β2のシフト分布の一部χ2p−1、その結果β1⋅β2=0.05
今、大きなトリックは、いくつかのライン描画することですc(|β⃗ |2,p,α)のためにこのようなことをポイント境界いかなる a⃗ 端数がある1−αです(少なくとも)ポイントの下の行を。
線の下は領域が成功する場所であり、これを少なくとも時間の1−α分数で発生させたい。(も参照の信頼区間を構築する基本的なロジックをして、私たちは?帰無仮説ではなく、サンプリングを経て製造信頼区間で帰無仮説拒否することができる類似の理由のためではなく、単純な設定にします)。
状況を把握することに成功できるかどうかは疑問です。
∀|a⃗ |:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))=α
しかし、私たちは常に次のような結果を得ることができるはずです
∀|a⃗ |:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))≤α
以上厳密少なくともアッパーのバインドされているすべてPr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))に等しく、α
sup{Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α)):|a⃗ |≥0}=α
画像内の複数の線|a⃗ |単一の領域のピークに接する線を使用して、関数c(|b⃗ |,p,α)を定義します。これらのピークを使用することにより、我々は次のようであることを意図していた元の地域、ということですかα=β1β2最適にカバーされていません。代わりに、より少ない点が(したがって線下回るα>β1β2)。小さな|a⃗ |これらは上部になるでしょう|a⃗ |これは正しい部分です。だからあなたは得るでしょう:
|a⃗ |<<1:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))≈β2|a⃗ |>>1:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))≈β1
そして
sup{Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α)):|a⃗ |≥0}≈max(β1,β2)
したがって、これはまだ少し作業中です。状況を解決する1つの可能な方法は、試行錯誤によって改善を続けるパラメトリック関数を使用して、線がより一定になるようにすることです(ただし、あまり洞察力がありません)。あるいは、ライン/関数の微分関数を記述することもできます。
# find limiting 'a' and a 'b dot a' as function of b²
f <- function(b2,p,beta1,beta2) {
offset <- qchisq(1-beta2,p-1)
qma <- qnorm(1-beta1,0,1)
if (b2 <= qma^2+offset) {
xma = -10^5
} else {
ysup <- b2 - offset - qma^2
alim <- -qma + sqrt(qma^2+ysup)
xma <- alim^2+qma*alim
}
xma
}
fv <- Vectorize(f)
# plot boundary
b2 <- seq(0,1500,0.1)
lines(fv(b2,p=25,sqrt(0.05),sqrt(0.05)),b2)
# check it via simulations
dosims <- function(a,testfunc,nrep=10000,beta1=sqrt(0.05),beta2=sqrt(0.05)) {
p <- length(a)
replicate(nrep,{
bee <- a + rnorm(p)
bnd <- testfunc(sum(bee^2),p,beta1,beta2)
bta <- sum(bee * a)
bta <= bnd
})
}
mean(dosims(c(1,rep(0,7)),fv))
### plotting
# vectors of |a| to be tried
las2 <- 2^seq(-10,10,0.5)
# different values of beta1 and beta2
y1 <- sapply(las2,FUN = function(las2)
mean(dosims(c(las2,rep(0,24)),fv,nrep=50000,beta1=0.2,beta2=0.2)))
y2 <- sapply(las2,FUN = function(las2)
mean(dosims(c(las2,rep(0,24)),fv,nrep=50000,beta1=0.4,beta2=0.1)))
y3 <- sapply(las2,FUN = function(las2)
mean(dosims(c(las2,rep(0,24)),fv,nrep=50000,beta1=0.1,beta2=0.4)))
plot(-10,-10,
xlim=c(10^-3,10^3),ylim=c(0,0.5),log="x",
xlab = expression("|a|"), ylab = expression(paste("effective ", alpha)))
points(las2,y1, cex=0.5, col=1,bg=1, pch=21)
points(las2,y2, cex=0.5, col=2,bg=2, pch=21)
points(las2,y3, cex=0.5, col=3,bg=3, pch=21)
text(0.001,0.4,expression(paste(beta[2], " = 0.4 ", beta[1], " = 0.1")),pos=4)
text(0.001,0.25,expression(paste(beta[2], " = 0.2 ", beta[1], " = 0.2")),pos=4)
text(0.001,0.15,expression(paste(beta[2], " = 0.1 ", beta[1], " = 0.4")),pos=4)
title(expression(paste("different effective ", alpha, " for different |a|")))