Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- simuFunctionPar<-function(theta, phi, stdEps, stdEta, N, K,backingpath){
- library("sandwich")#Lade Paket für Sandwich Schätzer
- library("bigmemory") #Lade Paket für BigMemory Matrizen
- library("biganalytics") #Lade Paket für Manipulation von BigMemory Matrizen
- library("doMC")
- registerDoMC()
- #Generiere Trade-Indikator
- trade<-as.big.matrix(matrix(sample(c(1,-1), (N+1)*K, replace=TRUE),ncol=K), backingpath=backingpath, backingfile="trade.bin",descriptorfile="trade.desc")
- flush(trade)
- #Wende die StandardMatrix Funktion 'diff' auf den Inhalt der BigMemory Matrix trade an. 1=Zeilen, 2=Spalten
- tradedelta<-as.big.matrix(apply(apply(trade,2,diff),2,rev), backingpath=backingpath, backingfile="tradedelta.bin", descriptorfile="tradedelta.desc")
- flush(tradedelta)
- 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")
- flush(tradelag)
- #Generiere Störterme Epsilon und Eta
- epsilon<-as.big.matrix(matrix(rnorm(N*K, mean = 0, sd = stdEps), ncol=K),backingpath = backingpath, backingfile = "epsilon.bin",descriptorfile = "espilon.desc")
- flush(epsilon)
- eta<-as.big.matrix(matrix(rnorm((N+1)*K, mean = 0, sd = stdEta), ncol=K),backingpath = backingpath, backingfile = "eta.bin",descriptorfile = "eta.desc")
- flush(eta)
- #Wende die StandardMatrix Funktion 'diff' auf den Inhalt der BigMemory Matrix trade an. 1=Zeilen, 2=Spalten
- etadelta<-as.big.matrix(apply(apply(eta,2,diff),2,rev),backingpath = backingpath,backingfile = "etadelta.bin",descriptorfile = "etadelta.desc")
- flush(etadelta)
- #Generiere Midquotedifferenzen als Pointer
- mdelta=theta*tradelag[,]+epsilon[,]
- #Generiere Preisdifferenzen als Pointer
- pricedelta=theta*tradelag[,]+(theta+phi)*tradedelta[,]+epsilon[,]+etadelta[,]
- #Fasse Input Parameter zusammen
- inputParameters<-matrix(c(theta,phi,N,stdEps,stdEta),ncol=5,nrow=1)
- #Beginne Schleife für Schätzung der K Schätzer
- data<-foreach(i=1:K,.combine=rbind) %dopar% {
- #Generiere Zeilen Container
- rowData<-matrix(nrow=1,ncol=40) #Wird auf NULL gesetzt
- nWest<-matrix(nrow=2,ncol=2)
- #Schätzung der Koeffizienten
- tryCatch({
- regression<-lm(pricedelta[,i]~0+tradelag[,i]+tradedelta[,i])
- rowData[1] = regression$coefficients[1] #Schaetzung Theta
- rowData[8] = regression$coefficients[2] #Schaetzung Theta+Phi
- #Schätzung der robusten Standardfehler
- try({
- nWest<-NeweyWest(regression)
- rowData[2] = nWest[1,1]
- rowData[9] = nWest[2,2]
- })
- #print(.Last.value)
- options(show.error.messages = TRUE)
- },
- interrupt = function(ex) {
- cat("An interrupt was detected.\n");
- print(ex)
- },
- error = function(ex) {
- cat("An error was detected.\n")
- print(ex)
- },
- finally = {
- gc()
- })
- rowData
- }
- #Ausgabe der Daten
- return(data)
- gc()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement