Hello,

One way is to use ?scale.

set.seed(4867)
l <- 1000000
aux <- rnorm(l, 0, 0.5)
aux <- scale(aux, scale = FALSE)
sum(aux)

hist(aux, prob = TRUE)
curve(dnorm(x, 0, 0.5), from = -2, to = 2, add = TRUE)

Hope this helps,

Rui Barradas

Em 01-04-2014 16:01, jlu...@ria.buffalo.edu escreveu:
Then what's wrong with centering your initial values around the mean?



Marc Marí Dell'Olmo <marceivi...@gmail.com>
04/01/2014 10:56 AM

To
Boris Steipe <boris.ste...@utoronto.ca>,
cc
jlu...@ria.buffalo.edu, "r-help@r-project.org" <r-help@r-project.org>
Subject
Re: [R] A vector of normal distributed values with a sum-to-zero
constraint






Boris is right. I need this vector to include as initial values of a
MCMC process (with openbugs) and If I use this last approach sum(x)
could be a large (or extreme) value and can cause problems.

The other approach x <- c(x, -x) has the problem that only vectors
with even values are obtained.

Thank you!


2014-04-01 16:25 GMT+02:00 Boris Steipe <boris.ste...@utoronto.ca>:
But the result is not Normal. Consider:

set.seed(112358)
N <- 100
x <- rnorm(N-1)
sum(x)

[1] 1.759446   !!!

i.e. you have an outlier at 1.7 sigma, and for larger N...

set.seed(112358)
N <- 10000
x <- rnorm(N-1)
sum(x)
[1] -91.19731

B.


On 2014-04-01, at 10:14 AM, jlu...@ria.buffalo.edu wrote:

The sum-to-zero constraint imposes a loss of one degree of freedom.  Of
  N samples, only (N-1) can be random.   Thus the solution is
N <- 100
x <- rnorm(N-1)
x <- c(x, -sum(x))
sum(x)
[1] -7.199102e-17










Boris Steipe <boris.ste...@utoronto.ca>
Sent by: r-help-boun...@r-project.org
04/01/2014 09:29 AM

To
Marc Marí Dell'Olmo <marceivi...@gmail.com>,
cc
"r-help@r-project.org" <r-help@r-project.org>
Subject
Re: [R] A vector of normal distributed values with a sum-to-zero
constraint





Make a copy with opposite sign. This is Normal, symmetric, but no
longer random.

  set.seed(112358)
  x <- rnorm(5000, 0, 0.5)
  x <- c(x, -x)
  sum(x)
  hist(x)

B.

On 2014-04-01, at 8:56 AM, Marc Marí Dell'Olmo wrote:

Dear all,

Anyone knows how to generate a vector of Normal distributed values
(for example N(0,0.5)), but with a sum-to-zero constraint??

The sum would be exactly zero, without decimals.

I made some attempts:

l <- 1000000
aux <- rnorm(l,0,0.5)
s <- sum(aux)/l
aux2 <- aux-s
sum(aux2)
[1] -0.000000000006131392

aux[1]<- -sum(aux[2:l])
sum(aux)
[1] -0.00000000000003530422


but the sum is not exactly zero and not all parameters are N(0,0.5)
distributed...

Perhaps is obvious but I can't find the way to do it..

Thank you very much!

Marc

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


        [[alternative HTML version deleted]]



______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to