【发布时间】:2019-02-13 03:24:49
【问题描述】:
过去我使用lm 函数与matrix-type 数据和data.frame-type。但我想这是我第一次尝试使用没有data.frame 的模型来使用predict。而且我不知道如何使它工作。
我阅读了一些其他问题(例如Getting Warning: " 'newdata' had 1 row but variables found have 32 rows" on predict.lm),我很确定我的问题与拟合模型后得到的系数名称有关。由于某种原因,系数名称是矩阵名称与列名称的粘贴......我一直无法找到解决方法......
library(tidyverse)
library(MASS)
set.seed(1)
label <- sample(c(T,F), nrow(Boston), replace = T, prob = c(.6,.4))
x.train <- Boston %>% dplyr::filter(., label) %>%
dplyr::select(-medv) %>% as.matrix()
y.train <- Boston %>% dplyr::filter(., label) %>%
dplyr::select(medv) %>% as.matrix()
x.test <- Boston %>% dplyr::filter(., !label) %>%
dplyr::select(-medv) %>% as.matrix()
y.test <- Boston %>% dplyr::filter(., !label) %>%
dplyr::select(medv) %>% as.matrix()
fit_lm <- lm(y.train ~ x.train)
fit_lm2 <- lm(medv ~ ., data = Boston, subset = label)
predict(object = fit_lm, newdata = x.test %>% as.data.frame()) %>% length()
predict(object = fit_lm2, newdata = x.test %>% as.data.frame()) %>% length()
# they get different numbers of predicted data
# the first one gets a number a results consistent with x.train
欢迎任何帮助。
【问题讨论】:
标签: r regression linear-regression prediction lm