描述统计

import org.apache.commons.math3.stat.descriptive.moment._


def vLTreeDigesttest = {
val ttCnt = 10000
val myDigestOrg: AVLTreeDigest = TDigest.createAvlTreeDigest(100).asInstanceOf[AVLTreeDigest]
val orgCollection = new mutable.ArrayBuffer[Double]()
for(i <- 0 to ttCnt){
val value = i // r.nextInt(ttCnt)*r.nextInt(100)*0.01
myDigestOrg.add(value)
orgCollection += value
}


val buf: ByteBuffer = ByteBuffer.allocate(myDigestOrg.byteSize)
buf.mark
myDigestOrg.asSmallBytes(buf)
buf.reset
println(s"size: ${buf.array().size}" )
val myDigestFromOrg: AVLTreeDigest = AVLTreeDigest.fromBytes(buf)


val sampleCollcetion = new mutable.ArrayBuffer[Double]()
for(i <- 0 to 10000) sampleCollcetion += myDigestFromOrg.quantile(i/10000.0)

// max
println(s"orgCollection max : ${orgCollection.max}")
println(s"sampleCollcetion max : ${sampleCollcetion.max}")
// min
println(s"orgCollection min : ${orgCollection.min}")
println(s"sampleCollcetion min : ${sampleCollcetion.min}")

// 全距(Range)
println(s"orgCollection Range : ${orgCollection.max - orgCollection.min }")
println(s"sampleCollcetion Range : ${sampleCollcetion.max - sampleCollcetion.min}")


//avg
val orgCollectionAvg = orgCollection.reduce(_+_)/orgCollection.size
val sampleCollcetionAvg = sampleCollcetion.reduce(_+_)/sampleCollcetion.size
println(s"orgCollection avg :$orgCollectionAvg")
println(s"sampleCollcetion avg : $sampleCollcetionAvg")

//均值标准误差(Standard Error of Mean,S.E. Mean,简称标准误
println(s"S.E. Mean : ${sampleCollcetionAvg - orgCollectionAvg}")

//Variance 方差
val orgCollectionVariance = orgCollection.map(x => Math.pow((x - orgCollectionAvg),2)).reduce(_+_)
val sampleCollcetionVariance = sampleCollcetion.map(x => Math.pow((x - sampleCollcetionAvg),2)).reduce(_+_)
println(s"orgCollection Variance : $orgCollectionVariance")
println(s"sampleCollcetion Variance : $sampleCollcetionVariance")
//Standard Deviation 标准差
println(s"orgCollection Standard Deviation : ${ Math.pow((orgCollectionVariance/orgCollection.size),0.5)}")
println(s"sampleCollcetion Standard Deviation : ${ Math.pow((sampleCollcetionVariance/sampleCollcetion.size),0.5)}")


//Median 中位数
println(s"orgCollection Median : ${ orgCollection.sortWith( (a,b) => a>b )(ttCnt/2) }")
println(s"sampleCollcetion Median : ${ myDigestFromOrg.quantile(0.5)}")


// 众数(Mode) 把 Double -> Int 由于采用后 ,值有些变化 . 所以众数不准
// orgCollection Mode : (504671,1)
// sampleCollectionMode Mode : (145013,1)
val orgCollectionMode = orgCollection.map(x => (x,1)).groupBy(_._1).map(x => (x._1,x._2.size)).toArray.sortBy(_._2)
val sampleCollectionMode = sampleCollcetion.map(x => (x.toInt,1)).groupBy(_._1).map(x => (x._1,x._2.size)).toArray.sortBy(_._2)
println(s"orgCollection Mode : ${ orgCollectionMode(orgCollectionMode.length-1) }")
println(s"sampleCollectionMode Mode : ${ sampleCollectionMode(sampleCollectionMode.length-1) }")

//峰度(Kurtosis)
val kurtosis = new Kurtosis()
println(s"orgCollection Kurtosis : ${ kurtosis.evaluate(orgCollection.toArray) }")
println(s"sampleCollection Kurtosis : ${ kurtosis.evaluate(sampleCollcetion.toArray) }")

// 偏度(Skewness)
val skewness = new Skewness()
println(s"orgCollection Skewness : ${ skewness.evaluate(orgCollection.toArray) }")
println(s"sampleCollection Skewness : ${ skewness.evaluate(sampleCollcetion.toArray) }")

}


<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.6.1</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值