-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_function.R
59 lines (59 loc) · 1.33 KB
/
test_function.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
getr = function (i, j, k, C, cut.at = 0.9999999)
{
if (length(k) == 0) {
r <- C[i, j]
}
else if (length(k) == 1) {
r <- (C[i, j] - C[i, k] * C[j, k])/sqrt((1 - C[j, k]^2) *
(1 - C[i, k]^2))
}
else {
PM <- MASS::ginv(C[c(i, j, k), c(i, j, k)])
r <- -PM[1, 2]/sqrt(PM[1, 1] * PM[2, 2])
}
if (is.na(r))
0
else min(cut.at, max(-cut.at, r))
}
log.q1pm <- function(r) log1p(2*r/(1-r))
ind_test = function (x, y, S, C, n)
{
r <- getr(x, y, S, C)
res <- sqrt(n - length(S) - 3) * 0.5 * log.q1pm(r)
if (is.na(res))
0
else res
}
nextSet = function(all_var, cur_set = NULL, l = -1){
next_set = NULL
if ( length(all_var) > 0 ){
if (is.null(cur_set)){
if ( l > 0 & l <= length(all_var)){
next_set = all_var[c(1:l)]
}
}
else{
l = length(cur_set)
index = c()
for (e in cur_set) index = c(index, which(all_var == e))
end = length(all_var)
index[l] = index[l]+1
for (i in (l+1 - 1:l)){
if (index[i]>end){
if (i > 1){
index[i] = index[i]%%end
index[i-1] = index[i-1]+1
}
else{
index = NULL
}
}
else{
break
}
}
if (length(index)>0) next_set = all_var[index]
}
}
next_set
}