statistic

package
v1.0.2201 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 1, 2022 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

statistic

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SelectValueFromStatisticData

func SelectValueFromStatisticData(v StatisticData, keyword string) float64

*********************************************************** 功能:根据需要的数据指令从历史统计结构体中返回相应的数据 输入:历史统计结构体,数据类型指令 输出:浮点数 时间:2019年12月23日 编辑:wang_jp ***********************************************************

func StructFormatPrint added in v1.0.2201

func StructFormatPrint(msg interface{}, names ...string)

Json格式打印输出结构体

func TimeParse

func TimeParse(s string, loc ...*time.Location) (time.Time, error)

*********************************************************** 功能:时间参数格式化 输入:时间字符串,可选的时区 输出:格式化后的时间变量,错误信息 时间:2019年11月28日 编辑:wang_jp ***********************************************************

Types

type PeakValleyPeriodValue

type PeakValleyPeriodValue struct {
	Peak   TimeSeriesData //峰值数据
	Valley TimeSeriesData //谷值数据
	PVDiff float64        //峰谷值之差
}

type PeakValleySelector

type PeakValleySelector struct {
	InflectionIncrement float64                 //拐点增量
	SteadyValue         float64                 //稳态判据值
	ContinuePoint       int                     //连续稳定的数据点数
	NegativeAsZero      int                     //如果为0,保留负数;如果为1,将负数作为0处理
	PeakSum             float64                 //峰之和
	ValleySum           float64                 //谷之和
	PVDiffSum           float64                 //峰谷差之和
	PeriodCnt           int                     //周期数
	PvDatas             []PeakValleyPeriodValue //峰谷周期值
	// contains filtered or unexported fields
}

func (*PeakValleySelector) DataFillter

func (pvs *PeakValleySelector) DataFillter(input Tsds, inflectionIncrement float64, negativeAsZero int)

*********************************************************** 功能:数据筛选 输入:

	input []TimeSeriesData:输入的数据结构
    inflectionIncrement float64:拐点增量
	negativeAsZero int64:如果为0,保留负数;如果为1,将负数作为0处理

输出:无 时间:2020年2月14日 编辑:wang_jp ***********************************************************

func (*PeakValleySelector) New

func (pvs *PeakValleySelector) New(stdv float64, cp int)

*********************************************************** 功能:新建峰谷数据选择器 输入:

	stdv float64:稳态判据值
    cp int:连续稳定的数据点数

输出:无 时间:2020年2月14日 编辑:wang_jp ***********************************************************

type StatisticData

type StatisticData struct {
	Min         float64            //最小值(基本)
	Max         float64            //最大值(基本)
	Range       float64            //数据范围(Max-Min)(基本)
	Total       float64            //表示统计时间段内的累计值,结果的单位为标签点的工程单位(面积,值*时间(s))(基本)
	Sum         float64            //统计时间段内的算术累积值(值相加)(基本)
	Mean        float64            //统计时间段内的算术平均值(Mean = Sum/PointCnt)(基本)
	PowerAvg    float64            //统计时间段内的加权平均值,对BOOL量而言是ON率(Total/Duration)(基本)
	Diff        float64            //统计时间段内的差值(最后一个值减去第一个值)(基本)
	PlusDiff    float64            //正差值,用于累计值求差,可以削除清零对值的影响(统计周期内只可以有一次清零动作)
	Duration    int64              //统计时间段内的秒数(EndTime - BeginTime)(基本)
	PointCnt    int                //统计时间段内的数据点数(基本)
	RisingCnt   int                //统计时间段内数据上升的次数(基本)
	FallingCnt  int                //统计时间段内数据下降的次数(基本)
	LtzCnt      int                //小于0的次数
	GtzCnt      int                //大于0的次数
	EzCnt       int                //等于0的次数
	OutliersCnt int                //离群异常点数(小于Lower和大于Upper的点数)
	Lower       float64            //箱型图(盒须图)下边界,lower: Q1 - 1.5 * Qd
	Q1          float64            //下四分位
	Q3          float64            //上四分位
	Qd          float64            //四分位差,亦写为IQR
	Upper       float64            //箱型图(盒须图)上边界,upper: Q3 + 1.5 * Qd
	BeginTime   string             //开始时间(基本)
	EndTime     string             //结束时间(基本)
	SD          float64            //总体标准偏差(高级)
	STDDEV      float64            //样本标准偏差(高级)
	SE          float64            //标准误差(SE = STDDEV / PointCnt)(高级)
	Ske         float64            //偏度(高级)
	Kur         float64            //峰度(高级)
	Mode        float64            //众数(高级)
	Median      float64            //中位数(高级)
	GroupDist   float64            //组距GroupDistance(高级),DataGroup中两组数之间的距离
	DataGroup   map[string]float64 //数据分布组(高级),绘制出图形后是近似正态分布的草帽图
	Increment   map[string]float64 //相邻量数之间的增量,string是时间(基本)
	RawData     []TimeSeriesDataS  //原始数据
}

