En un pregunta relacionada, cómo simular una muestra aleatoria iid (X1,…,Xn)∼f bajo la restricción de que su suma X1+⋯+Xn se fija en un valor arbitrario s0 , I mostró que la densidad de esa muestra viene dada por (X1,…,Xn)∼f(x1)⋯f(xn−1)f(s0−x1−⋯−xn)Is0−x1−⋯−xn−1(xn)
Nota: Bajo la restricción la muestra ya no es independiente pero las observaciones se distribuyen idénticamente, a pesar de la aparente asimetría en lo anterior.
Por ejemplo, una muestra uniforme con media fija 0.5 tendría la densidad conjunta (U1,…,UN)∼N−1∏i=1I(0,1)(ui)I1/2(u1+⋯+uN) que puede simularse mediante el muestreo de Gibbs u otro algoritmo MCMC como el RWMH. Cuando se utiliza el muestreo de Gibbs, el N−1 Las primeras coordenadas de la muestra se pueden simular de una en una con Ui|U−i∼I(0,1)(ui)I(0,1)(s0−u1−⋯−ui−⋯−un−1)=I(max Una implementación en R se parece a este código:
n=3;T=1e4
s0=.5 #fixed average
sampl=matrix(s0,T,n)
for (t in 2:T){
sampl[t,]=sampl[t-1,]
for (i in 1:(n-1)){
sampl[t,i]=runif(1,
min=max(0,n*s0-sum(sampl[t,c(-i,-n)])-1),
max=min(1,n*s0-sum(sampl[t,c(-i,-n)])))
sampl[t,n]=n*s0-sum(sampl[t,-n])}}
con los siguientes marginales en el U_i 's:
![Histograms of the three components of a constrained uniform sample with fixed average 0.5]()
Nota: Se puede modificar fácilmente el código R anterior para imponer una media de s_0=0.05 o s_0=0.975 en la muestra.