博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark MLib 基本统计汇总 2
阅读量:7175 次
发布时间:2019-06-29

本文共 2572 字,大约阅读时间需要 8 分钟。

4. 假设检验

基础回顾:

  • 假设检验,用于判断一个结果是否在统计上是显著的、这个结果是否有机会发生。
  • 显著性检验
  • 原假设与备择假设

           常把一个要检验的假设记作 H0,称为原假设(或零假设) (null hypothesis)

           与H0对立的假设记作H1,称为备择假设(alternative hypothesis) 

  • 拟合优度Goodness of Fit,是指回归直线对观测值的拟合程度。

        对非线性方程:

         (1)计算残差平方和 Q =∑(y-y*)2 和 ∑y2 ,其中,y 代表的是实测值,y* 代表的是预测值

         (2)拟合度指标 RNew=1-(Q/∑y2)1/2

          角标new就是为了和线性回归方程的判定系数R2、adjusted R2进行区别。在对方程拟合程度的解释上,Rnew和R2、adjusted R2是等价的,其意义也相同。

       对线性方程:

          R= ∑(y预测-y)2/∑(y实际-y)2,y是平均数。

          如果R2=0.775,则说明变量y的变异中有77.5%是由变量X引起的。

          当R2=1时,表示所有的观测点全部落在回归直线上。

          当R2=0时,表示自变量与因变量无线性关系。

  • 独立性检验(属于卡方检验的一种)

        它是根据频数判断两类因子彼此相关或相互独立的假设检验。

        假设有两个分类变量X和Y,它们的值域分另为{x1, x2}和{y1, y2},其样本频数列联表为:

        

        构造统计量:

        K2越小,原假设H0成立的可能性越大;它越大,目标结论H1成立的可能性越大.)

        步骤:        

        第一步 提出假设H0:例如 患肺癌与吸烟没有关系.(目标结论H1“患肺癌与吸烟有关系”的反面.)
        第二步 计算独立性检验的标准,即统计量K
2=n(ad-bc)
2/{(a+b)(c+d)(a+c)(b+d)}的值.(
        第三步 由独立性检验的
临界值表得出结论及其可信度(即在多大程度上适用).

Mlib的假设检验:

  • spark.mllib目前支持皮尔森卡方检测。
  • 输入属性的类型决定拟合优度(goodness of fit)检测还是独立性检测。 拟合优度检测需要输入数据的类型是 vector,独立性检测需要输入数据的类型是Matrix
  • import org.apache.spark.mllib.stat.Statistics._ ; Statistics 的 chiSqTest 方法用来做检测,当输入 vector和Matrix 时不同的检验。
import org.apache.spark.SparkContextimport org.apache.spark.mllib.linalg._import org.apache.spark.mllib.regression.LabeledPointimport org.apache.spark.mllib.stat.Statistics._// 作皮尔森拟合优度检测 val vec: Vector =Vectors.dense(1.0, 2.0, 3.0)val goodnessOfFitTestResult = Statistics.chiSqTest(vec)println(goodnessOfFitTestResult) // 作皮尔森独立性检测val mat: Matrix =Matrices.dense(3,2,Array(9.0,1.0,2.0,3.0,8.0,6.0)) val independenceTestResult = Statistics.chiSqTest(mat) println(independenceTestResult)

5.  随机数生成

spark.mllib 支持生成随机的RDDRDD的独立同分布(iid)的值来自于给定的分布:均匀分布、标准正太分布、泊松分布。

例子:用标准正态分布生成一个随机的双精度RDD

import org.apache.spark.mllib.random.RandomRDDs._val u = normalRDD(sc, 1000000L, 10)    // 生成了一个10个RDD分区的百万个随机数val v = u.map(x => 1.0 + 2.0 * x)          //把标准正态分布产生的随机数map到N(1,4)的正态分布

6. 核密度估计

http://blog.163.com/zhuandi_h/blog/static/1802702882012111092743556/

核密度估计可以用来估计未知的密度函数,属于非参数检验方法。

假设我们有n个数  ,要计算某个数X的概率密度有多大, 可以通过下面的核密度估计方法估计。

       K为核密度函数,h为窗宽。

  • 原理比较简单,在我们知道某一事物的概率分布的情况下

        如果某一个数在观察中出现了,我们认为这个数的概率密度很大,和这个数近的数的概率密度也比较大;而那些离这个数远的数的概率密度会比较小。

  • 基于这种想法,针对观察中的第一个数,我们可以用 去拟合我们想象中的那个远小近大概率密度。

        对每一个观察数拟合出的多个概率密度分布函数,取平均。 如果某些数是比较重要的,则可以取加权平均

  • 核密度的估计并不是找到真正的分布函数。
  • 在 MLlib 中,仅仅支持以 高斯核(正态分布) 做核密度估计:

    

  • KernelDensity 的 estimate 方法
import org.apache.spark.mllib.stat.KernelDensityimport org.apache.spark.rdd.RDDval data: RDD[Double] = ... // an RDD of sample dataval kd = new KernelDensity()  .setSample(data)  .setBandwidth(3.0)val densities = kd.estimate(Array(-1.0, 2.0, 5.0))

  

 

posted on
2016-06-06 14:11 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/skyEva/p/5563662.html

你可能感兴趣的文章
OpenCV编程->Haar训练(1)
查看>>
Oracle_071_lesson_p10
查看>>
Oracle_052_lesson_p2
查看>>
脱壳免杀技术大纲
查看>>
Spring Cache
查看>>
Linux下Mysql常用命令
查看>>
进阶-中小型网络构建-二层VLAN技术详解配实验步骤
查看>>
LVM逻辑卷管理
查看>>
java crm 进销存 websocket即时聊天发图片文字 好友群组 SSM源码
查看>>
通俗讲解边缘计算,抓住信息革命的浪潮
查看>>
关于适配这件小事的前世今生
查看>>
用TMG搭建×××服务器(四)---基于PPTP的站点到站点×××
查看>>
datatables表头与数据无法对齐的解决方案
查看>>
Cisco 路由器 secondary address实现RIPV1不连续子网
查看>>
每天一个linux命令(14):head 命令
查看>>
通过 Apache 配置 Rewrite 支持 .htaccess
查看>>
如何从硬盘安装WIN7原版镜像?
查看>>
ceph学习笔记之六 数据读写过程
查看>>
为UC做准备:准备Exchange 2010的先决条件
查看>>
Eclipse快捷键大全(转载)
查看>>