type TimeSeriesData

type TimeSeriesData struct {
	Time  time.Time //时间
	Value float64   //数值
}

type TimeSeriesDataI

type TimeSeriesDataI struct {
	Time  int64   //时间,Unix毫秒数
	Value float64 //数值
}

type TimeSeriesDataS

type TimeSeriesDataS struct {
	Time  string  //时间
	Value float64 //数值
}

type Tsds

type Tsds []TimeSeriesData

时间序列数据数组

func ParseFromTimeValueMap

func ParseFromTimeValueMap(tvm map[string]float64) (Tsds, error)

*********************************************************** 功能:将时间、数值键值对类型的时间序列数据转换为时序数据 输入:tvm map[string]float64:key为时间字符串,value为浮点型数值 输出:error:错误信息 说明: 时间:2020年8月26日 编辑:wang_jp ***********************************************************

func Tsdi2Tsdt

func Tsdi2Tsdt(tsdi []TimeSeriesDataI) Tsds

*********************************************************** 功能:Unix毫秒时间格式的时序数据转换为时间类时间格式的时序数据 输入:[]TimeSeriesDataS 输出:[]TimeSeriesData,error 时间:2020年5月17日 编辑:wang_jp ***********************************************************

func Tsds2Tsdt

func Tsds2Tsdt(tsds []TimeSeriesDataS) (Tsds, error)

*********************************************************** 功能:字符串时间格式的时序数据转换为时间类时间格式的时序数据 输入:[]TimeSeriesDataS 输出:[]TimeSeriesData,error 时间:2020年5月17日 编辑:wang_jp ***********************************************************

func (Tsds) ButterFilter

func (tsds Tsds) ButterFilter(N int, Wn interface{}, btype string, fs ...float64) error

*********************************************************** 功能: 对数据进行Butterworth滤波 输入: N int: 滤波阶数

  Wn float/[2]float:自然频率数组,也称归一化的截止频率,与fs具有相同的单位
	fcf=截止频率*2/采样频率;
	如果是低通,高通滤波,fcf只有一个元素,范围:0.0-1.0
	如果是带通,带阻滤波,fcf数组有两个元素,分别是滤波带的起始频率和阶数频率,范围:0.0-fs/2.0
  btype string:滤波类型,字符串;lp:表示低通;hp:表示高通;bp:表示带通;bs:表示带阻;
  fs float64:数字系统的采样频率,可选。
	默认情况下,fs是2.0,表示每个周期采样2次

输出: 错误信息 说明: 编辑: wangjp 时间: 2020年10月22日 ***********************************************************

func (Tsds) Copy

func (tsds Tsds) Copy() Tsds

*********************************************************** 功能: 复制一个相同的数组 输入: 无 输出: Tsds数组 说明: 编辑: wangjp 时间: 2020年10月14日 ***********************************************************

