程序员的自我修养
Home » Apache Spark, 概率论与数理统计 » Spark 1.1.0 Basic Statistics(下)

Spark 1.1.0 Basic Statistics(下)

2条评论6,164次浏览

Hypothesis testing

Hypothesis testing,假设检验。Spark目前支持皮尔森卡方检测(Pearson’s chi-squared tests),包括适配度检定和独立性检定。

皮尔森卡方检测

皮尔森卡方检测是最著名的卡方检测方法之一,一般提到卡方检测时若无特殊说明则代表使用的是皮尔森卡方检测。皮尔森卡方检测可以用来进行适配度检测独立性检测

适配度检测

适配度检测,Goodness of Fit test,验证一组观察值的次数分配是否异于理论上的分配。\(H_0\) 假设(虚无假设,null hypothesis)为一个样本中已发生事件的次数分配会服从某个特定的理论分配。通常情况下这个特定的理论分配指的是均匀分配,目前Spark默认的是均匀分配。

独立性检测

独立性检测,independence test,验证从两个变量抽出的配对观察值组是否互相独立。其虚无假设是:两个变量呈统计独立性。

检测三个步骤

  1. 计算卡方检定的统计值“ \(\chi^2\) ”:把每一个观察值和理论值的差做平方后、除以理论值、再加总
  2. 计算 \(\chi^2\) 统计值的自由度“df”
  3. 依据研究者设定的置信水平,查出自由度为df的卡方分配临界值,比较它与第1步骤得出的 \(\chi^2\) 统计值,推论能否拒绝虚无假设

适配度检测示例

场景

将五角星的5个角分别标记为1,2,3,4,5。现在旋转若干次五角星,记录每个角指向自己的次数。

第一个的结果为(1,7,2,3,18),第二个五角星的结果为(7,8,6,7,9)。现做出虚无假设:五角星的每个角指向自己的概率是相同的。

代码示例

运行结果

计算过程

对于1.0,7.0,2.0,3.0,18.0\(E_i=6.2\)

  1. \(\chi^2=\sum_{i=1}^n{(O_i-E_i)^2\over E_i}={(1-6.2)^2+(7-6.2)^2+(2-6.2)^2+(3-6.2)^2+(18-6.2)^2\over 6.2}=31.419354839\)
  2. \(df=m-1=5-1=4\)
  3. p-value可以通过查表得到,p-value<<0.001

解读

这里有5个维度的数据,自由度为4。根据均匀分布,每个维度出现的概率应该是1/5=0.2。而根据测试数据来看,这5个值出现的次数是1,7,2,3,18,显然是不符合概率都是0.2的。在一次实验中出现这样的分布的可能性即为p-value的值(2.5138644141226737E-6 ),这在一次实验中是不可能出现了,若出现了我们则有足够的理由认为假设是不成立的。所以拒绝了虚无假设(observed follows the same distribution as expected),即测试数据不满足均匀分布(这个五角星可能由于质量分布的原因导致这样的结果)。而另一组数据(7,8,6,7,9)则更符合等概率的出现,所以接受虚无假设。

独立性检测示例

场景

抽样100个人,分别记录这100个人的性别和是否是左撇子。如下表所示:

总计
43 44 87
9 4 13
总计 52 48 100

现做出虚无假设:性别与惯用手是独立事件。

代码示例

运行结果

计算过程

其中r为行数,c为列数。

  1. \(E_{i,j}={(\sum_{n=1}^c O_{i,n})(\sum_{m=1}^r O_{m,j})\over N}\) ,如 \(E_{1,1}=(43+44)*(43+9)/100=45.24\)
  2. \(\chi^2=\sum_{i=1}^r\sum_{j=1}^c{(O_{i,j}-E_{i,j})^2\over E_{i,j}}={{(43-45.24)^2\over 45.24}+{(44-41.76)^2\over 41.76}+{(9-6.76)^2\over 6.76}+{(4-6.24)^2\over 6.24}}=1.7774150400145103\)
  3. \(df=(r-1)(c-1)=(2-1)*(2-1)=1\)
  4. p-value可以通过查表得到,0.1<p-value<0.2

