Ошибка в x[, !na.check] : неправильное количество измерений в данных панели

Я хочу запустить панельную регрессию на своих данных, состоящую из 192 наблюдений (48 наблюдений каждый год, всего 4 года).

Поскольку отсутствуют наблюдения, я использовал пакет «мыши» в R для вменения моих данных (вменение выполняется 10 раз). После вменения я использовал метод агрегации для объединения 10 вмененных наборов данных (действительно, я использовал точный метод, упомянутый здесь)

Наконец, я построил регрессионную модель панели с помощью пакета plm. Однако после команды plm я увидел следующее сообщение.

Error in x[, !na.check] : incorrect number of dimensions 

Я не понимаю, почему у меня проблемы с размерами моих данных. Я также не могу найти соответствующий ресурс здесь, в stackoverflow. Читатели могут просмотреть мои коды R ниже.

dat <- read.csv("panel.csv")

# apply the mice package for imputation
library(mice)
impute <- mice(dat,m = 10, maxit = 50,meth = 'pmm',seed = 500)
dat2 <- complete(impute, action = "long")

### Aggregate dataset for model building
# Find the most frequent level in a factor variable
getmode <- function(v) {
  levels(v)[which.max(table(v))]
}

# Return either the mean or mode depending on the type of variable passed to it
my_summary <- function(x, id, ...){
if (is.numeric(x)) {
  return(tapply(x, id, mean))
}  
if (is.factor(x)) {
  return(tapply(x, id, getmode))
}  }

# Finally, use lapply to calculate the summaries
dat_panel <- data.frame(lapply(dat2, my_summary, id = dat2$.id))


### Now, we will built a panel model with fixed effects
# First, we build a model for ROA
library(plm)
reg <- plm(formula <- ROA ~ Year.of.IPO + TTassets + Debt.ratio + TTdonation,
        index <- c("Year","Level"),
        data <- dat_panel,
        method <- "within")

Может кто-нибудь объяснить, почему возникает ошибка? Я ценю ваши объяснения!

Я предоставляю больше информации о моих данных. Действительно, я использую «dat_panel» для построения своей регрессионной модели. Размер набора данных составляет 192 строки x 11 столбцов. Структуру набора данных можно увидеть ниже

dim(dat_panel)
[1] 192  11

str(dat_panel)
'data.frame':   192 obs. of  11 variables:
 $ .imp       : chr [1:192(1d)] "1" "1" "1" "1" ...
  ..- attr(*, "dimnames")=List of 1
 .. ..$ : chr  "1" "10" "100" "101" ...
 $ .id        : chr [1:192(1d)] "1" "10" "100" "101" ...
 ..- attr(*, "dimnames")=List of 1
 .. ..$ : chr  "1" "10" "100" "101" ...

Я также предоставляю первые несколько строк моего набора данных (по просьбе кого-то)

> head(dat_panel)
   Year          Level Stock.Code Year.of.IPO    ROA     ROE TTassets Debt.ratio TTdonation
1  2013  Conglomerates          1          45   8.52  10.150 19.87659  0.1130966   17.30594
18 2013  Conglomerates         19          46   4.47   6.200 19.66903  0.1525779   17.57671
24 2013  Conglomerates         25          33   9.25  18.820 16.36257  0.2645771   12.31321
29 2013  Conglomerates         30          26  -4.30  -7.920 13.16387  0.0000000   12.45592
32 2013 Consumer Goods         33          10 -16.63 -18.023 12.43860  0.3243540   12.23134
35 2013 Consumer Goods         36          44  -2.56  -2.250 13.05192  0.0000000   11.08727

person michigan8mileroad    schedule 15.08.2017    source источник
comment
Трудно понять, в чем проблема, не видя данных (так что вы могли бы dput часть набора данных, если вам нужна дополнительная помощь), но в коде, который вы нам дали, вы, похоже, используете dat в качестве данных для регрессии, тогда как ваш вмененный данные dat2. В этом проблема? Если нет, то каков результат dim(dat2)?   -  person Oriol Mirosa    schedule 15.08.2017
comment
Привет, Орел, я уже отредактировал свой пост. Пожалуйста, посмотрите!   -  person michigan8mileroad    schedule 16.08.2017
comment
Причину выяснил сам. Внутри команды plm мне нужно использовать = вместо ‹- для всех моих компонентов. Он отлично работает, когда я использую =   -  person michigan8mileroad    schedule 16.08.2017