Advertisement
simonsays1980

Simulation with NeweyWest

Sep 9th, 2011
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 2.24 KB | None | 0 0
  1. simuFunctionParNBM<-function(theta, phi, stdEps, stdEta, N, K){
  2.    print(paste("Parallel Processing with N = ",N," and K = ",K))                
  3.    library("sandwich")#Lade Paket für Sandwich Schätzer
  4.    library("doMC")
  5.    registerDoMC()
  6.    
  7.    #Generiere Trade-Indikator
  8.    trade<-matrix(sample(c(1,-1), (N+1)*K, replace=TRUE),ncol=K)
  9.    
  10.    #Manipuliere `trade` matrix
  11.    tradedelta<-diff(trade)
  12.    tradedelta<-tradedelta[nrow(tradedelta):1,]
  13.    tradelag<-trade[2:nrow(trade),]
  14.    
  15.    #Generiere Störterme Epsilon und Eta
  16.    epsilon<-matrix(rnorm(N*K), ncol=K)
  17.    eta<-matrix(rnorm((N+1)*K)*0.02, ncol=K)
  18.    etadelta<-diff(eta)
  19.    etadelta<-etadelta[nrow(etadelta):1,]
  20.    
  21.    #Generiere Midquotedifferenzen als Pointer
  22.    mdelta=theta*tradelag+epsilon
  23.  
  24.    #Generiere Preisdifferenzen als Pointer
  25.    pricedelta=theta*tradelag+(theta+phi)*tradedelta+epsilon+etadelta
  26.    #Fasse Input Parameter zusammen
  27.    inputParameters<-matrix(c(theta,phi,N,stdEps,stdEta),ncol=5,nrow=1)
  28.            
  29.    #Beginne Schleife für Schätzung der K Schätzer
  30.    data<-foreach(i=1:K,.combine=rbind) %dopar% {
  31.          
  32.            #Generiere Zeilen Container
  33.            rowData<-matrix(nrow=1,ncol=40) #Wird auf NULL gesetzt
  34.            nWest<-matrix(nrow=2,ncol=2)
  35.          
  36.            #Schätzung der Koeffizienten
  37.            tryCatch({
  38.              
  39.              
  40.                rowData[1] = regression$coefficients[1] #Schaetzung Theta
  41.                rowData[8] = regression$coefficients[2] #Schaetzung Theta+Phi
  42.              
  43.                #Schätzung der robusten Standardfehler
  44.                try({
  45.                   nWest<-NeweyWest(regression)
  46.                   rowData[2] = nWest[1,1]
  47.                   rowData[9] = nWest[2,2]
  48.                })
  49.                #print(.Last.value)
  50.                options(show.error.messages = TRUE)
  51.            },
  52.            interrupt = function(ex) {
  53.                cat("An interrupt was detected.\n");
  54.                print(ex)
  55.            },
  56.            error = function(ex) {
  57.                cat("An error was detected.\n")
  58.                print(ex)
  59.            },
  60.            finally = {
  61.                gc()
  62.            })
  63.            return(rowData)
  64.    }
  65.    #Ausgabe der Daten
  66.    return(data)
  67.    gc()
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement