Ich habe einige Modelle mit festen Effekten und wiederholten Messungen mit einer verschachtelten Fehlerkomponente geschätzt, die auf Gruppierungsvariablen basieren, dh nicht verschachtelten Modellen, die plm verwenden . Ich bin jetzt interessiert daran
- Testen Sie, ob die vollständigen Modelle signifikant unterschiedlich sind, dh wobei das vollständige Modell für und das vollständige Modell für und ist
Females
Males
- Testen Sie anschließend ausgewählte Regressionskoeffizienten zwischen zwei Gruppen, dh wobei \ beta_ {Female == year1.5} der Regressionskoeffizient für Frauen ist at und \ beta_ {Male == year1.5} ist der Regressionskoeffizient für Männer at .
year1.5
year1.5
Ich werde die Situation anhand des folgenden Arbeitsbeispiels veranschaulichen:
Zunächst werden einige Pakete benötigt,
# install.packages(c("plm","texreg","tidyverse","lmtest"), dependencies = TRUE)
library(plm); library(lmtest); require(tidyverse)
Zweitens einige Datenaufbereitung,
data(egsingle, package = "mlmRev")
dta <- egsingle %>% mutate(Female = recode(female,.default = 0L,`Female` = 1L))
Drittens schätze ich eine Reihe von Modellen für jedes Geschlecht in Daten
MoSpc <- as.formula(math ~ Female + size + year)
dfMo = dta %>% group_by(female) %>%
do(fitMo = plm(update(MoSpc, . ~ . -Female),
data = ., index = c("childid", "year", "schoolid"), model="within") )
Schauen wir uns zunächst die beiden geschätzten Modelle an.
texreg::screenreg(dfMo[[2]], custom.model.names = paste0('FE: ', dfMo[[1]]))
#> ===================================
#> FE: Female FE: Male
#> -----------------------------------
#> year-1.5 0.79 *** 0.88 ***
#> (0.07) (0.10)
#> year-0.5 1.80 *** 1.88 ***
#> (0.07) (0.10)
#> year0.5 2.51 *** 2.56 ***
#> (0.08) (0.10)
#> year1.5 3.04 *** 3.17 ***
#> (0.08) (0.10)
#> year2.5 3.84 *** 3.98 ***
#> (0.08) (0.10)
#> -----------------------------------
#> R^2 0.77 0.79
#> Adj. R^2 0.70 0.72
#> Num. obs. 3545 3685
#> ===================================
#> *** p < 0.001, ** p < 0.01, * p < 0.05 #>
Nun möchte ich testen, ob sich diese beiden (linearen OLS) Modelle signifikant unterscheiden, vgl. Punkt 1 oben. Ich habe mich in SO und im Internet umgesehen und einige schlagen vor, dass ich verwenden muss plm::pFtest()
, auch hier vorgeschlagen , was ich versucht habe, aber ich bin nicht überzeugt. Ich hätte mir einen Test für nicht verschachtelte Modelle vorgestellt, einen möglichen Cox-Test, lmtest::coxtest
bin mir aber überhaupt nicht sicher. Wenn mir hier jemand helfen könnte.
Ich habe es versucht,
plm::pFtest(dfMo[[1,2]], dfMo[[2,2]])
# >
# > F test for individual effects
# >
# >data: update(MoSpc, . ~ . - Female)
# >F = -0.30494, df1 = 113, df2 = 2693, p-value = 1
# >alternative hypothesis: significant effects
und,
lmtest::coxtest(dfMo[[1,2]], dfMo[[2,2]])
# > Cox test
# >
# > Model 1: math ~ size + year
# > Model 2: math ~ size + year
# > Estimate Std. Error z value Pr(>|z|)
# > fitted(M1) ~ M2 0.32 1.66695 0.1898 0.8494
# > fitted(M2) ~ M1 -1222.87 0.13616 -8981.1963 <2e-16 ***
# > ---
# > Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# > Warning messages:
# > 1: In lmtest::coxtest(dfMo[[1, 2]], dfMo[[2, 2]]) :
# > models fitted on different subsets
# > 2: In lmtest::coxtest(dfMo[[1, 2]], dfMo[[2, 2]]) :
# > different dependent variables specified
Zweitens bin ich daran interessiert, Regressionskoeffizienten zwischen zwei Gruppen zu vergleichen. Angenommen, unterscheidet sich die Schätzung für year1.5
3,04 signifikant von 3,17? Vgl. Punkt 2 oben.
Bitte fragen Sie, ob einer der oben genannten Punkte nicht klar ist, und ich werde ihn gerne näher erläutern. Jede Hilfe wird sehr geschätzt!
Mir ist klar, dass diese Frage ein bisschen programmiert ist, aber ich habe sie ursprünglich in SO gepostet. Allerdings Dwin war nett genug , um darauf hinzuweisen, dass die Frage in CrossValidated gehörte und migriert sie hier.
Fixed-Effects-Modell r plm Nested-Data- Hypothesentest mit wiederholten Messungen Panel-Daten Mixed-Model- Regression Panel-Daten Nicht-Nested-Modelle Nested-Modelle
quelle
plm
Modelltypen und dem Paket erhalten habe. Ich werde in Zukunft mehr darauf achten, meine Fragen an der richtigen Stelle zu stellen. Vielen Dank.plm(math ~ Female * (x1 + x2))
. Um die erste Nullhypothese zu testen, führen Sie einfach den F-Test für alle Koeffizienten aus, die mitFemale:x1
,Female:x2
. Um die zweite Null zu testen, müssen Sie nur den zugeordneten Parameter testenFemale:year1.5
.suest
zu sehen, ob zwei Modelle sich signifikant unterscheiden. Es gibt einesuest()
Funktion in einem Paket für R, aber ich bezweifle, dass es dasselbe ist. In Statasuest
ist verwandt mit "scheinbar nicht verwandter Schätzung". Beachten Sie, dasssureg
das etwas anders ist. Ich interessiere mich auch für eine R-Lösung. Hoffe das würde irgendwie helfen.Antworten:
Female
plm
year=1.5
beträgt der p-Wert 0,32.quelle
-c(1:5)
Block so umzuschreiben , dass der Code allgemeiner wird? Ich habe wechselnde Größenvektoren, die ein- und ausgehen, und eine allgemeinere Antwort würde möglicherweise auch anderen zugute kommen.-c(1:5)
regulären Ausdruck ersetzt. Es ist jetzt allgemeiner. Im Allgemeinen möchten Siegrepl
Muster bei Vorhandensein vieler Variablen abgleichen.