2016-05-03 4 views
0

I das folgende Modell eine Schätzung der Standardfehler für Zufallskoeffizienten zum Schätzen:Intervalle Paket/Funktion mit lme4 passt

library(nlme) 
library(foreign) 
Sample_Data <- read.dta (file="Sample_Data.dta") 
Sample_Data <- within(Sample_Data, { 
industry <- factor(industry) 
id <- factor(id) 
year <- factor(year)}) 
Model1 <- lme(MRPK ~ 1+age+empl+net_worth+input_growth+TFPR_shock, random = (~1+net_worth|industry/id), data=Sample_Data, control=lmeControl(opt='optim'), method="REML") 

My Abtastdaten an die folgende Verbindung:

https://dl.dropboxusercontent.com/u/99295510/Sample_Data.dta

Ich bin den folgenden Fehler erhalten:

Fehler in solve.default (pdMatrix (a, Faktor = TRUE)):
Lapack Routine dgesv: System ist genau singulär: U [1,1] = 0

Wie können wir dieses Problem lösen?

+0

Was versuchen Sie zu erreichen? Die Fehlermeldung besagt, dass Sie die Funktion "intervals" für ein lmerMod-Objekt nicht verwenden können. Dies bedeutet wahrscheinlich, dass das Paket "intervals" keine Objekte unterstützt, die von "lme4" erzeugt werden. – lmo

+0

Mein Ziel ist es, die Standardfehler für den Zufallskoeffizienten zu schätzen. Ich weiß nicht, wie man den Standardfehler mit lme4 abschätzen kann. Ich dachte, ich könnte Konfidenzintervalle berechnen, dann kann ich Standardfehler aus den Konfidenzintervallen berechnen. – mjalam

+0

Vielleicht hilft Ihnen diese Antwort: [lmer CI] (http://stackoverflow.com/questions/11072544/how-to-get-coefficients-and-their-confidence-intervals-in-mixed-effects-models/17329983 # 17329983). – lmo

Antwort

0

Gegenwärtig kenne ich keinen zuverlässigen Weg, um die Wald-Standardfehler (die einzige vernünftige Definition, die ich kenne) für zufällige Effekte unter Verwendung lme4 zu bekommen. Ihre Alternativen sind (1):

variation.model1 <- lmer(sales ~ 1+(1|industry:id)+(1|industry), 
    data=data_file, REML=TRUE) 
confint(variation.model1, which="theta_") 

, die Ihnen 95% Profil Wahrscheinlichkeit Konfidenzintervall geben (aber nicht Standardfehler) auf den Varianz-Parametern (sehr primitiv, können Sie die Breite dieses Konfidenzintervall teilen könnten durch 1,96 * 2 = 3,92).

und (2), das Modell mit lme stattdessen passen:

library(nlme) 
variation.model2 <- lme(sales ~ 1, 
     random = (1|industry/id), 
     data=data_file, method="REML") 

Eingebaut (keine Notwendigkeit für intervals Paket):

intervals(variation.model2)  ## Wald intervals 
sqrt(diag(variation.model2$apVar)) ## sd 

this rpubs document Details für Sehen Sie mehr über Wald in Varianzen lme4.

+0

Danke für Ihre nette Rückmeldung. Ich muss die Restvarianz jedes Jahres für das obige Modell schätzen. Könnte ich die Residuen von lme verwenden und die Varianz jedes Jahres berechnen? – mjalam

+0

Danke nochmal. Ich muss für den ersten Fall confint schreiben (variation.model1, parm = "theta_"). Dies führt jedoch zu fehlenden Werten. Ich habe die folgenden Fehler erhalten "Es gab 50 oder mehr Warnungen (Warnungen verwenden(), um die ersten 50 zu sehen)". Für den zweiten Fall bekomme ich auch Fehler: "Fehler in diag (variation.model2 $ apVar): ungültiger 'nrow' Wert (zu groß oder NA)" "Zusätzlich: Warnmeldung: In diag (variation.model2 $ apVar): Durch Zwang eingeführte NAs ". Was sollte ich jetzt tun? Obwohl ich eine weitere Zufallsvariable im Modell hinzufüge. – mjalam

+0

Können Sie bitte Daten und/oder Code zu Ihrer Frage hinzufügen, die mir ein [reproduzierbares Beispiel] liefern (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible) Beispiel) –

Verwandte Themen