解读

由于p-value>0.05,所以无法拒绝虚无假设,即无法拒绝性别变量与惯用手变量互相独立的假设。

Random data generation

Random data generation,用于随机数的生成。RandomRDDs包下现支持正态分布、泊松分布和均匀分布三种分布方式。

示例程序

均匀分布

概率密度函数

\(f(x)=\begin{equation}\begin{cases}{1\over{b-a}}, a\le x\le b\\0, other\end{cases}\end{equation}\)
800px-Uniform_Distribution_PDF_SVG.svg

累积分布函数

\(F(x)=\begin{equation}\begin{cases}{0, x\lt a}\\{{x-a}\over{b-a}}, a\le x\lt b\\1, x\ge b\end{cases}\end{equation}\)
800px-Uniform_cdf.svg

期望值

\(E(x)={{a+b}\over 2}\)

方差

\(Var(x)={(b-a)^2\over 12}\)

正态分布

概率密度函数

\(f(x)={1\over {\sigma\sqrt{2\pi}}}e^{-{(x-\mu)^2}\over{2\sigma^2}}\)
720px-Normal_Distribution_PDF.svg

累积分布函数

\(F(x)={1\over 2}(1+erf{x-\mu\over{\sigma\sqrt 2}})\)
Normal_Distribution_CDF.svg

期望值

\(E(x)={\mu}\)

方差

\(Var(x)={\sigma^2}\)

泊松分布

概率质量函數

\(P(X=k)={e^{-k}\lambda^k\over{k!}}\)
360px-Poisson_pmf.svg

累积分布函数

\(F(X=k)={\Gamma(k+1,k)\over {k!}}\)
360px-Poisson_cdf.svg

期望值

\(E(x)={\lambda}\)

方差

\(Var(x)={\lambda}\)

参考文献

(转载本站文章请注明作者和出处 程序员的自我修养 – SelfUp.cn ,请勿用于任何商业用途)
2条评论
  1. ashley说道:

    这个是MLlib跑的么 MLlib是scala写的么。。

发表评论


profile
  • 文章总数:81篇
  • 评论总数:247条
  • 分类总数:32个
  • 标签总数:45个
  • 运行时间:1250天

大家好,欢迎来到selfup.cn。

这不是一个只谈技术的博客,这里记录我成长的点点滴滴,coding、riding and everthing!

最新评论
  • Anonymous: :?: :razz: :sad:
  • Anonymous: 牛
  • Anonymous: 楼主你好,我偶尔也会 遇到Reconnect due to socket error: java.nio.channels.ClosedCha...
  • Anonymous: sdfs
  • Anonymous: :arrow: :neutral: :cry:
  • Anonymous: java.io.NotSerializableExcepti on: DStream checkpointing has been enabled but the DStreams with their...
  • wick: HI,请问一下,U,S,V得到 ,怎么得到近似矩阵 (用spark java),谢谢。
  • Michael Whitaker: Thank you for this blog, it was very helpful in troubleshooting my own issues. It seems that no...
  • Anonymous: :mad:
  • Anonymous: :???:
  • Anonymous: :mad: :mad: :mad:
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • 洋流: 哥们,我问个问题,你 把testOnborrow去掉了。。 如果得到的jedis资源...
  • Anonymous: :razz: :evil: :grin:
  • 张瑞昌: 有很多,比较常见的是 Jacob迭代法,一次迭代O (n^3),迭代次数不清楚 ...
  • Anonymous: :mrgreen:
  • lc277: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: 你好 我想问下一般删除节点 要多久,要删除的datano de大概用了1t,解除...
  • Anonymous: :smile: :grin: :eek:
  • 李雪璇: 想要完整代码,可以帮 忙发给我吗