Xarrus
Xarrus

Reputation: 85

Plotting a histogram in R

I have to solve the following exercise.

(1) Create 100 Poisson distributed r.v.'s with lambda = 4

(2) Calculate the mean of the sample, generated in (1).

(3) Repeat (1) and (2) 10.000 times.

(4) create a vector, containing the 10.000 means.

(5) plot the vector in a histogram.

Is the following solution(?) right?

> as.numeric(x) 
> for(i in 1:10000){   
> p <- rpois(100, lambda = 4)   
> m <- mean(p)   
> append(x, m) 
>} 
> hist(x, breaks = 20)

Upvotes: 0

Views: 681

Answers (3)

Edgar Santos
Edgar Santos

Reputation: 3514

hist(replicate(10000, mean(rpois(100, lambda = 4))))

Upvotes: 3

Evan Friedland
Evan Friedland

Reputation: 3194

It's a little funny. You can quickly do what you ask in more legible ways. For example:

L <- 10000
emptyvector <- rep(NA, L)
for(i in 1:L){
  emptyvector[i] <- mean(rpois(100, lambda = 4))
}
hist(emptyvector)

I would have taken advantage of the replicate() function which would create a matrix of results and then run colMeans to quickly get my vector.

meanvector <- colMeans(replicate(10000, rpois(100, lambda = 4)))
hist(meanvector, main = "Mean values from 10,000 runs of \nPoisson n = 100")

Upvotes: 5

sairaamv
sairaamv

Reputation: 86

you need to assign x again with the value.

x1 <- x <- NULL 

for(i in 1:10000){   
  p <- rpois(100, lambda = 4)   
  m <- mean(p)   
  x[length(x) + 1] <- m 
  x1 <- append(x1, m)
## X or x1 vector will suffice for histogram
} 
hist(x1, breaks = 20)

Upvotes: 0

Related Questions