Advertisement
simonsays1980

Simulation with doMC

Aug 27th, 2011
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 3.35 KB | None | 0 0
  1. simuFunctionPar<-function(theta, phi, stdEps, stdEta, N, K,backingpath){
  2.                      
  3.    library("sandwich")#Lade Paket für Sandwich Schätzer
  4.    library("bigmemory") #Lade Paket für BigMemory Matrizen
  5.    library("biganalytics") #Lade Paket für Manipulation von BigMemory Matrizen
  6.    library("doMC")
  7.    registerDoMC()
  8.    
  9.    #Generiere Trade-Indikator
  10.    trade<-as.big.matrix(matrix(sample(c(1,-1), (N+1)*K, replace=TRUE),ncol=K), backingpath=backingpath, backingfile="trade.bin",descriptorfile="trade.desc")
  11.    flush(trade)
  12.    #Wende die StandardMatrix Funktion 'diff' auf den Inhalt der BigMemory Matrix trade an. 1=Zeilen, 2=Spalten
  13.    tradedelta<-as.big.matrix(apply(apply(trade,2,diff),2,rev), backingpath=backingpath, backingfile="tradedelta.bin", descriptorfile="tradedelta.desc")
  14.    flush(tradedelta)
  15.    tradelag<-as.big.matrix(apply(sub.big.matrix(trade,1,nrow(trade)-1,1,ncol(trade),backingpath = backingpath),2,rev),backingpath=backingpath,backingfile="tradelag.bin",descriptorfile = "tradelag.desc")
  16.    flush(tradelag)
  17.    
  18.    #Generiere Störterme Epsilon und Eta
  19.    epsilon<-as.big.matrix(matrix(rnorm(N*K, mean = 0, sd = stdEps), ncol=K),backingpath = backingpath, backingfile = "epsilon.bin",descriptorfile = "espilon.desc")
  20.    flush(epsilon)
  21.  
  22.    eta<-as.big.matrix(matrix(rnorm((N+1)*K, mean = 0, sd = stdEta), ncol=K),backingpath = backingpath, backingfile = "eta.bin",descriptorfile = "eta.desc")
  23.    flush(eta)
  24.    #Wende die StandardMatrix Funktion 'diff' auf den Inhalt der BigMemory Matrix trade an. 1=Zeilen, 2=Spalten
  25.    etadelta<-as.big.matrix(apply(apply(eta,2,diff),2,rev),backingpath = backingpath,backingfile = "etadelta.bin",descriptorfile = "etadelta.desc")
  26.    flush(etadelta)
  27.    
  28.    #Generiere Midquotedifferenzen als Pointer
  29.    mdelta=theta*tradelag[,]+epsilon[,]
  30.  
  31.    #Generiere Preisdifferenzen als Pointer
  32.    pricedelta=theta*tradelag[,]+(theta+phi)*tradedelta[,]+epsilon[,]+etadelta[,]
  33.    #Fasse Input Parameter zusammen
  34.    inputParameters<-matrix(c(theta,phi,N,stdEps,stdEta),ncol=5,nrow=1)
  35.            
  36.    #Beginne Schleife für Schätzung der K Schätzer
  37.    data<-foreach(i=1:K,.combine=rbind) %dopar% {
  38.          
  39.            #Generiere Zeilen Container
  40.            rowData<-matrix(nrow=1,ncol=40) #Wird auf NULL gesetzt
  41.            nWest<-matrix(nrow=2,ncol=2)
  42.          
  43.            #Schätzung der Koeffizienten
  44.            tryCatch({
  45.                regression<-lm(pricedelta[,i]~0+tradelag[,i]+tradedelta[,i])
  46.              
  47.              
  48.                rowData[1] = regression$coefficients[1] #Schaetzung Theta
  49.                rowData[8] = regression$coefficients[2] #Schaetzung Theta+Phi
  50.              
  51.                #Schätzung der robusten Standardfehler
  52.                try({
  53.                   nWest<-NeweyWest(regression)
  54.                   rowData[2] = nWest[1,1]
  55.                   rowData[9] = nWest[2,2]
  56.                })
  57.                #print(.Last.value)
  58.                options(show.error.messages = TRUE)
  59.            },
  60.            interrupt = function(ex) {
  61.                cat("An interrupt was detected.\n");
  62.                print(ex)
  63.            },
  64.            error = function(ex) {
  65.                cat("An error was detected.\n")
  66.                print(ex)
  67.            },
  68.            finally = {
  69.                gc()
  70.            })
  71.            rowData
  72.    }
  73.    #Ausgabe der Daten
  74.    return(data)
  75.    gc()
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement