Прогнозирование при помощи подвыборки в R - PullRequest
0 голосов
/ 30 октября 2019

Вот мой код:

install.packages("wooldridge")
library(wooldridge)
data(wage1)
wage1reg<-lm(lwage ~ educ + exper + tenure, data = wage1) 

Я пытаюсь предсказать подогнанные значения для этих трех переменных по их среднему значению. Какой правильный код? Эти вещи не работают:

wagemeans<-data.frame(c(colMeans(data.frame(wage1$educ, wage1$exper, wage1$tenure))))
predict(wage1reg, newdata=wagemeans)

Кроме того, если я попробую что-то еще, например

wage1.subset1.means<-data.frame(colMeans(subset(wage1, select=c(educ, exper, tenure))))
predict(wage1reg, newdata=wage1.subset1.means)

Это тоже не работает.

Каков наилучший способ найти прогнозируемые значения для средних трех переменных?

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Спасибо.

Есть ли какой-либо другой способ получить правильные имена, если у меня есть, скажем, 100 переменных (макеты, термины взаимодействия и т. Д.), Некоторые из которых были созданы "на лету"?

0 голосов
/ 30 октября 2019

Фрейм данных wagemeans имеет неправильный формат для Предиката (). Используйте это вместо

library(wooldridge)
data(wage1)

wage1reg<-lm(lwage ~ educ + exper + tenure, data = wage1) 

wagemeans<-data.frame(educ=mean(wage1$educ),exper=mean(wage1$exper),tenure=mean(wage1$tenure))

predict(wage1reg,newdata = wagemeans)

#output
#     1 
# 1.623268 

Для более чем трех столбцов будет проще использовать пакет dplyr

library(wooldridge)
data(wage1)

wage1reg<-lm(lwage ~ educ + exper + tenure, data = wage1) 

library(dplyr)

wagemeans <- wage1 %>% 
  summarise_at(colnames(wage1[,2:4]),mean,na.rm=TRUE)

predict(wage1reg,newdata = wagemeans)

Все, что вам нужно сделать, это отредактировать lm()включить новые переменные и номера столбцов (в настоящее время 2: 4).

...