Мне нужно получить результат теста Грейнджера для разных пар.
Это функция, дающая нужный результат (p_value
), и она отлично работает.
myFunction<-function(x,y)
{
test<-grangertest(x~y,data=df)
return(test$`Pr(>F)`[2])
}
Эта функция работаетну, например, в этом случае:
myFunction(df$X48df886f9,df$X0deb4b6a8)
Теперь я готовлю все возможные комбинации:
list_1<-list(names(df))
list_2<-list(names(df))
combinations<-expand.grid(list_1,list_2)
Ну, чтобы сделать это воспроизводимым, я выбираю для вас первые 6 переменных
> df[1:50,1:6]
target X48df886f9 X0deb4b6a8 X34b15f335 a8cb14b00 X2f0771a37
1 17.45310 0 0 0 0 0
2 13.30469 0 0 0 0 0
3 16.11810 0 0 0 0 0
4 14.50866 0 0 0 0 0
5 16.48274 0 0 0 0 0
6 14.84513 0 0 0 0 0
7 12.00763 0 0 0 0 0
8 13.30469 0 0 0 0 0
9 13.79429 0 0 0 0 0
10 13.03898 0 0 0 0 0
11 13.91082 0 0 0 0 0
12 16.58810 0 0 0 0 0
13 12.77706 0 0 0 0 0
14 15.76142 0 0 0 0 0
15 11.51294 0 0 0 0 0
16 13.59237 0 0 0 0 0
17 12.20608 0 0 0 0 0
18 15.09644 0 0 0 0 0
19 14.84012 0 0 0 0 0
20 10.59666 0 0 0 0 0
21 14.28551 0 0 0 0 0
22 14.99928 0 0 0 0 0
23 15.63034 0 0 0 0 0
24 16.51593 0 0 0 0 0
25 13.63319 0 0 0 0 0
26 12.89922 0 0 0 0 0
27 15.68731 0 0 0 0 0
28 14.34614 0 0 0 0 0
29 13.74652 0 0 0 0 0
30 15.20181 0 0 0 0 0
31 11.53274 0 0 0 0 0
32 16.81124 0 0 0 0 0
33 15.35596 0 0 0 0 0
34 16.81124 0 0 0 0 0
35 13.69898 0 0 0 0 0
36 15.60727 0 0 0 0 0
37 16.81124 0 0 0 0 0
38 14.50866 0 0 0 0 0
39 16.70588 0 0 0 0 0
40 15.67181 0 0 0 0 0
41 16.81124 0 0 0 0 0
42 16.11810 0 0 0 0 0
43 15.42495 0 0 0 0 0
44 16.01274 0 0 0 0 0
45 17.36334 0 0 0 0 0
46 15.20181 0 0 0 0 0
47 14.31629 0 0 0 0 0
48 15.31959 0 0 0 0 0
49 16.39573 0 0 0 0 0
50 16.11810 0 0 0 0 0
Когда я хочу применить тест для всех возможных комбинаций, я использовал mapply как:
res_matrix <- mapply(myFunction,df[,which(names(df) %in% c(combinations$Var1))],df[,which(names(df) %in% c(combinations$Var2))])
Но он возвращает пустой результат:
> res_matrix
named list()
Как я могрешить эту проблему?