À l'heure actuelle (version 1.2-10), il semble que le cas déséquilibré ne soit pas pris en charge. J'ai regardé le code, et la ligne de préparation des données finale (quel que soit votre argument initial) est la suivante:
object <- as.data.frame(split(object, id))
Si vous passez le panneau déséquilibré, cette ligne le rendra équilibré en répétant les mêmes valeurs. Si votre panneau déséquilibré a des séries temporelles avec des longueurs qui se divisent, même aucun message d'erreur n'est produit. Voici l'exemple de la page la plus pure:
> data(Grunfeld)
> purtest(inv ~ 1, data = Grunfeld, index = "firm", pmax = 4, test = "madwu")
Maddala-Wu Unit-Root Test (ex. var. : Individual Intercepts )
data: inv ~ 1
chisq = 47.5818, df = 20, p-value = 0.0004868
alternative hypothesis: stationarity
Ce panneau est équilibré:
> unique(table(Grunfeld$firm))
[1] 20
Déséquilibrez-le:
> gr <- subset(Grunfeld, !(firm %in% c(3,4,5) & year <1945))
Deux longueurs de séries temporelles différentes dans le panneau:
> unique(table(gr$firm))
[1] 20 10
Aucun message d'erreur:
> purtest(inv ~ 1, data = gr, index = "firm", pmax = 4, test = "madwu")
Maddala-Wu Unit-Root Test (ex. var. : Individual Intercepts )
data: inv ~ 1
chisq = 86.2132, df = 20, p-value = 3.379e-10
alternative hypothesis: stationarity
Un autre panneau déséquilibré:
> gr <- subset(Grunfeld, !(firm %in% c(3,4,5) & year <1940))
> unique(table(gr$firm))
[1] 20 15
Et le message d'erreur:
> purtest(inv ~ 1, data = gr, index = "firm", pmax = 4, test = "madwu")
Erreur dans data.frame(`1` = c(317.6, 391.8, 410.6, 257.7, 330.8, 461.2, :
arguments imply differing number of rows: 20, 15