2016-03-19 3 views
1

Я запускаю несбалансированную регрессию панели.Ошибка регрессии панели в 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' 

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

Благодаря

+0

Пожалуйста, прочитайте [ask] и как создать [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). – Heroka

ответ

0

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

Эта линия хорошо:

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 для использования в регрессионной модели, вы хотите, чтобы все правые и левые переменные в одном файле данных или матрице, а не их разделение. Это связано с тем, что большинство функций моделирования работают с использованием аргумента «formula» и 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") 

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

+0

У меня все еще есть некоторые трудности с синтаксисом. Как я могу получить данные на этой платформе. Спасибо. – Tino

+0

@Tino Обновите свой вопрос с любыми новыми проблемами, с которыми вы сталкиваетесь. Вы можете попробовать сделать небольшой воспроизводимый пример, используя данные, доступные в пакете plm. – Thomas