2017-04-01 5 views
0

Ich möchte den Parameter 'r' mit GMM schätzen, basierend auf einem rollenden Datensatz [1: 2567], [2: 2568] ... und so weiter. Abschließend sollen die Ergebnisse in einer Matrix ausgefüllt werden. Ich hatte bereits die Kerncodes wie folgt getestet, die gültige Antworten liefern.Fehler beim Füllen der Matrix mit Ergebnissen

x<-Source[1 : 2567,"AAA"] 
     z<-as.matrix(x) 
     e<-function(r,x){ 
+   m<-exp(-x/r)-1 
+   return(m) 
+  } 

    coef(gmm(e,z,t0=1,method="BFGS",control=1e-12)) 
Theta[1] 
1.096466 



    x<-Source[2 : 2568,"AAA"] 
     z<-as.matrix(x) 
     e<-function(r,x){ 
+   m<-exp(-x/r)-1 
+   return(m) 
+  } 

    coef(gmm(e,z,t0=1,method="BFGS",control=1e-12)) 
Theta[1] 
1.102329 

Wenn ich jedoch eine Schleifenstruktur verwenden möchte, wird eine Fehlermeldung zurückgegeben.

n <- 2 
    result <- matrix(rep(0, n), nrow = n) 
    for(i in c(1 :n)){ 
+  x<-Source[i : i + 2566,"AAA"] 
+  z<-as.matrix(x) 
+  e<-function(r,x){ 
+   m<-exp(-x/r)-1 
+   return(m) 
+  } 
+  
+  result[i,1] <- coef(gmm(e,z,t0=1,method="BFGS",control=1e-12)) 
+ } 

Fehler in ar.ols (x, RIC = RIC, order.max = order.max, na.action = na.action,: 'order.max' muss < ‚n sein. gebrauchter‘

Könnte mir jemand helfen Figur, was falsch gelaufen ist? Vielen dank ~!

(* der Datensatz‚Source‘ist eine 5200 * 4 Matrix, mit aktuellen Daten in der Verbindung gezeigt unten: https://docs.google.com/spreadsheets/d/1AnTErQd2jm9ttKDZa7On3DLzEZUWaz5Km3nKaB7K18o/edit#gid=0)

+2

Sie Beispiel ist nicht reproduzierbar. 'x <- Source [1: 2567," AAA "]' steht uns nicht zur Verfügung. –

Antwort

0

Ihr Fehler kommt von einer fehlerhaften Syntax. Ich habe die Variable j <- i + 2566 hinzugefügt. Mit dem folgenden Code:

Source <- read.csv(file="source_data.csv", header=TRUE, sep=",") #read csv 
n <- 2 
    result <- matrix(rep(0, n), nrow = n) 
    for(i in c(1:n)){ 
    j <- i + 2566 
    x<-Source[i:j,"AAA"] 
    z<-as.matrix(x) 
    e<-function(r,x){ 
     m<-exp(-x/r)-1 
     return(m) 
    } 
    result[i,1] <- coef(gmm(e,z,t0=1,method="BFGS",control=1e-12)) 
} 
result 

bekomme ich folgende Ausgabe:

  [,1] 
[1,] 1.096466 
[2,] 1.102329 
Verwandte Themen