# [R] How to do a stochastic model in R

David Winsemius dwinsemius at comcast.net
Tue Nov 23 23:43:00 CET 2010

```This wasn't a completed answer. (I hit the send button by accident.)
The code only fills in a small poertion of the matrix. )

--
David.

On Nov 23, 2010, at 4:48 PM, David Winsemius wrote:

>
> On Nov 23, 2010, at 3:26 PM, Barroso, Judit wrote:
>
>> Dear all of you,
>>
>> I would like to get some help from you.
>> Here I attach you a model, that I would like to be stochastic so I
>> would need each time the value of x changed, the values of
>> parameters (ss, emrg, gf, spp, sr) did too according to a normal
>> distribution, with mean its value and standard deviation given by
>> the parameter name preceded by SDV (In the case of parameter ss,
>> mean is 0.3 and Standad deviation 0.08). I explain myself, the
>> model take the mean value of these parameter (ss, emrg, gf, spp,
>> sr) and I would like for example, when x changed to the value 2,
>> the parameters values changed randomly according to their normal
>> distribution (given the mean and standard deviation values) and got
>> another mean value. And when x was 3 again, and every time until
>> 20. Does anyone, know how to do it?
>
> You probably need to read:
>
> ?replicate   # and/or ...
> ?rnorm
>
> And rethink your question. (there is no random draw or sampling
> being done in your code.)
>
>>
>> ss <- 0.3
>> emrg <- 0.35
>> gf <- 0.22
>> spp <- 100
>> sr <- 0.52
>>
>> SDVss <- 0.08
>> SDVemrg <- 0.05
>> SDVgf <- 0.04
>> SDVspp <- 22
>> SDVsr <- 0.1
>>
>> data.frame
>
> Please, please, don't call objects by that name. It's a function
> name and a very commonly used one at that. And it's even doubly
> confusing because data.frame is not a data.frame. Call it dmtx or
> dfm, anything,  just don't call it Sue.
>
>
> dmtx<- matrix(0,20,7)
> dmtx[,1] <- 1:20
> dmtx[1, 2:7 ] <- c(50,18,3,300,NA,NA)
> dmtx[-1, 2] <- dmtx[(x-1),2]-dmtx[(x-1),3] + dmtx[(x-1),
> 5]*rnorm(1,sr, SDVsr)*rnorm(1, ss, SDVss)
>
>> data.frame
>> data.frame[,1] <- 1:20
>> data.frame
>> for(x in 1:20){
>>               if(x==1){
>
>>                               data.frame[1,2] <- 50
>>                               data.frame[1,3] <- 18
>>                               data.frame[1,4] <- 3
>>                               data.frame[1,5] <- 300
>>                               data.frame[1,6] <- NA
>>                               data.frame[1,7] <- NA
>>                               }else{
>>                               data.frame[x,2] <- (data.frame[(x-1),
>> 2]-data.frame[(x-1),3]+data.frame[(x-1),5]*sr)*ss
>>                               data.frame[x,3] <- data.frame[x,2]*emrg
>>                               data.frame[x,4] <- data.frame[x,3]*gf
>>                               data.frame[x,5] <- data.frame[x,4]*spp
>>                               data.frame[x,6] <- data.frame[x,2]-
>> data.frame[(x-1),2]
>
> There is also a diff function you might want to get familiar with.
>
>>                               data.frame[x,7] <- data.frame[x,2]/
>> data.frame[(x-1),2]
>>                               }
>>               }
>> end
>> data.frame
>>
>> Thank you very much in advanced,
>> Judit Barroso

David Winsemius, MD
West Hartford, CT

```