Skip to content

Commit 196a4f2

Browse files
author
OVVO-Financial
committed
NNS 10.9.3 Beta
1 parent 6011642 commit 196a4f2

15 files changed

+286
-419
lines changed

DESCRIPTION

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ Package: NNS
22
Type: Package
33
Title: Nonlinear Nonparametric Statistics
44
Version: 10.9.3
5-
Date: 2024-09-26
5+
Date: 2024-10-03
66
Authors@R: c(
77
person("Fred", "Viole", role=c("aut","cre"), email="[email protected]"),
88
person("Roberto", "Spadim", role=c("ctb"))

NAMESPACE

-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ export(NNS.rescale)
3838
export(NNS.seas)
3939
export(NNS.stack)
4040
export(NNS.term.matrix)
41-
export(NNS_bin)
4241
export(PM.matrix)
4342
export(UPM)
4443
export(UPM.VaR)

NNS_10.9.3.tar.gz

-46.4 MB
Binary file not shown.

NNS_10.9.3.zip

-2.98 KB
Binary file not shown.

R/Central_tendencies.R

+62-42
Original file line numberDiff line numberDiff line change
@@ -16,38 +16,42 @@
1616
#' @export
1717

1818

19-
NNS.mode <- function(x, discrete = FALSE, multi = TRUE){
19+
NNS.mode <- function (x, discrete = FALSE, multi = TRUE)
20+
{
2021
x <- as.numeric(x)
2122
l <- length(x)
22-
if(l <= 3) return(median(x))
23-
if(length(unique(x))==1) return(x[1])
23+
if (l <= 3)
24+
return(median(x))
25+
if (length(unique(x)) == 1)
26+
return(x[1])
2427
x_s <- x[order(x)]
25-
range <- abs(x_s[l]-x_s[1])
26-
if(range==0) return(x[1])
27-
28+
range <- abs(x_s[l] - x_s[1])
29+
if (range == 0)
30+
return(x[1])
2831
z <- NNS_bin(x_s, range/128, origin = x_s[1], missinglast = FALSE)
2932
lz <- length(z$counts)
30-
max_z <- z$counts==max(z$counts)
33+
max_z <- z$counts == max(z$counts)
3134
z_names <- seq(x_s[1], x_s[l], z$width)
32-
33-
if(sum(max_z)>1){
35+
if (sum(max_z) > 1) {
3436
z_ind <- 1:lz
35-
if(multi) return(z_names[max_z])
36-
} else {
37+
if (multi)
38+
return(z_names[max_z])
39+
}
40+
else {
3741
z_c <- which.max(z$counts)
38-
z_ind <- max(1, (z_c - 1)):min(lz,(z_c + 1))
42+
z_ind <- max(1, (z_c - 1)):min(lz, (z_c + 1))
3943
}
40-
41-
final <- sum(z_names[z_ind] * z$counts[z_ind] )/sum(z$counts[z_ind])
42-
43-
if(discrete){
44-
final <- ifelse(final%%1 < .5, floor(final), ceiling(final))
44+
final <- sum(z_names[z_ind] * z$counts[z_ind])/sum(z$counts[z_ind])
45+
if (discrete) {
46+
final <- ifelse(final%%1 < 0.5, floor(final), ceiling(final))
4547
return(final)
46-
} else {
47-
if(multi){
48-
return(final)
49-
} else {
50-
return(mean(final))
48+
}
49+
else {
50+
if (multi) {
51+
return(final)
52+
}
53+
else {
54+
return(mean(final))
5155
}
5256
}
5357
}
@@ -70,39 +74,55 @@ NNS.mode <- function(x, discrete = FALSE, multi = TRUE){
7074
#' }
7175
#' @export
7276

73-
NNS.gravity <- function(x, discrete = FALSE){
77+
NNS.gravity <- function (x, discrete = FALSE)
78+
{
7479
l <- length(x)
75-
if(l <= 3) return(median(x))
76-
if(length(unique(x))==1) return(x[1])
80+
if (l <= 3) return(median(x))
81+
if (length(unique(x)) == 1) return(x[1])
82+
7783
x_s <- x[order(x)]
78-
range <- abs(x_s[l]-x_s[1])
84+
range <- abs(x_s[l] - x_s[1])
7985

80-
if(range == 0) return(x[1])
86+
if (range == 0) return(x[1])
8187

82-
q1 <- sum(x_s[floor(l*.25)]+((l*.25)%%1 * (x_s[ceiling(l*.25)] - x_s[floor(l*.25)])))
83-
q2 <- (x_s[floor(l*.5)]+x_s[ceiling(l*.5)])/2
84-
q3 <- sum(x_s[floor(l*.75)]+((l*.75)%%1 * (x_s[ceiling(l*.75)] - x_s[floor(l*.75)])))
88+
l_25 = l*.25
89+
l_50 = l*.5
90+
l_75 = l*.75
91+
92+
if(l%%2==0){
93+
q1 <- x_s[l_25]
94+
q2 <- x_s[l_50]
95+
q3 <- x_s[l_75]
96+
} else {
97+
f_l_25 = floor(l_25)
98+
f_l_75 = floor(l_75)
99+
100+
q1 <- sum(x_s[f_l_25]+(l_25%%1 * (x_s[ceiling(l_25)] - x_s[f_l_25])))
101+
q2 <- (x_s[floor(l_50)]+x_s[ceiling(l_50)])/2
102+
q3 <- sum(x_s[f_l_75]+((l_75)%%1 * (x_s[ceiling(l_75)] - x_s[f_l_75])))
103+
}
85104

86105
z <- NNS_bin(x_s, range/128, origin = x_s[1], missinglast = FALSE)
87106
lz <- length(z$counts)
88-
max_z <- z$counts==max(z$counts)
89-
90-
if(sum(max_z)>1){
107+
max_z <- z$counts == max(z$counts)
108+
if (sum(max_z) > 1) {
91109
z_ind <- 1:lz
92-
} else {
110+
}
111+
else {
93112
z_c <- which.max(z$counts)
94-
z_ind <- max(1, (z_c - 1)):min(lz,(z_c + 1))
113+
z_ind <- max(1, (z_c - 1)):min(lz, (z_c + 1))
95114
}
96-
97115
z_names <- seq(x_s[1], x_s[l], z$width)
98-
99-
m <- sum(z_names[z_ind] * z$counts[z_ind] )/sum(z$counts[z_ind])
116+
m <- sum(z_names[z_ind] * z$counts[z_ind])/sum(z$counts[z_ind])
100117
mu <- sum(x)/l
101-
102118
res <- (q2 + m + mu + mean(c(q1, q2, q3)))/4
103-
if(is.na(res)) final <- q2 else final <- res
104-
if(discrete) return(ifelse(final%%1 < .5, floor(final), ceiling(final))) else return(final)
105-
}
119+
if (is.na(res))
120+
final <- q2
121+
else final <- res
122+
if (discrete)
123+
return(ifelse(final%%1 < 0.5, floor(final), ceiling(final)))
124+
else return(final)
125+
}
106126

107127

108128
#' NNS rescale

R/Dependence.R

+17-18
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,23 @@ NNS.dep = function(x,
4949
if(!is.null(y)){
5050
x <- as.numeric(x)
5151
l <- length(x)
52-
52+
5353
y <- as.numeric(y)
5454
obs <- max(10, l/5)
55-
55+
5656
# Define segments
5757
if(print.map) PART_xy <- suppressWarnings(NNS.part(x, y, order = NULL, obs.req = obs, min.obs.stop = TRUE, type = "XONLY", Voronoi = TRUE)) else PART_xy <- suppressWarnings(NNS.part(x, y, order = NULL, obs.req = obs, min.obs.stop = TRUE, type = "XONLY", Voronoi = FALSE))
5858

5959
PART_yx <- suppressWarnings(NNS.part(y, x, order = NULL, obs.req = obs, min.obs.stop = TRUE, type = "XONLY", Voronoi = FALSE))
60-
60+
6161
if(dim(PART_xy$regression.points)[1]==0) return(list("Correlation" = 0, "Dependence" = 0))
62-
62+
6363
PART_xy <- PART_xy$dt
6464
PART_xy <- PART_xy[complete.cases(PART_xy),]
65-
65+
6666
PART_xy[, weights_xy := .N/l, by = prior.quadrant]
6767
weights_xy <- PART_xy[, weights_xy[1], by = prior.quadrant]$V1
68-
68+
6969
PART_yx <- PART_yx$dt
7070
PART_yx <- PART_yx[complete.cases(PART_yx),]
7171

@@ -80,52 +80,51 @@ NNS.dep = function(x,
8080
NNS::NNS.copula(cbind(x, y)) * sign(cov(x,y))
8181
}
8282

83-
83+
8484
res_xy <- suppressWarnings(tryCatch(PART_xy[1:eval(ll), dep_fn(x, y), by = prior.quadrant],
85-
error = function(e) dep_fn(x, y)))
85+
error = function(e) dep_fn(x, y)))
8686

8787
res_yx <- suppressWarnings(tryCatch(PART_yx[1:eval(ll), dep_fn(y, x), by = prior.quadrant],
8888
error = function(e) dep_fn(y, x)))
89-
89+
9090
if(sum(is.na(res_xy))>0) res_xy[is.na(res_xy)] <- dep_fn(x, y)
9191
if(is.null(ncol(res_xy))) res_xy <- cbind(res_xy, res_xy)
9292

9393
if(sum(is.na(res_yx))>0) res_yx[is.na(res_yx)] <- dep_fn(x, y)
9494
if(is.null(ncol(res_yx))) res_yx <- cbind(res_yx, res_yx)
95-
95+
9696
if(asym){
9797
dependence <- sum(abs(res_xy[,2]) * weights_xy)
9898
} else {
9999
dependence <- max(c(sum(abs(res_yx[,2]) * weights_yx),
100-
sum(abs(res_xy[,2]) * weights_xy)))
100+
sum(abs(res_xy[,2]) * weights_xy)))
101101
}
102-
102+
103103
lx <- PART_xy[, length(unique(x))]
104104
ly <- PART_xy[, length(unique(y))]
105105
degree_x <- min(10, max(1,lx-1), max(1,ly-1))
106-
106+
107107
I_x <- lx < sqrt(l)
108108
I_y <- ly < sqrt(l)
109109
I <- I_x * I_y
110-
110+
111111
if(I == 1){
112112
poly_base <- suppressWarnings(tryCatch(fast_lm_mult(poly(x, degree_x), abs(y))$r.squared,
113113
warning = function(w) dependence,
114114
error = function(e) dependence))
115-
115+
116116
dependence <- gravity(c(dependence, NNS.copula(cbind(x, y), plot = FALSE), poly_base))
117117
}
118-
118+
119119
if(asym){
120120
corr <- sum(res_xy[,2] * weights_xy)
121121
} else {
122122
corr <- max(c(sum(res_yx[,2] * weights_yx), sum(res_xy[,2] * weights_xy)))
123123
}
124-
124+
125125

126126
return(list("Correlation" = corr,
127127
"Dependence" = dependence))
128-
129128
} else {
130129
if(p.value){
131130
original.par <- par(no.readonly = TRUE)

0 commit comments

Comments
 (0)