commit 2c275e446ed303e28087642fe1b54716bd0a250a
parent 1895895637899bca6beecc257289ce4460b28c84
Author: Ivan Gankevich <i.gankevich@spbu.ru>
Date: Mon, 19 Apr 2021 13:50:18 +0300
Compute ACF coefficient regressions on mean wind speed.
Diffstat:
R/anal.R | | | 137 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------- |
1 file changed, 123 insertions(+), 14 deletions(-)
diff --git a/R/anal.R b/R/anal.R
@@ -325,7 +325,7 @@ fit_velocity_acf_bilateral <- function (velocity, axis="x", timestamp=0, plot=TR
estimated <- c(model_1$estimated, model_2$estimated)
actual <- c(model_1$actual, model_2$actual)
plot(lag, actual, xlab='Lag', ylab='ACF')
- lines(-model_1$lag, model_2$estimated, col='red', lwd=2)
+ lines(-model_1$lag, model_1$estimated, col='red', lwd=2)
lines(model_2$lag, model_2$estimated, col='blue', lwd=2)
path <- file.path('build', 'acf', axis)
make_directory(path)
@@ -337,7 +337,13 @@ fit_velocity_acf_bilateral <- function (velocity, axis="x", timestamp=0, plot=TR
write("\n",file=filename,append=TRUE)
write.table(data.frame(lag=model_2$lag,actual=model_2$actual,estimated=model_2$estimated),
filename, row.names=FALSE, quote=FALSE, append=TRUE)
- list(coefficients=model_1$coefficients,
+ mean_1 <- abs(mean(v[v<=0]))
+ mean_2 <- abs(mean(v[v>=0]))
+ coefs <- model_1$coefficients
+ if (mean_1 < mean_2) {
+ coefs <- model_2$coefficients
+ }
+ list(coefficients=coefs,
rmse=rmse(estimated,actual),
lag=lag,
actual=actual,
@@ -413,11 +419,13 @@ fit_direction_bilateral <- function (direction, plot=TRUE, timestamp=0, dist="vo
rmse=rmse(estimated_density, actual_density))
}
+time_delta = 60*60*2
#time_start = time_string_to_timestamp("2021-03-06T00:00")
#time_end = time_string_to_timestamp("2021-03-06T23:00")
-time_start = time_string_to_timestamp("2021-02-21T00:00")
-time_end = time_string_to_timestamp("2021-03-31T23:00")
-time_delta = 60*60*2
+#time_start = time_string_to_timestamp("2021-02-21T00:00")
+#time_end = time_string_to_timestamp("2021-03-31T23:00")
+time_start = 1616936400
+time_end = time_start
print(time_start)
print(time_end)
@@ -430,12 +438,14 @@ timestamps <- seq(time_start, time_end, time_delta)
#for (timestamp in timestamps) {
cumulative_data <- foreach (timestamp=timestamps, .combine=rbind, .errorhandling='remove') %dopar% {
cumulative_data <- data.frame(speed=numeric(0),direction=numeric(0),
- x_mode=numeric(0),abs_x_mode=numeric(0),x_sd=numeric(0),
- y_mean=numeric(0),v_mean=numeric(0),d_mean=numeric(0),
+ abs_x_mode=numeric(0),x_sd=numeric(0),
+ y_sd=numeric(0),z_sd=numeric(0),
+ x_mean=numeric(0),y_mean=numeric(0),z_mean=numeric(0),
+ x_var=numeric(0),y_var=numeric(0),z_var=numeric(0),
+ v_mean=numeric(0),d_mean=numeric(0),
x_a=numeric(0),x_b=numeric(0),x_c=numeric(0),
x_d=numeric(0),x_e=numeric(0),x_f=numeric(0),
- # Y
- y_mode=numeric(0),
+ x_mode=numeric(0),y_mode=numeric(0),z_mode=numeric(0),
y_a=numeric(0),y_b=numeric(0),y_c=numeric(0),
y_d=numeric(0),y_e=numeric(0),y_f=numeric(0),
timestamp=numeric(0),
@@ -453,10 +463,12 @@ cumulative_data <- foreach (timestamp=timestamps, .combine=rbind, .errorhandling
pdf(filename)
x_mode <- getmode(velocity$x)
y_mode <- getmode(velocity$y)
+ z_mode <- getmode(velocity$z)
new_row = nrow(cumulative_data)+1
cumulative_data[new_row, "timestamp"] = timestamp
cumulative_data[new_row, "x_mode"] = x_mode
cumulative_data[new_row, "y_mode"] = y_mode
+ cumulative_data[new_row, "z_mode"] = z_mode
cumulative_data[new_row, "speed"] = mean(velocity$speed)
cumulative_data[new_row, "direction"] = direction(x_mode, y_mode)
#cumulative_data[new_row, "direction"] = weighted.mean(velocity$direction, speed(velocity$x,velocity$y))
@@ -549,9 +561,37 @@ cumulative_data <- foreach (timestamp=timestamps, .combine=rbind, .errorhandling
start=45,clockwise=TRUE,rp.type="polygon")
par(mar=old_mar)
+ max_abs_mean <- function (x) {
+ #max(abs(mean(x[x<=0])), abs(mean(x[x>=0])))
+ mean_1 <- abs(mean(x[x<=0]))
+ mean_2 <- abs(mean(x[x>=0]))
+ if (mean_1 > mean_2) {
+ return(mean(x[x<=0]))
+ } else {
+ return(mean(x[x>=0]))
+ }
+ }
+
+ max_abs_var <- function (x) {
+ mean_1 <- abs(mean(x[x<=0]))
+ mean_2 <- abs(mean(x[x>=0]))
+ if (mean_1 > mean_2) {
+ return(var(x[x<=0]))
+ } else {
+ return(var(x[x>=0]))
+ }
+ }
+
cumulative_data[new_row, "abs_x_mode"] = abs(x_mode)
cumulative_data[new_row, "x_sd"] = sd(velocity$x)
- cumulative_data[new_row, "y_mean"] = mean(velocity$y)
+ cumulative_data[new_row, "y_sd"] = sd(velocity$y)
+ cumulative_data[new_row, "z_sd"] = sd(velocity$z)
+ cumulative_data[new_row, "x_mean"] = max_abs_mean(velocity$x)
+ cumulative_data[new_row, "y_mean"] = max_abs_mean(velocity$y)
+ cumulative_data[new_row, "z_mean"] = max_abs_mean(velocity$z)
+ cumulative_data[new_row, "x_var"] = max_abs_var(velocity$x)
+ cumulative_data[new_row, "y_var"] = max_abs_var(velocity$y)
+ cumulative_data[new_row, "z_var"] = max_abs_var(velocity$z)
cumulative_data[new_row, "v_mean"] = mean(velocity$speed)
cumulative_data[new_row, "d_mean"] = mean(velocity$direction)
#i <- i + 1
@@ -572,14 +612,83 @@ model <- nls(x_sd ~ a*speed+b,
control=list(warnOnly=TRUE),
start=list(a=1,b=0))
coefs <- summary(model)$coefficients
-#print(coefs)
x_sd_est <- sapply(cumulative_data$speed, function (x) { coefs[[1]]*x + coefs[[2]] })
plot(cumulative_data$speed, cumulative_data$x_sd)
lines(cumulative_data$speed, x_sd_est, col='red')
-plot(cumulative_data$acf_x_a, cumulative_data$x_sd)
-plot(log(cumulative_data$acf_x_b), cumulative_data$x_sd)
-plot(cumulative_data$acf_x_c, cumulative_data$x_sd)
+#plot(cumulative_data$acf_x_a, cumulative_data$x_sd)
+#plot(log(cumulative_data$acf_x_b), cumulative_data$x_sd)
+#plot(cumulative_data$acf_x_c, cumulative_data$x_sd)
+
+# remove outliers
+cumulative_data <- cumulative_data[cumulative_data$acf_x_b<2 & cumulative_data$acf_y_b<2 & cumulative_data$acf_z_b<2,]
+
+plot(cumulative_data$x_mean, (cumulative_data$acf_x_a))
+reg <- lm((cumulative_data$acf_x_a)~cumulative_data$x_mean)
+lines(cumulative_data$x_mean, reg$fitted.values, col='red')
+print(reg)
+
+plot(cumulative_data$x_mean, (cumulative_data$acf_x_b))
+reg <- lm((cumulative_data$acf_x_b)~cumulative_data$x_mean)
+lines(cumulative_data$x_mean, reg$fitted.values, col='red')
+print(reg)
+
+plot(cumulative_data$x_mean, cumulative_data$acf_x_c)
+reg <- lm(cumulative_data$acf_x_c~cumulative_data$x_mean)
+lines(cumulative_data$x_mean, reg$fitted.values, col='red')
+print(reg)
+
+# ###
+
+#plot(cumulative_data$x_mean, (cumulative_data$acf_y_a))
+#reg <- lm((cumulative_data$acf_y_a)~cumulative_data$x_mean)
+#lines(cumulative_data$x_mean, reg$fitted.values, col='red')
+#print(reg)
+#
+#plot(cumulative_data$x_mean, (cumulative_data$acf_y_b))
+#reg <- lm((cumulative_data$acf_y_b)~cumulative_data$x_mean)
+#lines(cumulative_data$x_mean, reg$fitted.values, col='red')
+#print(reg)
+#
+#plot(cumulative_data$x_mean, cumulative_data$acf_y_c)
+#reg <- lm(cumulative_data$acf_y_c~cumulative_data$x_mean)
+#lines(cumulative_data$x_mean, reg$fitted.values, col='red')
+#print(reg)
+
+
+plot(cumulative_data$y_mean, (cumulative_data$acf_y_a))
+reg <- lm((cumulative_data$acf_y_a)~cumulative_data$y_mean)
+lines(cumulative_data$y_mean, reg$fitted.values, col='red')
+print(reg)
+
+plot(cumulative_data$y_mean, (cumulative_data$acf_y_b))
+reg <- lm((cumulative_data$acf_y_b)~cumulative_data$y_mean)
+lines(cumulative_data$y_mean, reg$fitted.values, col='red')
+print(reg)
+
+plot(cumulative_data$y_mean, cumulative_data$acf_y_c)
+reg <- lm(cumulative_data$acf_y_c~cumulative_data$y_mean)
+lines(cumulative_data$y_mean, reg$fitted.values, col='red')
+print(reg)
+
+
+plot(cumulative_data$z_mean, (cumulative_data$acf_z_a))
+reg <- lm((cumulative_data$acf_z_a)~cumulative_data$z_mean)
+lines(cumulative_data$z_mean, reg$fitted.values, col='red')
+print(reg)
+
+plot(cumulative_data$z_mean, (cumulative_data$acf_z_b))
+reg <- lm((cumulative_data$acf_z_b)~cumulative_data$z_mean)
+lines(cumulative_data$z_mean, reg$fitted.values, col='red')
+print(reg)
+
+plot(cumulative_data$z_mean, cumulative_data$acf_z_c)
+reg <- lm(cumulative_data$acf_z_c~cumulative_data$z_mean)
+lines(cumulative_data$z_mean, reg$fitted.values, col='red')
+print(reg)
+
+#plot(cumulative_data$x_mean, (cumulative_data$acf_x_b))
+quit()
#plot(cumulative_data$acf_v_a, cumulative_data$v_mean)
#plot(log(cumulative_data$acf_v_b), cumulative_data$v_mean)
#plot(cumulative_data$acf_v_c, cumulative_data$v_mean)