Vista geométrica do problema e distribuições de b⃗ ⋅a⃗ e |b⃗ |2
Below is geometrical view of the problem. The direction of a⃗ doesn't really matter and we can just use the lengths of these vectors |a⃗ | and |b⃗ | which give all neccesary information.
The distribution of the length of the vector projection of b⃗ onto a⃗ will be b⃗ ⋅a⃗ /|a⃗ |∼N(|a⃗ |,1) which is related to the quantity that you are looking for
b⃗ ⋅a⃗ ∼N(|a⃗ |2,|a⃗ |2)
We can further deduce that the squared lenght of the samples vector |b⃗ |2 has the distribution a non-central chi-squared distribution, with the degrees of freedom p and the noncentrality parameter ∑pk=1μ2k=|a⃗ |2
|b⃗ |2∼χ2p,|a⃗ |2
além disso
(|b⃗ |2−(b⃗ ⋅a⃗ )2|a⃗ |2)conditional on b⃗ ⋅a⃗ and |a⃗ |2∼χ2p−1
Esta última expressão mostra que a estimativa de intervalo para b⃗ ⋅a⃗ pode , de um certo ponto de vista, ser vista como um intervalo de confiança, porque b⃗ ⋅a⃗ pode ser vista como um parâmetro na distribuição de |b⃗ |2 . Mas é complicado porque há um parâmetro incômodo |a⃗ |2 , e também o parâmetro b⃗ ⋅a⃗ é doze uma variável aleatória, relacionada a |a⃗ |2 .
Gráficos de distribuições e algum método para definir a c(b⃗ ,p,α)
Na imagem acima, plotamos para uma região de 95% usando a parte β1 direita da distribuição de N(|a⃗ |2,|a⃗ |2) e a parte β2 superior da distribuição deslocada de χ2p−1 tal que β1⋅β2=0.05
Agora, o grande truque é desenhar uma linha c(|β⃗ |2,p,α) que limita os pontos de modo que, para qualquer a⃗ haja uma fração 1−α dos pontos (pelo menos) que estão abaixo da linha .
Abaixo da linha é onde a região é bem-sucedida e queremos que isso aconteça pelo menos na fração 1−α do tempo. (veja também A lógica básica da construção de um intervalo de confiança e Podemos rejeitar uma hipótese nula com intervalos de confiança produzidos por amostragem em vez da hipótese nula? para raciocínio análogo, mas em um cenário mais simples).
Pode ser duvidoso que consigamos obter a situação:
∀|a⃗ |:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))=α
Mas sempre devemos conseguir resultados como
∀|a⃗ |:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))≤α
ou mais estritamente, o menor limite superior de todos os Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α)) é igual a α
sup{Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α)):|a⃗ |≥0}=α
Para a linha na imagem com os múltiplos |a⃗ |usamos a linha que toca os picos das regiões únicas para definir a função c(|b⃗ |,p,α) . Ao usar esses picos, obtemos que as regiões originais, que se destinavam a ser como α = β1β2 não são idealmente cobertas. Em vez disso, menos pontos ficam abaixo da linha (então α > β1β2 ). Para pequenas | uma⃗ |estas serão a parte superior e, para grandes | uma⃗ |esta será a parte certa. Então você receberá:
| uma⃗ | < < 1:Pr ( b⃗ ⋅ a⃗ ≤ c ( b⃗ ,p,α))≈β2|a⃗ |>>1:Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α))≈β1
e
sup{Pr(b⃗ ⋅a⃗ ≤c(b⃗ ,p,α)):|a⃗ |≥0}≈max(β1,β2)
Portanto, este ainda é um pouco de trabalho em andamento. Uma maneira possível de resolver a situação seria ter alguma função paramétrica que você continue melhorando iterativamente por tentativa e erro, de modo que a linha seja mais constante (mas não seria muito esclarecedora). Ou, possivelmente, alguém poderia descrever alguma função diferencial para a linha / função.
# 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|")))