2017-06-13 2 views
1

Ich schätze ein Fixed-Effects-Modell auf räumlichen Panel-Daten mit dem R-Paket "splm". Das stark ausgewogene Panel besteht aus 77 Landkreisen und 31 Beobachtungsjahren. Die abhängige Variable ist County-weise Erträge einer Ernte. Wenn ich Rendement-Zeit-Trend und individuelle Fixed-Effekte zurückgebe, bekomme ich den Fehler, dass sich Objektlängen unterscheiden, obwohl ich ein perfekt ausgeglichenes Panel habe und der gleiche Satz von Counties verwendet wird, um die räumliche Gewichtsmatrix zu erstellen.R räumliche Panel-Fixed-Effekte: Fehler in der lag.listw, Objektlängen sind unterschiedlich

Unten habe ich einen "Panel-Datensatz" erstellt, der meinen Daten ähnelt, und auch die Längen- und Breitengraddaten für die Counties mit Zufallszahlen generiert. Sogar mit diesen zufälligen Daten tritt derselbe Fehler auf.

##generated panel data for yield 
set.seed(97531) 
yield.normal <- as.data.frame(matrix(rnorm(2387*1, mean=1.92, sd=0.5), ncol=1)) 
colnames(yield.normal) = "yield" 
yield.normal$panelid = with(yield.normal, seq(1:77)) 
yield.normal$timeid = with(yield.normal, seq(1:31)) 
yield.normal$county = with(yield.normal, as.factor(seq(1:77))) 
yield.normal$countyname = paste0("county",yield.normal$county) 
yield.normal$trnd = with(yield.normal, seq(1:31)) 

#generate coordinates of the 77 Oklahoma counties 
latitude.county = sample(36.83013180:33.90212700, size = 77, replace = T) 
longitude.county = sample(-94.81059550:-102.62162110, size = 77, replace = T) 
lat.long.data = cbind2(longitude.county,latitude.county) 
colnames(lat.long.data)=c("lon","lat") 
#Create spatial weight matrix 
distNeighbr = spdep::dnearneigh(lat.long.data, d1=0, d2=5) 
wtmat1 = spdep::nb2listw(distNeighbr, style='W') 

#Estimate the spatial fixed-effects model 
spatial.FE.model = splm::spml(yield~trnd, data = yield.normal, index = c("timeid", "panelid"), listw = wtmat1, model = "within", effect ="individual", method = "eigen") 

Fehlerbericht:

Fehler in lag.listw (listw, u, zero.policy = zero.policy): Object Längen unterscheiden

Ausgabe aus: traceback() ist wie folgt:

8: stop ("Objektlängen unterscheiden sich")

7: lag.listw (listw, u, zero.policy = zero.policy)

6: Fun (X [[i]], ...)

5: lapply (X = ans [Index], FUN = FUN, ...)

4: tapply (y, inde, Funktion (u) lag.listw (listw, u, zero.policy = zero.policy), vereinfachen = TRUE)

3: fehlende oder (Tapply (y, inde, Funktion (u) lag.listw (listw, u, zero.policy zero.policy), vereinfacht = TRUE))

2: spfeml (Formel = Formel, Daten = Daten, Index = Index, Listw = Liste, Listw2 = Listw2, na.action, Modell = Modell, Effekte = Effekte, cl = cl, ...)

1: splm :: spml (Ausbeute ~ trnd + as.factor (Grafschaft) - 1, Daten = yield.normal, Index = c ("timeid", "panelid"), listw = wtmat1, Modell = "innerhalb", effect = "individuell", method = "eigen")

Bitte helfen Sie mir, dieses Problem zu lösen.

Antwort

0

Dieses Problem wurde behoben. Die Autoren des Pakets "splm" haben darauf hingewiesen, dass bei der Einrichtung der Panel-IDs ein Fehler aufgetreten ist. Die räumlichen Einheiten müssen langsamer sein (1,1,1, .....; 2,2,2 ...; ...; 77,77,77, ....) und die Zeit-ID muss sein schneller (1,2,3, ...., 31; ....; 1,2,3 ... 31) der beiden. Nachdem ich die Daten entsprechend eingerichtet hatte, konnte ich die Ergebnisse erhalten.

Herzlichen Dank an die "splm" Autoren Drs. Giovanni Millo und Gianfranco Piras.

Verwandte Themen