我需要平滑和清理ping数据图表(截图中的橙色)以改善阅读体验。 - 清洁:用当地平均值替换1 ping作为timeOut值,但是没有多少时间过度 - 平滑:用局部平均值代替小的振荡值,但保留突然变化的日期时间
答案 0 :(得分:1)
我编写了这个VBA代码(Excel函数Smoothing),将其放在工作簿的新VBA模块中,并在您的数据系列中使用它,如下所示:
Public Function Smoothing(ByVal Values As range)
' il faudrait plutot chercher les valeurs aberante et les retirer
AverageAvec = Application.Average(Values)
EcartTypeAvec = Application.StDevP(Values)
EcartTypeRef = EcartTypeAvec
Smoothing = AverageAvec
For Each cell In Values
AverageSans = Application.Average(SetDifference(Values, cell))
EcartTypeSans = Application.StDevP(SetDifference(Values, cell))
If EcartTypeSans < EcartTypeRef Then
EcartTypeRef = EcartTypeSans
If EcartTypeAvec > EcartTypeRef * 1.3 Then
Smoothing = AverageSans
End If
End If
Next
End Function
Function SetDifference(ByVal Rng1 As range, ByVal Rng2 As range) As range
On Error Resume Next
If Intersect(Rng1, Rng2) Is Nothing Then
'if there is no common area then we will set both areas as result
Set SetDifference = Union(Rng1, Rng2)
'alternatively
'set SetDifference = Nothing
Exit Function
End If
On Error GoTo 0
Dim aCell As range
For Each aCell In Rng1
Dim Result As range
If Application.Intersect(aCell, Rng2) Is Nothing Then
If Result Is Nothing Then
Set Result = aCell
Else
Set Result = Union(Result, aCell)
End If
End If
Next aCell
Set SetDifference = Result
End Function
我的代码搜索对标准偏差有最大影响的值,并将其排除以计算新的本地平均值。
对于3个单元格范围来说这是一个很好的实现,但是WARNING
具有更多单元格范围(用于改善平滑效果),如果许多值对标准偏差有重要影响,则只有一个已经删除!