我尝试使用
以下是该函数的结果: 我的示例数据:https://raw.githubusercontent.com/ieatbaozi/R-Practicing/master/example.csv
这是我的预期结果: 如何检测这些异常数据?
如何通过填充最合适的值来修复这些值?使它们平滑地绘制在它们周围的模式附近,并且在修复这些值后所有数据的总值仍然相同。
我的额外问题是:您有任何想法可以找到它的模式吗?我可以给您更多信息。非常感谢您的帮助。
library(AnomalyDetection)
中的 AnomalyDetectionTs()
函数,来自 https://github.com/twitter/AnomalyDetection 和 https://www.r-bloggers.com/anomaly-detection-in-r/,对我的数据进行检测。在我的示例数据中,有些波动值没有像预期那样下降曲线(或以缓慢的方式下降),这个函数对我来说不起作用。该函数检测到的所有异常点都是正确的和正常的值。以下是该函数的结果: 我的示例数据:https://raw.githubusercontent.com/ieatbaozi/R-Practicing/master/example.csv
df <- read.csv(url("https://raw.githubusercontent.com/ieatbaozi/R-Practicing/master/example.csv"),header = TRUE,stringsAsFactors = FALSE)
df$DateTime <- as.POSIXct(df$DateTime)
library(AnomalyDetection)
ADtest <- AnomalyDetectionTs(df, max_anoms=0.1, direction='both', plot=TRUE)
ADtest$plot
这是我的预期结果: 如何检测这些异常数据?
如何通过填充最合适的值来修复这些值?使它们平滑地绘制在它们周围的模式附近,并且在修复这些值后所有数据的总值仍然相同。
我的额外问题是:您有任何想法可以找到它的模式吗?我可以给您更多信息。非常感谢您的帮助。
Out
:Out[sapply(Out, function(i) { v <- df$Val[i + (-2):2]; min(v) == v[3] || max(v) == v[3] })]
- G. Grothendieck