У меня есть два списка по четыре фрейма данных в каждом. Фреймы данных в обоих списках (loc_list_future и loc_list_2019) содержат 33 столбца: Год, а затем средние значения осадков для 32 различных моделей климата.
Фреймы данных в loc_list_future выглядят следующим образом, но всего с 32 столбцами модели, а данные относятся к 2059 году:
Year Model 1 Model 2 Model 3 ...Model 32
2020 714.1101 686.5888 1048.4274
2021 1018.0095 766.9161 514.2700
2022 756.7066 902.2542 906.2877
2023 906.9675 919.5234 647.6630
2024 767.4008 861.1275 700.2612
2025 876.1538 738.8370 664.3342
2026 781.5092 801.2387 743.8965
2027 876.3522 819.4323 675.3022
2028 626.9468 927.0774 696.1884
2029 752.4084 824.7682 835.1566
...
2059
Фреймы данных в loc_list_2019 имеют годы в диапазоне от 2006-2019, но в остальном выглядят одинаково.
Каждый фрейм данных представляет географическое местоположение, и два списка имеют одинаковые четыре местоположения, но один список предназначен для значений 2006–2019 годов, а другой - для будущих значений.
Я хотел бы провести t-тесты с двумя выборками, которые сравнивают значения 2006-19 годов с будущими значениями для каждой модели в каждом месте.
У меня есть другой список (loc_list_OBS), в котором есть фреймы данных только с двумя столбцами Year и Mean_Precip (это наблюдаемые данные, не основанные на моделях, поэтому есть только один столбец для среднего количества осадков). У меня есть код (см. Ниже), который будет запускать t-тесты с двумя выборками для наблюдаемых данных (loc_list_OBS) против будущих данных (loc_list_future), но я не уверен, как я могу изменить этот код для запуска t-тестов для двух списков в каждой по 32 модели.
myfun <- function(x,y)
{
OBS_Data <- x$Mean_Precip
#Empty list
List <- list()
#Now loop
for(i in 2:dim(y)[2])
{
#Label
val <- names(y[,i,drop=F])
Future_Data <- y[,i]
#Test
test <- t.test(OBS_Data, Future_Data, alternative = "two.sided")
#Save
List[[i-1]] <- test
names(List)[i-1] <- val
}
return(List)
}
t.stat <- mapply(FUN = myfun,x=loc_list_OBS,y=loc_list_future, SIMPLIFY = FALSE)