LinearRegression Predict: нет применимого метода для «предиката», примененного к объекту класса «data.Frame» - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть мои данные (в настоящее время фиктивные данные):

data_for_prediction <- original_data[,c(1,3)]

, если вы хотите воспроизвести проблемы, для этой ошибки достаточно:

data_for_prediction <- data.frame(
  diff = c(1,2,3),
  f.mean_slope = c (1,2,3)
)

, который состоит только из двух строк: "diff" (Y) и "f.mean_slope" (x)

, затем я делаю выборку целиком:

set.seed(101)
trainingRowIndex <- sample(1:nrow(data_for_prediction), 0.8*nrow(data_for_prediction))
trainingData <- data_for_prediction[trainingRowIndex, ]  
testData  <- data_for_prediction[-trainingRowIndex, ]

После этого я создаю подгонка:

model_fit <- lm(diff ~ ., data = trainingData, method = "model.frame")

А когда я сейчас пытаюсь что-то предсказать:

newdata <- data.frame(
  f.mean_slope = c(1,2,3)
)

distPred <- predict(model_fit, newdata) 

И R Studio просто возвращает сообщение об ошибке:

Ошибка в UseMethod («предикат»): нет применимого метода для «предиката», примененного к объекту класса «data.Frame»

, который сводит меня с ума, так как я искал тонны вопросов о inte rnet с несколько похожей проблемой, но никто не работал ...

У кого-нибудь есть идеи?

1 Ответ

2 голосов
/ 16 февраля 2020

Это потому, что вы использовали:

model_fit <- lm(diff ~ ., data = trainingData, method = "model.frame")
class(model_fit)
[1] "data.frame"

Выше приведена матрица модели, используемая для подгонки данных.

Вместо этого вы можете сделать:

model_fit <- lm(diff ~ ., data = trainingData,model=TRUE)
newdata <- data.frame(
  f.mean_slope = c(1,2,3)
)

distPred <- predict(model_fit, newdata) 

А матрицу модели можно найти в model_fit$model

...