Search code examples
rstatisticspanel-dataplm

Warning message in R plm package regarding indexes that have the same length but not the same content


I get a warning message from the plm package in R when I perform ´summary()´ of a model:

1: In Ops.pseries(y, bX) : indexes of pseries have same length but not same content: result was assigned first operand's index 2: In Ops.pseries(y, bX) : indexes of pseries have same length but not same content: result was assigned first operand's index

I used the following code:

library(dplyr)
library(lubridate)
library(plm)

data <- data.frame(ID = rep(c("123456", "234567", "345678", "456789", "567890", "678901", "789012", "890123", "901234","9012345"), each = 24),
                 month = rep(seq(dmy("01.01.2019"), dmy("01.12.2020"), by = "1 months"),10), group = rep(c(rep(T, 12), rep(F, 12)), 10),
                 temperature = runif(24*10, 0, 1)) %>% 
group_by(ID, group) %>% mutate(consumption = ifelse(group, runif(12, 1,2), runif(12,2,3))) 

pdata <- pdata.frame(x = data, index = c("ID", "month"))
model <- plm(formula = consumption ~  group + temperature, data = pdata, effect = "individual", model = "within") 
summary(model)
## Warnmeldungen:
## 1: In Ops.pseries(y, bX) :
##  indexes of pseries have same length but not same content: result was assigned first operand's index
## 2: In Ops.pseries(y, bX) :
##  indexes of pseries have same length but not same content: result was assigned first operand's index

My thought was that it could be one of the two indices. However, I get the same warning message when I either use "ID" or "month" as index.

An excerpt of the data feed in look like this: enter image description here


Solution

  • It seems like plm or pdata.frame does not like some modifications injected into the data frame by some transformation you perform on the data prior to estimation.

    Make sure to feed a clean data frame to pdata.frame like this and the code runs fine:

    fdata <- data.frame(data)
    pdata <- pdata.frame(x = fdata, index = c("ID", "month"))
    model <- plm(formula = consumption ~  group + temperature, data = pdata, effect = "individual", model = "within") 
    summary(model)
    
    ## Oneway (individual) effect Within Model
    ## 
    ## Call:
    ## plm(formula = consumption ~ group + temperature, data = pdata, 
    ##     effect = "individual", model = "within")
    ## 
    ## Balanced Panel: n = 10, T = 24, N = 240
    ## 
    ## Residuals:
    ##      Min.   1st Qu.    Median   3rd Qu.      Max. 
    ## -0.581113 -0.237459  0.031184  0.252256  0.541147 
    ## 
    ## Coefficients:
    ##              Estimate Std. Error  t-value Pr(>|t|)    
    ## groupTRUE   -1.020820   0.038559 -26.4743   <2e-16 ***
    ## temperature -0.029801   0.064738  -0.4603   0.6457    
    ## ---
    ## Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
    ## 
    ## Total Sum of Squares:    82.792
    ## Residual Sum of Squares: 20.318
    ## R-Squared:      0.75459
    ## Adj. R-Squared: 0.74275
    ## F-statistic: 350.521 on 2 and 228 DF, p-value: < 2.22e-16