Я хочу запустить панельную регрессию на своих данных, состоящую из 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
dput
часть набора данных, если вам нужна дополнительная помощь), но в коде, который вы нам дали, вы, похоже, используетеdat
в качестве данных для регрессии, тогда как ваш вмененный данныеdat2
. В этом проблема? Если нет, то каков результатdim(dat2)
? - person Oriol Mirosa   schedule 15.08.2017