2016-03-19 8 views
1

Ich habe eine unausgeglichene Panel-Regression.Panel-Regressionsfehler in R

Unabhängige Variable ist Brutto Abhängige Variables sind DEX, GRW, Schulden und Leben. Zeit wird Jahr Gruppierung ist Land

ich erfolgreich die folgenden Befehle ausgeführt haben:

tino=read.delim("clipboard") 
tino 
summary(tino) 
Dep<- with(tino, cbind(Gross, index=c("Country, Year"))    
Ind<- tino[ , c('DEX', 'GRW' , 'Debt', 'Life')] 
install.packages("plm") 
library('plm')   
pandata<-plm.data(tino) 
tino   
summary(pandata) 
summary(Dep) 
summary(Ind) 

jedoch Wenn ich den Befehl unten für Ergebnisse ausführen, bekomme ich einen Fehler.

pooling<- plm(Dep~Ind, data = pandata, model= "pooling") 

gibt Fehler unterhalb

Error in model.frame.default(terms(formula, lhs = lhs, rhs = rhs, data = data,: invalid type (list) for variable 'Ind' 

Bitte helfen.

Dank

+0

Bitte beachten Sie, lesen Sie auf [fragen] und wie ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) zu erzeugen. – Heroka

Antwort

0

Ohne Zugriff auf Ihre Daten ist es unmöglich, zu bestätigen, dass dies funktionieren wird, aber ich werde versuchen, einige Probleme in Ihrem Code hinweisen, die wahrscheinlich einen Beitrag zum Fehler werden.

Diese Linie ist in Ordnung:

tino=read.delim("clipboard") 

Hier ist, wo Sie anfangen, Fehler zu machen:

Dep<- with(tino, cbind(Gross, index=c("Country, Year"))    
Ind<- tino[ , c('DEX', 'GRW' , 'Debt', 'Life')] 

with() typischerweise neue Vektoren verwendet wird, aus einem data.frame zu erstellen. Sie können nur die $ Schreibweise für referenzierende Variablen in einem data.frame und sonst nichts löschen. Aus dem Lesen Ihres Codes können Sie denken, dass with() tatsächlich das tino Objekt ändert, was es nicht ist.

Wenn Sie einen data.frame zur Verwendung in einem Regressionsmodell erstellen möchten, möchten Sie alle Variablen auf der rechten und linken Seite in einem dat.frame oder einer Matrix, anstatt sie zu trennen. Dies liegt daran, dass die meisten Modellierungsfunktionen mit einer "Formel" und einem data Argument arbeiten, die an model.frame() übergeben werden, um die Daten vor der Modellierung vorzuverarbeiten.

Das heißt, Sie vermutlich etwas wie das folgende tun wollen, alle oben Überspringen:

pandata <- plm.data(tino, index = c("Country", "Year")) 
pooling <- plm(Gross ~ DEX + GRW + Debt + Life, data = pandata, model = "pooling") 
summary(pooling) 

Wenn Sie eine Menge von der rechten Seite Variablen haben, können Sie Ihre data.frame Teilmenge kann, mit so etwas wie:

pandata2 <- plm.data(tino[ , c('Gross', 'DEX', 'GRW' , 'Debt', 'Life')], index = c("Country", "Year")) 
pooling2 <- plm(Gross ~ ., data = pandata2, model = "pooling") 

mit der . Notation als Abkürzung für „alle anderen Spalten in den Daten.“

+0

Ich habe immer noch Schwierigkeiten mit der Syntax. Wie kann ich Ihnen die Daten auf dieser Plattform besorgen? Danke. – Tino

+0

@Tino Aktualisieren Sie Ihre Frage mit neuen Problemen, mit denen Sie konfrontiert sind. Sie können versuchen, ein kleines reproduzierbares Beispiel zu erstellen, indem Sie die im plm-Paket verfügbaren Daten verwenden. – Thomas