Как использовать функцию предсказания с моими объединенными результатами от мышей ()? - PullRequest
0 голосов
/ 09 октября 2018

Привет, я только начал использовать R как часть модуля в школе.У меня есть набор данных с отсутствующими данными, и я использовал mouse (), чтобы вычислить отсутствующие данные.Сейчас я пытаюсь использовать функцию прогнозирования с моими объединенными результатами.Однако я обнаружил следующую ошибку:

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

Я включил весь свой код ниже, и я очень оценил бы его, если бы вы все могли помочь новичку.Спасибо!

```{r}
library(magrittr)
library(dplyr)
train = read.csv("Train_Data.csv", na.strings=c("","NA"))
test = read.csv("Test_Data.csv", na.strings=c("","NA"))
cols <- c("naCardiac", "naFoodNutrition", "naGenitourinary", "naGastrointestinal", "naMusculoskeletal", "naNeurological", "naPeripheralVascular", "naPain", "naRespiratory", "naSkin")
train %<>%
       mutate_each_(funs(factor(.)),cols)
test %<>%
       mutate_each_(funs(factor(.)),cols)
str(train)
str(test)
```

```{r}
library(mice)
md.pattern(train)
```

```{r}
miTrain = mice(train, m = 5, maxit = 50, meth = "pmm")
```

```{r}
model = with(miTrain, lm(LOS ~ Age + Gender + Race + Temperature + RespirationRate + HeartRate + SystolicBP + DiastolicBP + MeanArterialBP + CVP + Braden + SpO2 + FiO2 + PO2_POCT + Haemoglobin + NumWBC + Haematocrit + NumPlatelets + ProthrombinTime + SerumAlbumin + SerumChloride + SerumPotassium + SerumSodium + SerumLactate + TotalBilirubin + ArterialpH + ArterialpO2 + ArterialpCO2 + ArterialSaO2 + Creatinine + Urea + GCS + naCardiac + GCS + naCardiac + naFoodNutrition + naGenitourinary + naGastrointestinal + naMusculoskeletal + naNeurological + naPeripheralVascular + naPain + naRespiratory + naSkin))
model
summary(model)
```

```{r}
modelResults = pool(model)
modelResults
```

```{r}
pred = predict(modelResults, newdata = test)
PredTest = data.frame(test$PatientID, modelResults)
str(PredTest)
summary(PredTest)
```

1 Ответ

0 голосов
/ 09 октября 2018

Один слегка хакерский способ добиться этого - взять одну из подогнанных моделей, созданных с помощью fit(), и заменить сохраненные коэффициенты окончательными объединенными оценками.Я не провел детального тестирования, но, похоже, он работает над этим простым примером:

library(mice)

imp <- mice(nhanes, maxit = 2, m = 2)
fit <- with(data = imp, exp = lm(bmi ~ hyp + chl))
pooled <- pool(fit)

# Copy one of the fitted lm models fit to
#   one of the imputed datasets
pooled_lm = fit$analyses[[1]]
# Replace the fitted coefficients with the pooled
#   estimates (need to check they are replaced in
#   the correct order)
pooled_lm$coefficients = summary(pooled)$estimate

# Predict - predictions seem to match the
#   pooled coefficients rather than the original
#   lm that was copied
predict(fit$analyses[[1]], newdata = nhanes)
predict(pooled_lm, newdata = nhanes)

Насколько я знаю predict() для линейной регрессии должен зависеть только от коэффициентов, так что вы не должны 'необходимо заменить другие сохраненные значения в подобранной модели (но вам придется это сделать, если применять методы, отличные от predict()).

...