[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



More information about the R-help mailing list