func (Tsds) FillOutliersByExtremum

func (tsds Tsds) FillOutliersByExtremum()

*********************************************************** 功能:用四分位Lower或者Upper填充离群点 输入:无 输出:无 说明:超出Lower和Upper范围的数为离群点 时间:2020年8月26日 编辑:wang_jp ***********************************************************

func (Tsds) FillOutliersByMidean

func (tsds Tsds) FillOutliersByMidean()

*********************************************************** 功能:用中位数填充离群点 输入:无 输出:无 说明:超出Lower和Upper范围的数为离群点 时间:2020年8月26日 编辑:wang_jp ***********************************************************

func (Tsds) GetDataArray

func (tsds Tsds) GetDataArray() numgo.Array

*********************************************************** 功能:获取时间序列数组中的数值 输入:无 输出:numgo.Array 时间:2020年8月26日 编辑:wang_jp ***********************************************************

func (Tsds) MoveWindowFilter

func (tsds Tsds) MoveWindowFilter(n int, fillvlue ...string)

*********************************************************** 功能: 移动窗口滤波 输入: n:int,滤波窗口长度,1<n<len(data)

fillvalue:string, 填充值方法{"mean","median","mode"},省略时为"mean"

输出: 说明: n<=1或者n>len(tsds)时,不进行滤波,直接返回原数据

"median"时,n必须大于2,否则用"mean"方法

编辑: wangjp 时间: 2020年10月14日 ***********************************************************

func (Tsds) PutArray2Data

func (tsds Tsds) PutArray2Data(arr numgo.Array) error

*********************************************************** 功能:将数组传回时序数据 输入:numgo.Array 输出: 时间:2020年10月22日 编辑:wang_jp ***********************************************************

func (Tsds) Quartiles

func (tsds Tsds) Quartiles(group ...int) (Lower, Q1, Q2, Q3, Upper, IQR float64)

*********************************************************** 功能:获取四分位数(quartiles) 输入:[group ...int] 可选的分组数,不选时采用数组长度自然分组 输出:

Lower:箱型图最小值,lower=Q1-1.5*Qd
Q1:下四分位值
Q2:等于Median
Q3:上四分位值
Upper:箱型图的最大值,upper=Q3+1.5*Qd
IQR:四分位差,IQR=Q3-Q1,亦写为Qd

说明: 编辑:wang_jp 时间:2020年8月26日 ***********************************************************

func (Tsds) ReplaceLowValue

func (tsds Tsds) ReplaceLowValue(lowlimit, newvalue float64)

*********************************************************** 功能: 替换低于给定值的数据 输入: lowlimit:float64:底限值,小于等于该值的数据都将被替换

newvalue:float64:替换超限值的新值

输出: 说明: 编辑: wangjp 时间: 2020年10月14日 ***********************************************************

func (Tsds) SortByTime

func (tsds Tsds) SortByTime(desc ...bool)

*********************************************************** 功能:对时序数据按时间排序 输入:[desc] 顺序,false:从小到大(默认),true:从大到小 输出:无 时间:2020年8月26日 编辑:wang_jp ***********************************************************

func (Tsds) Statistics

func (tsds Tsds) Statistics(cfg int, group ...int) StatisticData

*********************************************************** 功能:对时序数据统计计算 输入:data []TimeSeriesData:历史数据数组

cfg int:0=仅基础统计,1=需要高级统计,2=需要原始数据
group int:高级计算时的分组数量,默认0=100

返回:统计计算结果 编辑:wang_jp 时间:2019年12月7日 ***********************************************************

func (Tsds) ToTimeSeriesDataS

func (tsds Tsds) ToTimeSeriesDataS() []TimeSeriesDataS

*********************************************************** 功能:将时间序列数据中的时间值转换为字符串格式 输入:无 输出:[]TimeSeriesDataS 说明: 时间:2020年8月26日 编辑:wang_jp ***********************************************************

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL