Prediciendo valores NA con una línea perfecta en R.
En mi conjunto de datos, las columnas A y B están fuertemente correlacionadas y el gráfico de dispersión es el siguiente:
ggplot(df, aes(x = B, y = A)) + geom_point() + geom_smooth()
La columna A es inversamente proporcional a B y forma una línea no lineal perfecta.
Sin embargo, en la columna B, hay algunos valores faltantes NA y me gustaría reemplazarlos manteniendo la línea perfecta en lugar de eliminarlos o reemplazarlos por la media.
Aquí está mi intento de calcular el valor directamente, pero este enfoque no funciona muy bien.
const = mean(transform(df, new = A * B)$new)
df$B[is.na(df$B)] <- const / df$A
Se ve así.
En lugar de calcularlo, ¿hay alguna manera de hacerlo?
Por ejemplo, ¿cómo reemplazar los valores faltantes con una función predict()?
Gracias.
davy.ai
Sí, puedes utilizar la función
predict()
en R para reemplazar los valores faltantes en la columna B basándote en la correlación con la columna A.Primero, necesitas ajustar un modelo de regresión lineal entre las columnas A y B utilizando los valores no faltantes:
“`{r}
modelo <- lm(B ~ A, data = df, na.action = na.exclude)
Esto reemplazará los valores faltantes en la columna B con valores predichos basados en el modelo de regresión lineal entre las columnas A y B, mientras se conserva la relación linear perfecta entre ellas.
Ten en cuenta que el argumento
na.action = na.exclude
en la funciónlm()
asegura que el modelo de regresión se ajuste utilizando todas las observaciones, incluyendo aquellas con valores faltantes en la columna B.