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“患肺癌与吸烟有关系”的反面.)
        第二步 计算独立性检验的标准,即统计量K2=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.SparkContext
import org.apache.spark.mllib.linalg._
import org.apache.spark.mllib.regression.LabeledPoint
import 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.KernelDensity
import org.apache.spark.rdd.RDD val data: RDD[Double] = ... // an RDD of sample data val kd = new KernelDensity()
.setSample(data)
.setBandwidth(3.0)
val densities = kd.estimate(Array(-1.0, 2.0, 5.0))

  

Spark MLib 基本统计汇总 2的更多相关文章

  1. Spark MLib 基本统计汇总 1

    1.  概括统计 summary statistics MLlib支持RDD[Vector]列式的概括统计,它通过调用 Statistics 的 colStats方法实现. colStats返回一个  ...

  2. Spark MLib完整基础入门教程

    Spark MLib 在Spark下进行机器学习,必然无法离开其提供的MLlib框架,所以接下来我们将以本框架为基础进行实际的讲解.首先我们需要了解其中最基本的结构类型,即转换器.估计器.评估器和流水 ...

  3. Spark MLib:梯度下降算法实现

    声明:本文参考< 大数据:Spark mlib(三) GradientDescent梯度下降算法之Spark实现> 1. 什么是梯度下降? 梯度下降法(英语:Gradient descen ...

  4. Spark mlib的本地向量

    Spark mlib的本地向量有两种: DenseVctor :稠密向量 其创建方式 Vector.dense(数据) SparseVector :稀疏向量 其创建方式有两种: 方法一:Vector. ...

  5. 利用Oracle内置分析函数进行高效统计汇总

      分析函数是Oracle从8.1.6开始引入的一个新的概念,为我们分析数据提供了一种简单高效的处理方式.在分析函数出现以前,我们必须使用自联查询,子查询或者内联视图,甚至复杂的存储过程实现的语句,现 ...

  6. spark 省份次数统计实例

    //统计access.log文件里面IP地址对应的省份,并把结果存入到mysql package access1 import java.sql.DriverManager import org.ap ...

  7. sql简单实用的统计汇总案例参考

    USE [PM]GO/****** 对象:  StoredProcedure [dbo].[LfangSatstics]    脚本日期: 08/24/2013 10:57:48 ******/SET ...

  8. Spark笔记——技术点汇总

    目录 概况 手工搭建集群 引言 安装Scala 配置文件 启动与测试 应用部署 部署架构 应用程序部署 核心原理 RDD概念 RDD核心组成 RDD依赖关系 DAG图 RDD故障恢复机制 Standa ...

  9. Spark Streaming 002 统计单词的例子

    1.准备 事先在hdfs上创建两个目录: 保存上传数据的目录:hdfs://alamps:9000/library/SparkStreaming/data checkpoint的目录:hdfs://a ...

随机推荐

  1. linux 防火墙开启80端口永久保存

    经常使用CentOS的朋友,可能会遇到和我一样的问题.开启了防火墙导致80端口无法访问,刚开始学习centos的朋友可以参考下.经常使用CentOS的朋友,可能会遇到和我一样的问题.最近在Linux ...

  2. 关于在线预览word,excel,ppt,pdf的需求处理方法。

    参考文档:http://www.cnblogs.com/wolf-sun/p/3574278.html 我选用的方案:先用office com组件生成pdf,然后使用pdf.js在线预览pdf文档.在 ...

  3. web—第三章XHTML

     web—第三章XHTML 又是一周 我们学的了做表单:一开始我以为表单是表格.但结果:表单是以采集和提交用户输入数据的,这样讲很迷,说简单点就是登陆端.比如:Facebook.twitter.Ins ...

  4. velocity模板引擎学习(4)-在standalone的java application中使用velocity及velocity-tools

    通常velocity是配合spring mvc之类的框架在web中使用,但velocity本身其实对运行环境没有过多的限制,在单独的java application中也可以独立使用,下面演示了利用ve ...

  5. ssh 免密码设置失败原因总结

    先复习一下设置ssh免密码操作的步骤: 进入主目录 cd 生成公钥 ssh-keygen -t rsa -P '' (注:最后是二个单引号,表示不设置密码) 然后分发公钥到目标机器 ssh-copy- ...

  6. [MetaHook] GameUI hook

    Hook GameUI function. #include <metahook.h> #include <IGameUI.h> IGameUI *g_pGameUI = ; ...

  7. ul、li实现横向导航按钮

    好久没写博客了,主要是懒得呼气都不想呼,上周分给我一个新的任务,就是自己新建一个系统,快速极限开发,虽然之前自己也做过小的系统,但毕竟是自己做,随着自己的心意做,没有做其他的限制等,现在呢是给公司做, ...

  8. 项目分享一:在项目中使用 IScroll 所碰到的那些坑

    最近做了个 WEB APP 项目,用到了大名鼎鼎的 IScroll,滚动的效果的确很赞,但是坑也是特别多,下面总结一下,希望自后来者有帮助. 该项目现已开源在 github 上,https://git ...

  9. NLog日志管理工具

    Nlog是一个很不错的.NET日志记录组件,它可以将日志输出到控件台,保存到文本,也可以很方便的记录到数据库中,或者发送Emial到指定账户. 可以在官网 这里下载Nlog:http://nlog-p ...

  10. js的Object和Function

    自己闲的没事干,自己想通过js的了解写一个Function和Object之间的关系,可以肯定的是我写错了,但是希望可以有所启发. Function和Object Function.__proto__ ...