Normally distributed random numbers with fixed sum
35 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi everybody,
I am looking for a way to create normally distributed numbers with a fixed sum.
I know the random fixed sum numer generator from FileExchange https://de.mathworks.com/matlabcentral/fileexchange/9700-random-vectors-with-fixed-sum.
However, I wasn't able to easily adjust it to my needs.
Basically, I want the same as randfixedsum with the addition that the function recevies values for mu and sigma as a vector of length n. I understand that using different standard deviations for n-different values will lead to unequal pairwise corrrelations between the generated values, but that's ok.
I understand it's maybe not a trivial problem. Any ideas?
Thanks
1 comentario
Jeff Miller
el 27 de Jul. de 2021
Just a comment that this isn't possible in general. With two X's, for example, you can't let them both have mu=0 yet have them produce a fixed sum of 1. Likewise, you can't let them have different sigmas if they produce a fixed sum--in that case they must have equal sigmas as well as a perfect negative correlation. With larger numbers of X's the constraints are more complicated, but I would guess that there are a lot more sets of impossible mus & sigmas than of possible ones.
Respuestas (2)
Matt J
el 26 de Jul. de 2021
Editada: Matt J
el 26 de Jul. de 2021
Why not simply,
x(1:N-1)=randn(1,N-1);
x(N)=fixedValue-sum(x(1:N-1))
2 comentarios
DGM
el 27 de Jul. de 2021
Editada: DGM
el 27 de Jul. de 2021
N = 10000;
fixedValue = 50;
x(1:N-1)=randn(1,N-1);
x(N)=fixedValue-sum(x(1:N-1));
histogram(x)
It's not so much a gaussian distribution with a fixed sum so much as it is a gaussian distribution with an another number in the same vector that offsets the sum.
Matt J
el 27 de Jul. de 2021
It's not so much a gaussian distribution with a fixed sum so much as it is a gaussian distribution with an another number in the same vector that offsets the sum.
I don't really see the distinction. It is clearly a Gaussian random vector and the sum is unvarying, as the test below shows
N = 10000;
fixedValue = 50;
for i=1:4
x(1:N-1)=randn(1,N-1);
x(N)=fixedValue-sum(x(1:N-1));
s=sum(x)
end
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!