Vue géométrique du problème et des distributions de b⃗ ⋅a⃗ et |b⃗ |2
Voici une vue géométrique du problème. La direction dea⃗ n'a pas vraiment d'importance et nous pouvons simplement utiliser les longueurs de ces vecteurs |a⃗ | et |b⃗ | qui donnent toutes les informations nécessaires.
La distribution de la longueur de la projection vectorielle de b⃗ sur a⃗ sera b⃗ ⋅a⃗ /|a⃗ |∼N(|a⃗ |,1) qui est liée à la quantité que vous recherchez
b⃗ ⋅a⃗ ∼N(|a⃗ |2,|a⃗ |2)
On peut en outre déduire que la longueur au carré du vecteur d'échantillons |b⃗ |2a la distribution une distribution chi carré non centrale , avec les degrés de libertép et le paramètre de non-centralité ∑pk=1μ2k=|a⃗ |2
|b⃗ |2∼χ2p,|a⃗ |2
en outre
(|b⃗ |2−(b⃗ ⋅a⃗ )2|a⃗ |2)conditional on b⃗ ⋅a⃗ and |a⃗ |2∼χ2p−1
Cette dernière expression montre que l'estimation de l'intervalle pour b⃗ ⋅a⃗ peut , d’un certain point de vue, être considéré comme un intervalle de confiance, carb⃗ ⋅a⃗ peut être considéré comme un paramètre dans la distribution de |b⃗ |2. Mais c'est compliqué car il y a un paramètre de nuisance|a⃗ |2, ainsi que le paramètre b⃗ ⋅a⃗ est lui-même une variable aléatoire, relative à |a⃗ |2.
Plots de distributions et une méthode pour définir un c(b⃗ ,p,α)
Dans l'image ci-dessus, nous avons tracé pour une région à 95% en utilisant la droite β1 une partie de la distribution de N(|a⃗ |2,|a⃗ |2) et le haut β2 une partie de la distribution décalée de χ2p−1 tel que β1⋅β2=0.05
Maintenant, le gros truc est de tracer une ligne c(|β⃗ |2,p,α)qui délimite les points de telle sorte que pour tout a⃗ il y a une fraction 1−αdes points (au moins) qui sont en dessous de la ligne.
Au-dessous de la ligne, c'est là que la région réussit et nous voulons que cela se produise au moins une fraction 1−αdu temps. (voir aussi La logique de base de la construction d'un intervalle de confiance et Pouvons-nous rejeter une hypothèse nulle avec des intervalles de confiance produits par échantillonnage plutôt que l'hypothèse nulle? pour un raisonnement analogue mais dans un cadre plus simple).
Il pourrait être douteux que nous puissions réussir à obtenir la situation:
∀|a⃗ |:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))=α
Mais nous devrions toujours pouvoir obtenir un résultat comme
∀|a⃗ |:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))≤α
ou plus strictement la limite la moins haute de tous les Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α)) est égal à α
sup{Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α)):|a⃗ |≥0}=α
Pour la ligne dans l'image avec le multiple |a⃗ | nous utilisons la ligne qui touche les pics des régions uniques pour définir la fonction c(|b⃗ |,p,α). En utilisant ces pics, nous obtenons que les régions d'origine, qui étaient censées être commeα=β1β2ne sont pas couverts de manière optimale. Au lieu de cela, moins de points tombent en dessous de la ligne (doncα>β1β2). Pour les petits|a⃗ | ce sera la partie supérieure, et pour les grands |a⃗ |ce sera la bonne partie. Vous obtiendrez donc:
|a⃗ |<<1:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))≈β2|a⃗ |>>1:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))≈β1
et
sup{Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α)):|a⃗ |≥0}≈max(β1,β2)
C'est donc encore un peu de travail en cours. Une façon possible de résoudre la situation pourrait être d'avoir une fonction paramétrique que vous continuez à améliorer itérativement par essais et erreurs de sorte que la ligne soit plus constante (mais ce ne serait pas très perspicace). Ou peut-être pourrait-on décrire une fonction différentielle pour la ligne / fonction.
# 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|")))