There are several uses for simulation:
1. Demonstration of statistical or probabilistic effects.
2. Understanding the responses of structures during their design to ranges of environmental or operational conditions so that their designs can be optimized. Examples of this application include aircraft and ship design, communication networks. This approach allows designers to develop and test products without building prototypes for testing. It also provides opportunities for designers to observe behaviors under extreme conditions that would be impossible or extremely expensive to create for physical prototypes.
3. Simulation of theories for the behavior of physical systems. Simulation results can be compared to observations for validation of theories. Examples include climate models, models for astronomical phenomena such as solar system formation and galactic evolution, and models for chemical reactions that can accelerate development of new drugs or vaccines.
4. Comparison of statistical methods under a variety of conditions and models. This is a common method for the comparison of new methods to existing methods when analytical comparisons are difficult or impossible to obtain.
One of R's strengths is its extensive library of functions for simulation of random variables. This includes the following distributions.
|Cauchy (with location and scale)||cauchy|
For each distribution there are functions in R to generate the cdf, density or pmf, quantiles, and random samples. These functions use the following convention: dname returns the density or probability mass function, pname returns the cdf, qname returns quantiles, and rname returns random samples. For example,
n = 200 mu = 100 sig = 20 X = rnorm(n,mu,sig) X.hist = hist(X,plot=FALSE) x0 = seq(mu-4*sig,mu+4*sig,length=250) d0 = dnorm(x0,mu,sig) y0 = d0*n*unique(diff(X.hist$breaks)) y.lim = max(c(y0,X.hist$counts)) png("NormalDens.png",width=480,height=480) plot(X.hist,col="cyan",ylim=c(0,y.lim),xlim=mu+c(-4,4)*sig,main="") title(paste("Histogram of N(",mu,",",sig,")",sep="")) mtext("with Density Function",side=3,line=.25) lines(x0,y0,col="red") graphics.off()
Random number generators must be initialized before they are used. Ordinarily this is done internally by R. However, there are situations in which a repeatable sequence of generated values is required, for example, when testing code. In this case, we must initialize the RNG by specifying what is referred to as the seed. In R this is accomplished by the function set.seed(seed) where seed is an integer. Specifying this before using one of the r-functions listed above will produce the same set of values.