R plm包中关于长度相同但内容不同的索引的警告消息

R plm包中关于长度相同但内容不同的索引的警告消息,r,statistics,panel-data,plm,R,Statistics,Panel Data,Plm,当我执行模型的“summary()”时,我从R中的plm包中得到一条警告消息: 1:在Ops.pseries(y,bX)中:pseries的索引具有相同的长度,但 内容不相同:结果已分配给第一个操作数的索引 2:在Ops.pseries(y,bX)中:pseries的索引具有相同的长度,但没有相同的长度 内容相同:结果被分配给第一个操作数的索引 我使用了以下代码: library(dplyr) library(lubridate) library(plm) data <- data.fr

当我执行模型的“summary()”时,我从R中的plm包中得到一条警告消息:

1:在Ops.pseries(y,bX)中:pseries的索引具有相同的长度,但 内容不相同:结果已分配给第一个操作数的索引 2:在Ops.pseries(y,bX)中:pseries的索引具有相同的长度,但没有相同的长度 内容相同:结果被分配给第一个操作数的索引

我使用了以下代码:

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

库(dplyr)
图书馆(lubridate)
图书馆(plm)
数据%
(ID,group)%>%变异(消耗量=ifelse(group,runif(12,1,2),runif(12,2,3)))

pdata似乎是
plm
pdata.frame
不喜欢在估计之前通过对数据执行某些转换而注入到数据帧中的某些修改

确保像这样向
pdata.frame
提供一个干净的数据帧,代码运行正常:

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

fdata看起来像是
plm
pdata.frame
不喜欢通过在估计之前对数据执行的某些转换将某些修改注入到数据帧中

确保像这样向
pdata.frame
提供一个干净的数据帧,代码运行正常:

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

fdata解决此问题的另一种方法是添加ungroup()

那么下面

group_by(ID, group) %>% mutate(consumption = ifelse(group, runif(12, 1,2), runif(12,2,3)))
应该成为

group_by(ID, group) %>% mutate(consumption = ifelse(group, runif(12, 1,2), runif(12,2,3))) %>% ungroup()

解决此问题的另一种方法是添加ungroup()

那么下面

group_by(ID, group) %>% mutate(consumption = ifelse(group, runif(12, 1,2), runif(12,2,3)))
应该成为

group_by(ID, group) %>% mutate(consumption = ifelse(group, runif(12, 1,2), runif(12,2,3))) %>% ungroup()

你有没有可能提供这些数据?另外,根据您提供的代码,不清楚哪个命令给出了警告:
plm
pdata.frame
、或
summary
谢谢@Helix123的回答。警告来自
摘要(模型)
,源于我添加了数据摘录。我指的是允许复制问题的数据,请参见,例如,此处感谢@Helix123的回答。不幸的是,由于隐私原因,这是不可能的。明白。所以我假设如果你不能提供一个可复制的设置(可能是你的数据中不侵犯隐私的子集),没有人能提供帮助。由于您正在使用的函数经过了很好的测试,我还假设错误在其他地方。您有没有可能提供这些数据?另外,根据您提供的代码,不清楚哪个命令给出了警告:
plm
pdata.frame
、或
summary
谢谢@Helix123的回答。警告来自
摘要(模型)
,源于我添加了数据摘录。我指的是允许复制问题的数据,请参见,例如,此处感谢@Helix123的回答。不幸的是,由于隐私原因,这是不可能的。明白。所以我假设如果你不能提供一个可复制的设置(可能是你的数据中不侵犯隐私的子集),没有人能提供帮助。由于您使用的函数经过了很好的测试,我还假设错误在其他地方。非常感谢@Helix123。这解决了我的问题。似乎使用TIBLE而不是data.frame会导致此警告。plm的当前开发版本可以调用
data.frame()
build-in
pdata.frame
作为安全措施。非常感谢@Helix123。这解决了我的问题。似乎使用TIBLE而不是data.frame会导致此警告。作为安全措施,plm的当前开发版本可以调用
data.frame()
build-in
pdata.frame