Ho stimato alcune misure ripetute Modelli di effetti fissi, con un componente di errore nidificato, basato su variabili di raggruppamento, ovvero modelli non nidificati, utilizzando plm. Ora sono interessato a
- verifica se i modelli completi sono significativamente diversi, ad es dove è il modello completo per
Females
eè il modello completo perMales
e - successivamente testare i coefficienti di regressione selezionati tra due gruppi, ad es dove è il coefficiente di regressione per le femmine a
year1.5
, eè il coefficiente di regressione per i maschi ayear1.5
.
Illustrerò la situazione usando l'esempio di lavoro qui sotto,
Innanzitutto, sono necessari alcuni pacchetti,
# install.packages(c("plm","texreg","tidyverse","lmtest"), dependencies = TRUE)
library(plm); library(lmtest); require(tidyverse)
In secondo luogo, alcuni preparazione dei dati,
data(egsingle, package = "mlmRev")
dta <- egsingle %>% mutate(Female = recode(female,.default = 0L,`Female` = 1L))
In terzo luogo, stima una serie di modelli per ciascun genere di dati
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") )
Avanti, diamo un'occhiata ai due modelli stimati,
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 #>
Ora, voglio verificare se questi due modelli (OLS lineari) sono significativamente diversi, cfr. punto 1 sopra. Ho guardato in giro SO e Internet e alcuni suggeriscono che devo usare plm::pFtest()
, anche suggerito qui , che ho provato, ma non sono convinto. Avrei immaginato qualche test per modelli non nidificati, possibile test Cox lmtest::coxtest
, ma non ne sono affatto sicuro. Se qualcuno qui potesse aiutarmi.
Provai,
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
e,
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
In secondo luogo, sono interessato a confrontare i coefficienti di regressione tra due gruppi. Supponiamo che la stima year1.5
di 3.04 sia significativamente diversa da 3.17? Cf. punto 2 sopra.
Si prega di chiedere se uno dei precedenti non è chiaro e sarò felice di elaborare. Qualsiasi aiuto sarà molto apprezzato!
Mi rendo conto che questa domanda è un po 'programmabile, ma inizialmente l'ho pubblicata in SO. Tuttavia, DWin è stato così gentile da sottolineare che la domanda apparteneva a CrossValidated e la ha migrata qui.
-effetti fissi-model r plm nested-dati controllo di un'ipotesi misure ripetute panel-data mixed-model regressione panel-data non nidificati-modelli nested-modelli
plm(math ~ Female * (x1 + x2))
. Per verificare la prima ipotesi nulla, basta eseguire test F per tutti i coefficienti associati Female:x1
, Female:x2
. Per testare il secondo null, devi solo t testare il parametro associato Female:year1.5
.
suest
per vedere se due modelli sono significativamente diversi. C'è una suest()
funzione in un pacchetto per R ma dubito che sia la stessa. In Stata suest
è correlato a "Stima apparentemente non correlata". Nota, sureg
è un po 'diverso. Sono anche interessato a una soluzione R. Spero che possa aiutare in qualche modo.
plm
pacchetto, su stackoverflow.com. In futuro mi prenderò più cura di pubblicare le mie domande nel posto giusto. Grazie.