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.

Correlación Bootstrapped para datos anidados usando Tidymodels

Tengo un conjunto de datos mensuales (enero – diciembre) para clima y rendimiento de cultivos. Estos datos se recopilan durante varios años (2002 – 2019). Mi objetivo es obtener el coeficiente de correlación con bootstrap de la relación entre la temperatura en cada mes y la brecha de rendimiento.

Aquí están los datos y el código.


Cargar bibliotecas: library(readxl) library(tidyverse) library(tidymodels) > Método S3 registrado sobreescrito por 'tune': > método desde > required_pkgs.model_spec parsnip library(reprex) datos: ww_wt <- read_csv("https://raw.githubusercontent.com/MohsinRamay/yieldgap/main/ww_wt.csv") > Nombres nuevos: > * `` -> ...1 > Filas: 1924 Columnas: 20 > -- Especificación de columna ---------------------------------------------- > Delimitador: "," > chr (3): ID, Location, Month > dbl (16): ...1, Year, Latitude, Longitude, YieldTrt, YieldUntrt, Mildew, Ye... > date (1): Date > > use spec () para recuperar la especificación completa de columna para estos datos. > Especifique los tipos de columna o establezca show_col_types = FALSE para suprimir este mensaje. ww_wt %> select(Year, Month, gap, temp) %> head() > # Una tibble: 6 x 4 > Year Month gap temp > <dbl> <chr> <dbl> <dbl> > 1 2002 September 0.282 13.6 > 2 2002 October 0.282 13.3 > 3 2002 November 0.282 7.07 > 4 2002 December 0.282 3.44 > 5 2002 January 0.282 5.61 > 6 2002 February 0.282 6.93 Realizando el bootstrapping: set.seed(123) ww_wt %> select(Year, Month, gap, temp) %> nest(data = -c(Month)) %> mutate(boots = map(data, ~bootstraps(.x, times = 100, apparent = FALSE))) %> unnest(boots) %> mutate(correlations = map(splits, ~cor.test(.x$gap, .x$temp), tidied = map(correlations, tidy))) > Error: Problema con la columna mutate() correlations. > i correlations = map(...). > x 'x' debe ser un vector numérico
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error indica que hay un problema con el tipo de dato de la variable x. En este caso, x se está pasando a cor.test() como gap o como temp. cor.test() requiere entradas numéricas, pero parece que los tipos de datos de estas variables no son numéricos.

    Para solucionar este problema, podemos convertir gap y temp a numéricos antes de ejecutar la prueba de correlación. Aquí tienes un fragmento de código actualizado:

    set.seed(123)
    
    ww_wt %>% 
      select(Year, Month, gap, temp) %>% 
      nest(data = -c(Month)) %>% 
      mutate(boots = map(data, ~bootstraps(.x, times = 100, apparent = FALSE))) %>% 
      unnest(boots) %>% 
      mutate(correlations = map(splits, ~{
        # convertir gap y temp a numéricos
        gap_numeric <- as.numeric(.x$gap)
        temp_numeric <- as.numeric(.x$temp)
    
        # realizar la prueba de correlación
        cor.test(x = gap_numeric, y = temp_numeric) %>% 
          tidy()
      })) %>%
      select(Month, correlations)
    

    Esto debería producir los coeficientes de correlación bootstrap entre la temperatura y la brecha de rendimiento para cada mes.

Comments are closed.