предсказать некоторые пропущенные значения на основе линейной модели - PullRequest
1 голос
/ 14 апреля 2020

enter image description here

datax <- matrix(1:32, nrow = 8)
datax[2:5,1] <- NA
m <- data.frame(datax)
names(m)[c(1:4)] <- c("Length", "Width", "sex", "height")
model <- glm(Length ~ Width + sex + height, data = m)

Как вы прогнозируете значения NA на основе модели (код приведен в качестве примера)

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

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020

Как насчет разделения ваших данных на части с отсутствующими значениями и без них, создания линейной модели на основе последних и вменения отсутствующих значений в первое с помощью predict()?

library(tidyverse)

datax <- matrix(1:32, nrow = 8)
datax[2:5,1] <- NA
m <- data.frame(datax)
names(m)[c(1:4)] <- c("Length", "Width", "sex", "height")

# Creating an index of rows with missing values in "Length"
missing_index <- which(is.na(m$Length))

# Subsetting rows with missing values
m_missing <- m[missing_index,]

# Subsetting the rest
m_rest <- m[-missing_index,]

# Creating a linear model on m_rest and making predictions on m_missing
model <- lm(Length ~ ., data = m_rest)
predictions <- predict(model, newdata = m_missing %>% select(-Length))

# Insert missing values into the original dataframe
m[missing_index, "Length"] <- predictions

В результате:

> print(m)
  Length Width sex height
1      1     9  17     25
2      2    10  18     26
3      3    11  19     27
4      4    12  20     28
5      5    13  21     29
6      6    14  22     30
7      7    15  23     31
8      8    16  24     32
0 голосов
/ 15 апреля 2020

Я думаю, вы можете попытаться предсказать, как показано ниже

options(warn=-1) # shut down warnings
m[is.na(m[1]),1] <- predict(model,newdata = subset(m[-1],is.na(m[1])))
options(warn=1) # turn on warnings

так, что

> m
  Length Width sex height
1      1     9  17     25
2      2    10  18     26
3      3    11  19     27
4      4    12  20     28
5      5    13  21     29
6      6    14  22     30
7      7    15  23     31
8      8    16  24     32
...