Ошибка регрессии панели в R

Я использую несбалансированную панельную регрессию.

Независимая переменная - валовая. Зависимые переменные - это DEX, GRW, долг и жизнь. Время - год Группировка - Страна

Я успешно выполнил следующие команды:

tino=read.delim("clipboard")
tino
summary(tino)
Dep<- with(tino, cbind(Gross, index=c("Country, Year"))            
Ind<- tino[ , c('DEX', 'GRW' , 'Debt', 'Life')] 
install.packages("plm")
library('plm')          
pandata<-plm.data(tino)
tino          
summary(pandata)  
summary(Dep)
summary(Ind)

Однако когда я запускаю команду ниже для получения результатов, я получаю сообщение об ошибке.

pooling<- plm(Dep~Ind, data = pandata, model= "pooling") 

дает ошибку ниже

Error in model.frame.default(terms(formula, lhs = lhs, rhs = rhs, data = data,: invalid type (list) for variable 'Ind'

Пожалуйста помоги.

Спасибо


r plm
person Tino    schedule 19.03.2016    source источник
comment
Прочтите, пожалуйста, Как задать вопрос и как создать воспроизводимый пример.   -  person Heroka    schedule 19.03.2016


Ответы (1)


Без доступа к вашим данным невозможно подтвердить, что это сработает, но я попытаюсь указать на несколько проблем в вашем коде, которые, вероятно, способствуют возникновению ошибки.

Эта строка прекрасна:

tino=read.delim("clipboard")

Вот где вы начинаете делать ошибки:

Dep<- with(tino, cbind(Gross, index=c("Country, Year"))            
Ind<- tino[ , c('DEX', 'GRW' , 'Debt', 'Life')] 

with() обычно используется для создания новых векторов из data.frame. Все, что он делает, это позволяет вам отказаться от обозначения $ для ссылки на переменные в data.frame и ничего больше. Читая ваш код, вы можете подумать, что with() на самом деле модифицирует объект tino, но это не так.

Кроме того, когда вы хотите создать data.frame для использования в регрессионной модели, вам нужно, чтобы все правые и левые переменные были в одном data.frame или матрице, а не разделяли их. Это связано с тем, что большинство функций моделирования работают с использованием «формулы» и аргумента data, которые передаются в model.frame() для предварительной обработки данных перед моделированием.

Это означает, что вы, вероятно, хотите сделать что-то вроде следующего, пропуская все вышеперечисленное:

pandata <- plm.data(tino, index = c("Country", "Year"))
pooling <- plm(Gross ~ DEX + GRW + Debt + Life, data = pandata, model = "pooling")
summary(pooling)

Если у вас много переменных с правой стороны, вы можете подмножество data.frame, например:

pandata2 <- plm.data(tino[ , c('Gross', 'DEX', 'GRW' , 'Debt', 'Life')], index = c("Country", "Year"))
pooling2 <- plm(Gross ~ ., data = pandata2, model = "pooling")

используя обозначение . как сокращение для «всех других столбцов в данных».

person Thomas    schedule 19.03.2016
comment
У меня все еще есть проблемы с синтаксисом. Как я могу получить данные об этой платформе? Спасибо. - person Tino; 21.03.2016
comment
@Tino Сообщите в свой вопрос обо всех новых проблемах, с которыми вы столкнулись. Вы можете попробовать создать небольшой воспроизводимый пример, используя данные, доступные в пакете plm. - person Thomas; 21.03.2016