es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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()

enter image description here

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í.
enter image description here

En lugar de calcularlo, ¿hay alguna manera de hacerlo?
Por ejemplo, ¿cómo reemplazar los valores faltantes con una función predict()?

Gracias.

Tags:  , ,

Answer

  1. Avatar for 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)


    A continuación, puedes utilizar la función `predict()` para calcular los valores faltantes en la columna B basándote en sus valores correspondientes en la columna A: ```{r} df$B[is.na(df$B)] <- predict(modelo, newdata = df[is.na(df$B),])

    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ón lm() asegura que el modelo de regresión se ajuste utilizando todas las observaciones, incluyendo aquellas con valores faltantes en la columna B.

Comments are closed.