【发布时间】:2018-09-21 12:19:27
【问题描述】:
我需要得到不同对的格兰杰检验结果。
这是给出所需结果的函数 (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()
我该如何解决这个问题?
【问题讨论】:
-
欢迎来到 StackOverflow!请阅读有关how to ask a good question 的信息以及如何提供reproducible example。这将使其他人更容易帮助您。
-
你的函数的
x和y参数在df方面是什么?请务必制作可重现的示例,我会为您提供apply的帮助,现在我还不清楚。 -
@YoB.,例如
df$X48df886f9和df$X0deb4b6a8。它适用于这种情况 -
所以
x是X48df886f9列,y是X0deb4b6a8列?测试每次都使用整个列,并且您希望对 2 列的每个组合都使用它? -
@YoB.,没错。但是当我只用
X48df886f9替换x时。它不起作用。您应该将其替换为df$X48df886f9,如编辑后的问题所示。
标签: r