2016-06-02 19 views
0

Ich habe folgendes Modell:Testen der Gleichheit von mehreren Koeffizienten in R

y = b1_group1*X1 + b1_group2*X1 + b2_group1*X2 + b2_group2*X2 + ... + 
    b10_group1*X10 + b10_group2*X10 

leicht in R wie folgt hergestellt:

OLS <- lm(Y ~ t1:Group + t2:Group + t3:Group + t4:Group + t5:Group + t6:Group + 
      t7:Group + t8:Group + t9:Group + t10:Group,weights = weight, Alldata) 

In STATA, kann ich jetzt den folgenden Test machen:

test (b1_group1=b1_group2) (b2_group1=b2_group2) (b3_group1=b3_group2) 
  • b1_group1 - b1_group2 = 0
  • b2_group1 - b2_group2 = 0
  • b3_group1 - b3_group2 = 0

Was mir, ob die Gruppe von coefficents von X1, X2 und X3 gemeinsam unterscheidet zwischen Gruppe 1 und Gruppe 2 mit Hilfe eines F-Test sagt .

Kann jemand bitte sagen, wie man das in R macht? Danke!

+0

Von CRAN TaskView "Ökonometrie": Tests von allgemeineren linearen Hypothesen implementiert in linearHypthesis() und für nichtlineare Hypothesen in deltaMethod() im Paket 'car'. – jogo

+0

Siehe die letzten drei Zeilen hier: http://stackoverflow.com/questions/37418421/calculate-and-compare-coefficient-estimates-from-a-retrression-interaction-for-ea-37419103#37419103 – coffeinjunky

+1

Übrigens, Laut StataCorp LP ist Stata ein Name, keine Abkürzung. Daher heißt Stata lieber "Stata" anstatt "STATA". – coffeinjunky

Antwort

3

Schauen Sie sich das Beispiel:

library(car) 

mod <- lm(mpg ~ disp + hp + drat*wt, mtcars) 
linearHypothesis(mod, c("disp = hp", "disp = drat", "disp = drat:wt")) 
Linear hypothesis test 

Hypothesis: 
disp - hp = 0 
disp - drat = 0 
disp - drat:wt = 0 

Model 1: restricted model 
Model 2: mpg ~ disp + hp + drat * wt 

    Res.Df RSS Df Sum of Sq  F Pr(>F) 
1  29 211.80        
2  26 164.67 3 47.129 2.4804 0.08337 . 
--- 
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 

Siehe ?linearHypothesis für eine Vielzahl von anderen Möglichkeiten, um den Test zu spezifizieren.

Alternative:

Die oben zeigt Ihnen eine schnelle und einfache Möglichkeit, Hypothesentests durchzuführen. Benutzer mit einem soliden Verständnis der Algebra von Hypothesentests können den folgenden Ansatz, zumindest für einfache Versionen des Tests, praktischer finden. Nehmen wir an, wir möchten testen, ob die Koeffizienten auf cyl und carb identisch sind oder nicht.

mod <- lm(mpg ~ disp + hp + cyl + carb, mtcars) 

Die folgenden Tests äquivalent:

-Test ein:

linearHypothesis(mod, c("cyl = carb")) 

Linear hypothesis test 
Hypothesis: 
cyl - carb = 0 
Model 1: restricted model 
Model 2: mpg ~ disp + hp + cyl + carb 
    Res.Df RSS Df Sum of Sq  F Pr(>F) 
1  28 238.83       
2  27 238.71 1 0.12128 0.0137 0.9076 

-Test zwei:

rmod<- lm(mpg ~ disp + hp + I(cyl + carb), mtcars) 
anova(mod, rmod) 

Analysis of Variance Table 
Model 1: mpg ~ disp + hp + cyl + carb 
Model 2: mpg ~ disp + hp + I(cyl + carb) 
    Res.Df RSS Df Sum of Sq  F Pr(>F) 
1  27 238.71       
2  28 238.83 -1 -0.12128 0.0137 0.9076 
+0

Hallo coffeininjunky! Ihre Antwort ist nicht 100% die Antwort auf meine Frage, weil ich wissen möchte, wie man mehrere Koeffizienten von 2 Gruppen miteinander vergleicht. Ihr Vorschlag hat mir jedoch geholfen, die Antwort auf meine Frage zu finden. Also vielen Dank. Für mich insbesondere: wenn ich das Modell ausführe, muss ich 'summary mod' verwenden, um zu sehen, wie R die Interaktionen bezeichnet. Dann kann ich das tun, was Sie angeben 'linearHypothesis (mod, c (" Gruppe0: t1 = Gruppe1: t1 "," Gruppe0: t2 = Gruppe1: t2 "))' – user33125

+0

Perfekt! Vielen Dank für Ihre Hilfe! – user33125

Verwandte Themen