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
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 acor.test()
comogap
o comotemp
.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
ytemp
a numéricos antes de ejecutar la prueba de correlación. Aquí tienes un fragmento de código actualizado:Esto debería producir los coeficientes de correlación bootstrap entre la temperatura y la brecha de rendimiento para cada mes.