Я бы хотел использовать этот довольно чистый способ составления списка всех возможных моделей: Напишите функцию для вывода списка всех возможных моделей
Моя проблема в том, что я ' Я хотел бы иметь возможность установить для каждой переменной несколько типов регрессии. Например, я хотел бы иметь возможность проверить:
x
s(x)
plogis(x)
poly(x,2)
poly(x,3)
Я адаптировал код из ответа выше, чтобы иметь возможность запускаться как функция из нескольких входов:
step_gam <- function (dependent, var_list, data) {
vars <- list()
for(n in 1:length(var_list)){
vars[[n]] = list(paste(var_list[n]),
paste("s(",var_list[n],")"),
paste("plogis(",var_list[n],")"),
paste("Poly(",var_list[n],",2)"),
paste("Poly(",var_list[n],",3)"))
}
vars <- unlist(vars)
models <- list()
for (i in 1:length(vars)){
vc <- combn(vars,i)
for (j in 1:ncol(vc)){
model <- as.formula(paste0(dependent, "~", paste0(vc[,j], collapse = "+")))
models <- c(models, model)
}
}
lapply(models, function (x) gam(x, data = data))
}
var_list <- c("EstimatedAge")
step_gam("prop_transit", var_list, weekly_stb_gam)
Единственная проблема заключается в том, что в настоящее время функция циклически перебирает каждую переменную, поэтому даже если у меня есть только 1 член, я получаю 31 модель, а не 5.
пример текущего выхода для object models
:
y~x
y~x + s(x)
y~x + s(x) + plogis(x)
...
Я хотел бы иметь возможность включать каждую переменную только один раз. Пример ожидаемого вывода для объекта models
:
y~x
y~s(x)
y~plogis(x)
Но у меня есть несколько переменных: пример ожидаемого вывода для объекта models
y ~ x
y ~ z
y ~ x + z
y ~ s(x)
y ~ s(z)
y ~ s(x) + z
y ~ x + s(z)
y ~ s(x) + s(z)
Еженедельно_stb_gam dput:
structure(list(EstimatedAge = c(-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2), woy = c(49L, 28L, 29L, 30L, 31L,
32L, 33L, 34L, 35L, 36L, 38L, 6L, 37L, 10L, 36L, 44L, 11L, 24L,
21L, 22L, 23L, 28L, 31L, 41L, 45L, 2L, 5L, 6L, 7L, 9L, 16L, 18L,
19L, 22L, 27L, 28L, 32L, 35L, 39L, 42L, 45L, 49L, 3L, 5L, 19L,
20L, 22L, 28L, 31L, 32L, 35L, 37L, 38L, 51L, 1L, 2L, 8L, 9L,
14L, 15L, 18L, 19L, 25L, 27L, 28L, 33L, 36L, 24L, 25L, 26L, 27L,
29L, 30L, 32L, 33L, 34L, 35L, 36L, 38L, 39L, 40L, 42L, 43L, 44L,
46L, 47L, 48L, 49L, 50L, 51L, 52L, 1L, 3L, 4L, 8L, 11L, 12L,
13L, 14L, 15L), at_large = c(0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 21L, 27L, 6L, 12L, 21L, 24L, 26L, 21L, 0L, 1L, 2L, 4L,
5L, 7L, 8L, 8L, 8L, 9L, 10L, 11L, 10L, 11L, 14L, 15L, 13L, 15L,
15L, 16L, 21L, 23L, 24L, 26L, 28L, 25L, 24L, 27L, 30L, 28L, 29L,
30L, 32L, 32L, 33L, 27L, 26L, 28L, 28L, 26L, 24L, 26L, 22L, 23L,
20L, 23L, 24L, 24L, 24L, 4L, 4L, 4L, 4L, 6L, 5L, 7L, 7L, 6L,
6L, 6L, 7L, 7L, 7L, 8L, 8L, 8L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
9L, 9L, 11L, 11L, 11L, 10L, 10L, 10L), Avg_Flow = c(5468.14285714286,
7159.28571428571, 3200.28571428571, 6569.71428571429, 6975, 6374.57142857143,
7077, 7172.42857142857, 7171.28571428571, 7167.57142857143, 1490.85714285714,
4373.85714285714, 2424.28571428571, 3429.85714285714, 2378.28571428571,
1003.28571428571, 644.857142857143, 3208.28571428571, 693.428571428571,
1126.14285714286, 1406.57142857143, 4852.85714285714, 4635.42857142857,
989.285714285714, 2135.85714285714, 920.285714285714, 378, 1487.85714285714,
2495.14285714286, 1937, 493.714285714286, 412.857142857143, 190.428571428571,
374.428571428571, 1184.85714285714, 1190.57142857143, 2190, 2419.57142857143,
2001.28571428571, 291.571428571429, 1288.42857142857, 5468.14285714286,
3861.42857142857, 2534.28571428571, 326.714285714286, 535.285714285714,
606.285714285714, 246.857142857143, 342.571428571429, 346, 2323.28571428571,
762.857142857143, 464.571428571429, 1567.14285714286, 2464, 2536.42857142857,
2389.28571428571, 2331.28571428571, 498, 513.571428571429, 1164.85714285714,
1307.71428571429, 4135.85714285714, 6417.85714285714, 7159.28571428571,
7077, 7167.57142857143, 1804.28571428571, 2047.71428571429, 6250.28571428571,
5450.71428571429, 4564.28571428571, 4994.14285714286, 5268.71428571429,
6639.14285714286, 6953.71428571429, 5281.85714285714, 3636.57142857143,
3423.14285714286, 1993.71428571429, 1350.42857142857, 824.142857142857,
1309, 2493.85714285714, 1851.71428571429, 1366.28571428571, 1404.57142857143,
1365.14285714286, 1906.28571428571, 1993.85714285714, 1444.57142857143,
1122.42857142857, 1492.71428571429, 663.714285714286, 721.285714285714,
2517.85714285714, 922.142857142857, 835.285714285714, 906.857142857143,
492.142857142857), Avg_Temperature = c(14.5571428571429, 24.2285714285714,
24.4571428571429, 25.3714285714286, 25.3857142857143, 24.3857142857143,
24.7, 23.7571428571429, 22.4857142857143, 22.6428571428571, 23.9428571428571,
13.6, 22.8142857142857, 15.9714285714286, 24.6714285714286, 17.5142857142857,
18.5142857142857, 23, 19.9, 22.9, 24.5285714285714, 25.2571428571429,
23.8142857142857, 18.1857142857143, 15.1428571428571, 9.58571428571429,
11.5571428571429, 11.8571428571429, 13.6285714285714, 14.5285714285714,
19.9714285714286, 20.7857142857143, 20.6428571428571, 23.5285714285714,
26.1857142857143, 26.1571428571429, 25.7428571428571, 25.1, 22.8285714285714,
20.6142857142857, 17.1571428571429, 14.5571428571429, 10.6142857142857,
11.8285714285714, 20.1571428571429, 19.4285714285714, 22.5, 24.2714285714286,
25.0142857142857, 24.4142857142857, 24.6142857142857, 23.6714285714286,
22.9571428571429, 9.77142857142857, 8.31428571428571, 9.21428571428571,
14.6142857142857, 16.0571428571429, 18.4428571428571, 19.1857142857143,
19.8285714285714, 20.0857142857143, 23.0142857142857, 25.0857142857143,
24.2285714285714, 24.7, 22.6428571428571, 22.8714285714286, 22.7857142857143,
26.3714285714286, 26.2571428571429, 24.7571428571429, 24.4142857142857,
23.4714285714286, 24.9, 24.1571428571429, 24.0714285714286, 24.0142857142857,
21.7142857142857, 20.0285714285714, 18.5571428571429, 18.4, 17.46,
15.18, 14.6, 12.6857142857143, 12.0285714285714, 8.87142857142857,
8.34285714285714, 8.58571428571429, 8.65714285714286, 8.98571428571429,
9.87142857142857, 10.7857142857143, 14.3571428571429, 16.5714285714286,
17.3571428571429, 16.3142857142857, 17.3714285714286, 19.8428571428571
), Avg_Turbidity = c(5.99857142857143, 11.0457142857143, 24.9557142857143,
11.02, 8.63285714285714, 8.62571428571429, 9.84714285714286,
9.91714285714286, 8.31571428571429, 7.93142857142857, 7.34428571428571,
6.58285714285714, 10.2442857142857, 9.04285714285714, 8.57571428571429,
3.69142857142857, 6.71285714285714, 9.22285714285714, 17.6685714285714,
14.6685714285714, 13.5242857142857, 13.0742857142857, 19.3942857142857,
9.04428571428571, 7.74285714285714, 8.15428571428571, 9.22571428571429,
9.17857142857143, 8.56285714285714, 9.18857142857143, 8.43428571428571,
7.8, 8.91857142857143, 7.99, 11.69, 11.42, 14.1371428571429,
9.30857142857143, 6.42428571428571, 3.93, 4.21857142857143, 5.99857142857143,
10.71, 6.77285714285714, 8.67, 8.87571428571428, 7.26285714285714,
9.11285714285714, 10.0828571428571, 10.6071428571429, 9.18, 6.09857142857143,
5.55571428571429, 8.71, 8.13, 9.99857142857143, 12.805, 9.59666666666667,
12.2728571428571, 12.4328571428571, 7.57, 8.03714285714286, 10.5885714285714,
11.4442857142857, 11.0457142857143, 9.84714285714286, 7.93142857142857,
13.8442857142857, 16.9785714285714, 14.8142857142857, 13.8042857142857,
16.63, 20.01, 11.8728571428571, 9.90571428571429, 12.34, 64.4071428571429,
10.9714285714286, 10.3914285714286, 10.07, 10.5142857142857,
7.41142857142857, 7.122, 7.942, 11.9171428571429, 8.47142857142857,
7.97857142857143, 8.00714285714286, 8.08142857142857, 9.42857142857143,
8.95571428571429, 8.38714285714286, 8.46428571428572, 8.22428571428572,
8.12142857142857, 9.46714285714286, 9.14285714285714, 35.4285714285714,
8.88, 8.37714285714286), n_Salmonids = c(0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 4, 0, 43, 0, 0, 7, 0, 86, 13, 0, 0, 0, 0, 0, 0, 0,
0, 5, 12, 104, 22, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 1, 1,
0, 0, 0, 0, 0, 0, 0, 6, 17, 13, 93, 21, 7, 12, 13, 5, 0, 0, 0,
0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 43, 17, 17, 85, 33)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -100L))
> dput(weekly_stb_gam[1:100,c(4:10,13)])
structure(list(EstimatedAge = c(-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2), woy = c(49L, 28L, 29L, 30L, 31L,
32L, 33L, 34L, 35L, 36L, 38L, 6L, 37L, 10L, 36L, 44L, 11L, 24L,
21L, 22L, 23L, 28L, 31L, 41L, 45L, 2L, 5L, 6L, 7L, 9L, 16L, 18L,
19L, 22L, 27L, 28L, 32L, 35L, 39L, 42L, 45L, 49L, 3L, 5L, 19L,
20L, 22L, 28L, 31L, 32L, 35L, 37L, 38L, 51L, 1L, 2L, 8L, 9L,
14L, 15L, 18L, 19L, 25L, 27L, 28L, 33L, 36L, 24L, 25L, 26L, 27L,
29L, 30L, 32L, 33L, 34L, 35L, 36L, 38L, 39L, 40L, 42L, 43L, 44L,
46L, 47L, 48L, 49L, 50L, 51L, 52L, 1L, 3L, 4L, 8L, 11L, 12L,
13L, 14L, 15L), at_large = c(0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 21L, 27L, 6L, 12L, 21L, 24L, 26L, 21L, 0L, 1L, 2L, 4L,
5L, 7L, 8L, 8L, 8L, 9L, 10L, 11L, 10L, 11L, 14L, 15L, 13L, 15L,
15L, 16L, 21L, 23L, 24L, 26L, 28L, 25L, 24L, 27L, 30L, 28L, 29L,
30L, 32L, 32L, 33L, 27L, 26L, 28L, 28L, 26L, 24L, 26L, 22L, 23L,
20L, 23L, 24L, 24L, 24L, 4L, 4L, 4L, 4L, 6L, 5L, 7L, 7L, 6L,
6L, 6L, 7L, 7L, 7L, 8L, 8L, 8L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
9L, 9L, 11L, 11L, 11L, 10L, 10L, 10L), Avg_Flow = c(5468.14285714286,
7159.28571428571, 3200.28571428571, 6569.71428571429, 6975, 6374.57142857143,
7077, 7172.42857142857, 7171.28571428571, 7167.57142857143, 1490.85714285714,
4373.85714285714, 2424.28571428571, 3429.85714285714, 2378.28571428571,
1003.28571428571, 644.857142857143, 3208.28571428571, 693.428571428571,
1126.14285714286, 1406.57142857143, 4852.85714285714, 4635.42857142857,
989.285714285714, 2135.85714285714, 920.285714285714, 378, 1487.85714285714,
2495.14285714286, 1937, 493.714285714286, 412.857142857143, 190.428571428571,
374.428571428571, 1184.85714285714, 1190.57142857143, 2190, 2419.57142857143,
2001.28571428571, 291.571428571429, 1288.42857142857, 5468.14285714286,
3861.42857142857, 2534.28571428571, 326.714285714286, 535.285714285714,
606.285714285714, 246.857142857143, 342.571428571429, 346, 2323.28571428571,
762.857142857143, 464.571428571429, 1567.14285714286, 2464, 2536.42857142857,
2389.28571428571, 2331.28571428571, 498, 513.571428571429, 1164.85714285714,
1307.71428571429, 4135.85714285714, 6417.85714285714, 7159.28571428571,
7077, 7167.57142857143, 1804.28571428571, 2047.71428571429, 6250.28571428571,
5450.71428571429, 4564.28571428571, 4994.14285714286, 5268.71428571429,
6639.14285714286, 6953.71428571429, 5281.85714285714, 3636.57142857143,
3423.14285714286, 1993.71428571429, 1350.42857142857, 824.142857142857,
1309, 2493.85714285714, 1851.71428571429, 1366.28571428571, 1404.57142857143,
1365.14285714286, 1906.28571428571, 1993.85714285714, 1444.57142857143,
1122.42857142857, 1492.71428571429, 663.714285714286, 721.285714285714,
2517.85714285714, 922.142857142857, 835.285714285714, 906.857142857143,
492.142857142857), Avg_Temperature = c(14.5571428571429, 24.2285714285714,
24.4571428571429, 25.3714285714286, 25.3857142857143, 24.3857142857143,
24.7, 23.7571428571429, 22.4857142857143, 22.6428571428571, 23.9428571428571,
13.6, 22.8142857142857, 15.9714285714286, 24.6714285714286, 17.5142857142857,
18.5142857142857, 23, 19.9, 22.9, 24.5285714285714, 25.2571428571429,
23.8142857142857, 18.1857142857143, 15.1428571428571, 9.58571428571429,
11.5571428571429, 11.8571428571429, 13.6285714285714, 14.5285714285714,
19.9714285714286, 20.7857142857143, 20.6428571428571, 23.5285714285714,
26.1857142857143, 26.1571428571429, 25.7428571428571, 25.1, 22.8285714285714,
20.6142857142857, 17.1571428571429, 14.5571428571429, 10.6142857142857,
11.8285714285714, 20.1571428571429, 19.4285714285714, 22.5, 24.2714285714286,
25.0142857142857, 24.4142857142857, 24.6142857142857, 23.6714285714286,
22.9571428571429, 9.77142857142857, 8.31428571428571, 9.21428571428571,
14.6142857142857, 16.0571428571429, 18.4428571428571, 19.1857142857143,
19.8285714285714, 20.0857142857143, 23.0142857142857, 25.0857142857143,
24.2285714285714, 24.7, 22.6428571428571, 22.8714285714286, 22.7857142857143,
26.3714285714286, 26.2571428571429, 24.7571428571429, 24.4142857142857,
23.4714285714286, 24.9, 24.1571428571429, 24.0714285714286, 24.0142857142857,
21.7142857142857, 20.0285714285714, 18.5571428571429, 18.4, 17.46,
15.18, 14.6, 12.6857142857143, 12.0285714285714, 8.87142857142857,
8.34285714285714, 8.58571428571429, 8.65714285714286, 8.98571428571429,
9.87142857142857, 10.7857142857143, 14.3571428571429, 16.5714285714286,
17.3571428571429, 16.3142857142857, 17.3714285714286, 19.8428571428571
), Avg_Turbidity = c(5.99857142857143, 11.0457142857143, 24.9557142857143,
11.02, 8.63285714285714, 8.62571428571429, 9.84714285714286,
9.91714285714286, 8.31571428571429, 7.93142857142857, 7.34428571428571,
6.58285714285714, 10.2442857142857, 9.04285714285714, 8.57571428571429,
3.69142857142857, 6.71285714285714, 9.22285714285714, 17.6685714285714,
14.6685714285714, 13.5242857142857, 13.0742857142857, 19.3942857142857,
9.04428571428571, 7.74285714285714, 8.15428571428571, 9.22571428571429,
9.17857142857143, 8.56285714285714, 9.18857142857143, 8.43428571428571,
7.8, 8.91857142857143, 7.99, 11.69, 11.42, 14.1371428571429,
9.30857142857143, 6.42428571428571, 3.93, 4.21857142857143, 5.99857142857143,
10.71, 6.77285714285714, 8.67, 8.87571428571428, 7.26285714285714,
9.11285714285714, 10.0828571428571, 10.6071428571429, 9.18, 6.09857142857143,
5.55571428571429, 8.71, 8.13, 9.99857142857143, 12.805, 9.59666666666667,
12.2728571428571, 12.4328571428571, 7.57, 8.03714285714286, 10.5885714285714,
11.4442857142857, 11.0457142857143, 9.84714285714286, 7.93142857142857,
13.8442857142857, 16.9785714285714, 14.8142857142857, 13.8042857142857,
16.63, 20.01, 11.8728571428571, 9.90571428571429, 12.34, 64.4071428571429,
10.9714285714286, 10.3914285714286, 10.07, 10.5142857142857,
7.41142857142857, 7.122, 7.942, 11.9171428571429, 8.47142857142857,
7.97857142857143, 8.00714285714286, 8.08142857142857, 9.42857142857143,
8.95571428571429, 8.38714285714286, 8.46428571428572, 8.22428571428572,
8.12142857142857, 9.46714285714286, 9.14285714285714, 35.4285714285714,
8.88, 8.37714285714286), n_Salmonids = c(0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 4, 0, 43, 0, 0, 7, 0, 86, 13, 0, 0, 0, 0, 0, 0, 0,
0, 5, 12, 104, 22, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 1, 1,
0, 0, 0, 0, 0, 0, 0, 6, 17, 13, 93, 21, 7, 12, 13, 5, 0, 0, 0,
0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 1, 43, 17, 17, 85, 33), prop_transit = c(NaN,
NaN, 0, 0, 0, 0, 0, 0, 0, 0, 0.0476190476190476, 0.037037037037037,
0.333333333333333, 0.0833333333333333, 0.0952380952380952, 0.0416666666666667,
0.0384615384615385, 0.0476190476190476, NaN, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0.166666666666667, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0909090909090909, 0,
0, 0, 0)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-100L))