Spark maven 编译问题(国内)

用MAVEN编译spark的时候,maven需要解决依赖,会下载大量的jar包到本地的repo。twitter是比较知名的用scala的公司,所以用scala写的spark有很多twitter贡献的jar。但是由于twitter是GFW重点墙的一个公司,所以我们用maven编译spark的时候会出现下载jars失败,最好的解决方法是手动把下载不下来的jar给手动加进mvn里面。

在spark-1.6.0中,缺少的两个包是akka-zeromq_2.10-2.3.11.jar和datanucleus-core-3.2.10.jar,它们是放在了twitter上的,所以被墙了。

手动加载方法如下:

mvn install:install-file -Dfile=akka-zeromq_2.10-2.3.11.jar -DgroupId=com.typesafe.akka -DartifactId=akka-zeromq_2.10 -Dversion=2.3.11 -Dpackaging=jar

mvn install:install-file -Dfile=datanucleus-core-3.2.10.jar -DgroupId=org.datanucleus -DartifactId=datanucleus-core -Dversion=3.2.10 -Dpackaging=jar

我所认识的香港

近日,陆港之间似乎发生了战争一样,虽然是网络上的口诛笔伐,但也确实是触目惊心。后来,一些滋事者的身份陆续被曝光,这场闹剧也终被看清。一个来自澳门的中学生,大义凛然地代表香港去执行自己认为的“暴力正义”, 也真的算是“中二癌”末期了。闹剧归闹剧,但是香港的形象也在顷刻间倒塌了。我在香港生活过一段日子,得益于我的广东人身份,在香港交流没有语言上的障碍,和不少香港本地人有过交流。其实香港并非如视频中展现的那般可恶,更多的是在艰辛中一种珍贵的可爱。

我曾在沙田住过一段日子,那里应该算是新界最繁荣的地方。当时我租住的是屋邨旁边的小区,屋邨,即是香港人口中所说的公屋,亦是香港中低收入水平家庭聚集的地方。我甚少做饭(其实是不会),便经常在外吃快餐。所幸的是屋邨之下,遍地是茶餐厅。最初的一两次,并没有发现那里的茶餐厅有什么奇怪的,但是多去几次便发现一个奇怪的现象--茶餐厅里坐的大部分是老人,而且大多数老人都是那种不是这里歪就是那里不方便的状态,并且,越便宜的茶餐厅越多这样的老人。这个现象,让我很是诧异,以香港全民医疗的福利水平,怎么可能有如此多的患病老人。虽说附近有一所仁爱医院,然而三街之隔对于他们来说也是一段不短的距离。多次在茶餐厅里吃饭,我终究忍不住跟他们聊上了天。他们大多住在附近的屋邨,儿子媳妇要上班,他们身体也多有不便,只好到到茶餐厅来解决吃饭问题。话夹子打开,听到我初到香港,他们也难免回想起当年初来到埗的故事。他们的故事,大多是以惨淡的经历开头。他们中大多是福建和潮汕人,有的是年轻就跟着家中长辈来港做生意,也有的在五六十年代因为饥荒而逃来香港。没有身份,人生地不熟,难免举步维艰,他们当中很多都曾因为身份问题而被迫接受最底层的工作,而且为了养家糊口,同时打三四份工也是常态。其实,看到他们身上各种变形,大概能想到他们曾是以怎样的辛酸才支撑起香港八十年代前的制造业崛起。而至八十年代大陆改革开放,香港的制造业开始往内地迁移,他们又遭遇了结构性失业(可幸的是还是有公屋)。待到说起故乡,他们又如小孩般高兴起来,一些儿时琐事,听他们娓娓道来也是极有意思。虽然已然在香港待了快半个世纪,但是他们依然是保留着不少的乡音,以致我偶尔能听得出潮汕音来(也是到现在才知晓是这个原因)。与其说是学不会,我更愿意接受他们始终心存故乡的说法,这大概就是我了解的香港老人。

 

其实,在看到新闻对于香港发生“反水客”事件的时候,其实是很诧异的:“怎么可能这样!”。后来看到那一副学生模样的示威者的时候,心里才轻松了些:“年轻人,是容易因为冲动而犯错的,不能代表香港的真正看法。那些正在努力工作的香港人,才是香港的中流砥柱,才是最有资格代表香港的人”。

 

在沙田的日子里,我不太喜欢楼下的保安女士,因为她总是一副表情冷漠的样子,说话也是有气无力的。最初住下的日子,我还以为她是因为我的大陆身份而对我有看法,每次打招呼她都是象征性地应一声,俨然如女王般冷淡。和她的第一次对话,还是因为我那个丢三落四的室友。那是冬天的清晨7点,我们都还在被窝里呼呼大睡。突然一阵敲门声响了起来,我只好爬起来应门。门一打开,看到那张冷漠的脸,我马上打了个冷颤。在我还在想发生了什么事情的时候,她慢慢地递过来一把钥匙,轻声地说:“昨晚我巡更的时候看到你们铁门没关,木门上还插着钥匙,就拔下来了。虽然小区保安不错,但是还是注意下的好。我7点下班,本来想等你们下楼的,但是我还要回去送女儿上学,嘈醒你们不好意思了哈。”说完就慢慢走了。后来才知道,在香港,月收入的中位数在12,000左右。中位数,也就是排序在最中间的数。而“看更”这个工作,是在比较低的那50%中,而且,12,000在香港,其实就是稍大一点的良方一厅的月租金。换我,或许“巡更”的时候就做不到那么细致,连门上忘了拔钥匙都注意到。因为这件事,我开始对她改观,慢慢了解之后才发现她脸上挂着的,其实并不是冷漠,而是一种长年累月下来适应了的疲惫。她一周要值班六天,每天工作十小时,回家还要照顾身体不便的公公,还有一对儿女要照顾。她就是那种屋邨里的典型儿媳,辛劳得面无表情但是始终还保持着古道热肠。

 

另一个故事,则是我与白头的士司机的对话。那时我去医院复诊,因为伤的是眼睛,无法看清公交站牌,也就只能奢侈一把打的了。刚上车,白头司机也是有点冷漠的样子,但总算是愿意讲话的。刚好那时是占中前夕,在香港已有“陆港之争”硝烟将临的气氛,车上闲聊,难免会聊到个人看法。因为大陆身份,我多少也对香港社会有些害怕。对此,白头司机倒开解起我来:“不用害怕,其实哪来那么多正宗香港人。49年前香港人口只有50万,60年顶多只到100万。现在香港700万人,哪里那么容易听到正宗香港人的声音,顶多是大陆移民的后代而已。”说完还意犹未尽地聊起自己的身世:“你是大陆人,我爸妈也是啊!我爸是福建泉州的,我妈是顺德大良的。没错,我是香港仔,香港出生长大,但是我的籍贯上写的还是福建泉州。老一代人,其实老了都是要回去的,落叶归根嘛,只是那时候政策原因,回不去了而已。对于泉州,我也回去过几次,虽然没我爸那么有感情,但是始终是故土啊。我们这一代比你们这一代其实更爱国,小时候还编过歌曲骂日本人,年轻的时候还游泳到钓鱼岛保钓!本来就是大陆人,哪里会排斥自己兄弟呢!”看着他一脸自豪的样子,倒是忽然觉得香港的中年人倒也是挺可爱的。不可否认的,在香港这个地方,大陆人跟香港人是存在竞争的,毕竟大家都是要挣钱养家的。但是这些直面竞争的中年人反而比那些靠父母供养的年轻人宽容得多。我很多大陆朋友都跟我说过香港的服务态度是值得大陆去学习的,而香港的光辉形象其实就是靠这些辛劳的人建立起来的,现在反而坏在了他们下一代的一小撮人手里。

 

"自由行”是这一次风波中的一个关键词。“自由行”催生了一个“水客-港货店”的生态圈,其实是有益于香港还是大陆,这点还是有待商榷的。按照港府的统计,其实“自由行”给香港带来的利益只占了几个点的GDP。“自由行”带来的收益,更多的是直接体现在零售业上,13年大陆人在港消费了1700亿,占了零售业的三分之一,但是同时也提高了核心商业区的租金,很多百年老铺也被逼搬迁。这样的情况,说香港人处在一个夹缝中的说法其实是不过分的。在我住红磡的时候,楼下有个小中医馆,馆主姓陈。他在90年前是广州骨科医院的主治医师,后来先是移民到澳洲十多年,再是希望自己儿女能多接受华文教育又于09年移民回香港。对于“自由行”的影响,以及香港新移民的苦,他了解的最是清楚:“近年来,香港的经济其实是不太乐观的,很多行业都不敢请人,工资也提不上去。公司缩减了人手,工作还是那么多,就只好加班囖。经济下行,物价也就应该下降。但是‘自由行’一来,基础物资的市场又有了,降不下来就相当于又增加了压力。英国殖民政府的时候,有条限制房地产的政策说是每年升租不能超过10%。香港回归之后,竟然把这个政策废除了,我这里的小医馆,又不在商业区内,竟然连续几年升租50%。也是没有办法,只好多加班囖。”但是有些事情,不是个简单的加班就可以解决的,大环境上的经济下行,让本来就艰难的新移民的生活更为艰难。

 

这些,是我所了解的香港人中低收入阶层辛酸的一个缩影。在暴力“反水客”的事件发生之后,我很多的朋友都告诉我说以后不去香港了。我很想说的是,那不是真正的香港。我所认识的香港,有种大家都在很艰苦的境况下还很努力地保持微笑的可爱。

我的母亲

前一阵子,二姐因为儿子学习成绩不好把家里闹得沸沸扬扬,一时责怪二姐夫和外甥 “懒得灭绝人性”, 一时把责任推托到我跟大姐身上:“我文化水平低,不会辅导小孩,你们是家里最有文化的人,你们要帮我啊!” 对此,我跟大姐的意见相当统一:“只要做好了母亲的本分,即使成绩不好,照样成才!” 能说这样的话,底气来自我的母亲,只有小学文化的农村妇人。

老妈今年67,属猪。我属蛇,今年25,晚生子,广东话俗语“落尾春”。体质不好,早衰,身体素质,样貌,智力都比不上我哥,但是我仍然骄傲于“落尾春”这个身份,因为我有一个勇敢的老妈。晚生子,其实在小孩的时候肯定是要被同学们嘲笑的,同学们的妈妈一个比一个年轻漂亮,而老妈却比他们的奶奶辈也年轻不了几岁。所以从幼儿园能记清楚回家的路开始,我便不愿意老妈来接我,最夸张的一次是回家中途跑到姐姐单位,为的就是不和老妈一块回家。说来可笑,小时候犯的错,总是会在长大后不经意中发现,然后追悔莫及。中学的时候去看表姐,那时候她怀胎六月,刚刚出院回家。39岁,高龄产妇,强烈的妊娠反应让她连饭都吃不下,脸色总是铁青铁青的,看着让人心痛。心头一转,老妈当时的年龄比表姐还要大上几年,而且条件差多了(那个时候超生是需要东躲西藏的)。看着表姐痛苦的样子,我甚至不敢想像老妈当时的痛苦。从那个时候开始,才真正了解其实“落尾春”比其它人更有资格说自己是命运的宠儿,因为他们有个坚韧的母亲。

继续阅读 »

Linux Mint 搭建Hadoop 2.3.0 单机伪分布模式开发环境

最近在大量写MR程序进行数据抽取,但是总是在用公司的服务器实验自己的小程序好像有点不太好,加上最近在HK用325HKD购进了一套台式电脑,所以尝试用它搭建一个开发环境作为自己学习以及测试使用。机器是老机器,32bit,只是拿来玩玩,本来只想买个monitor,75HKD,但是在测试monitor的时候发现,这个老台式竟然带独显,考虑到最近也想搞GPU编程,所以顺带买下来了,一套325HKD算是值得了。回到正题,linux 版本是32bit linux mint 16, Hadoop 版本是 2.3.0, yarn 2.0。

-----------------------------------------------

Linux mint 的安装忽略,可以VM一个,也可以装进hard disk,自行搞定。

-----------------------------------------------

  添加 hadoop 用户组和用户

考虑到大部分公司里的hadoop集群都是专门把hadoop相关的应用分给特定用户组操作的,而且我这台实验机还需要跑R,以及CUDA之类的应用的,所以还是专门分一个hadoop用户组,当然,为了简化,用户名也设置为hadoop:

  • 首先是创建 hadoop 用户组,Terminal 中输入
     sudo addgroup hadoop
  • 创建 hadoop 用户, Terminal 中输入:
     sudo adduser -ingroup hadoop hadoop 

    创建过程中会要求给 hadoop 用户创建密码,建议还是创建一个,其余信息可以智杰回车使用 default,后面会设置 ssh 用 rsa 登录,启动 hadoop 时无需密码,要嫌密码麻烦可以设置默认登录 hadoop 用户。

  • 给 hadoop 用户添加权限,为了简便可以直接在 /etc/sudoer 中添加,也可以设置得复杂点,麻烦点会带来更高的安全度,但是对于我来说,实验机器就能懒就懒吧,Terminal 中打开:
     sudo vim /etc/sudoers 

    在"root ALL=(ALL:ALL)" 这行下面加上:

     hadoop ALL=(ALL:ALL) ALL 

    要是vim使用不习惯可以使用gedit,相对简单,加上上面的代码保存就可以了:

     sudo gedit /etc/sudoers 

    设置完成后注销,切换到 hadoop 用户安装 ssh 以及安装 hadoop

----------------------------------------------- 继续阅读 »

如何搭建个人WordPress博客

最近完成了人生的一个目标,也算是完成了研究生阶段的主要任务了。想想曾经答应过朋友要写一遍关于如何建一个wordpress网站,就重新看了一下自己久不更新的网站。想到自己实在是太懒了,所以今天决定为自己的网站改改版,顺带写一遍《如何建立个人WordPress博客》。

本文适合小菜鸟阅读,会LAMP技术的盆友们可以绕道。这篇小文章属于《build a wordpress blog in dummy way》101,为了节省时间,我引用了一些人写的post。

建立个人博客,我们会需要两个东西:

  • 个人服务器
  • 域名

如果是建立大型的网站,人们会选择自己买服务器,但是建个人博客,租一个就可以了,这个博客用的服务器就是租来的,并且因为这只是个很小的网站,根本不需要太好的服务器,所以和别人共用一个服务器。现在能提供服务器租赁的公司很多,而且还顺带提供域名服务,例如 host2ez.com。我所有建博的费用是一年155RMB,100RMB租服务器,55RMB买域名。

在买了域名和服务器之后,第一件事情就是去绑定A记录以及MX记录,基本每个服务商都会有详细的文档告诉你如果做。host2ez参看这里,然后这里。绑好了A记录以后要一到两天才能生效,不要着急。

A记录生效了之后,就如同家门上装好了门牌地址,可以方便地登录自己的网站。在这里补充一下小知识,大网站用的是技术是LAMP,linux+Apache+Mysql+PHP/Python, 服务器商们为了方便顾客使用,已经是对服务器做好设置搭好环境的,也就是到现在你就已经完成了前面两项半. 剩下的一项半由WordPress来完成。

如何上传以及设置可以看这里。上面说得很仔细,可以建立第一个博客。

建完第一个博客,你大概会注意到 public_html 这个文件夹,并且会想问“为什么要放到这个文件夹?”。其实带 public 字眼的文件夹有两个,public_html 和 public_ftp. 其中 ftp 是文件传输协议,如果你把文件放到public_ftp文件夹里,人们就可以通过访问你的ftp去下载。同理,html是超文本标记语言,你把网页的文件放到 public_html 内,访客的浏览器会通过html的解析把文件专成你现在看到的网页。而把wordpress的文件放到 public_html 中,也是因为这个原因。

考虑到现在很流行写双语博客,至少是有一些人会有需要的,例如我,日常生活用中文,但是上课和做研究的时候都用的英文。我的英文blog是 en.dontan.org, 跟中文博客 www.dontan.org只是前缀的差别。在从属关系上,en.dontan.org是www.dontan.org的子域。wordpress 可以建立多站点,但是相对新手来说比较麻烦,这里介绍一种简单的方法。

首先在 public_html 文件夹内建一个 en 文件夹,然后到 cPanel 的 域 (domian)里面建立一个子域(subdomian), 指向前面建的 en 文件夹,然后在重复一次建wordpress blog的流程,不过要把解压出来的文件放到 en 文件夹内。

Linux Mint下的一些软件

最近从 Fedora 叛逃到了 Linux Mint 的怀里。玩了一个月多发现了 Linux Mint 还不错,当年没有听从挺进的意见去折腾一下还真是不应该。

下面是一些在Linux下常用的程序的记录,大部分能直接在apt-get中一键装好的东西就不累赘了:

  1. 星际译王:
    1.  安装:sudo apt-get install stardict
    2. 下载词典:可以Google 也可以看看这里:http://abloz.com/huzheng/stardict-dic/
    3. 在终端上:sudo tar -xjvf name -C /usr/share/stardict/dic
    4. 到这里就OK了~作为字典,stardict是很厉害的,我这里默认配置了Espeak TTS发音。更多需求可以查看:                                                                      http://wiki.ubuntu.com.cn/index.php?title=Stardict&variant=zh-hans
  2. 输入法fcitx:
    1. 安装:sudo apt-get install im-switch libapt-pkg-perl fcitx fcitx-table-wbpy
    2. 设置fcitx为默认输入法: im-switch -s fcitx
    3. 注销并重新登录就可以了,小企鹅还是很不错的,但是输入分段还是没有sougou好(可能我自己没有找到而已),举例如输入“企鹅”,只能打到个“qie”。
    4. 原文出自:http://www.pocketdigi.com/20120109/598.html
    5. 其实可以考虑扩展到使用sougou的词库,                                                                        看看:http://www.mintos.org/utility/fcitx-sougou.html
  3. 局域网中多设备共享键盘和鼠标Synergy:
    1. 下载Synergy: http://synergy-foss.org/?hl=zh
    2. 配置server以及client:
      1. server是共享键盘,鼠标的机器,server的东西不需要太多设置,设置好连过来的client的名字以及左右屏就可以了。
      2. client的设置也是很方便, 只需要输入server的IP就可以了。
      3. 当然还可以加密共享,有可选的几种,但是不喜欢就选disable encryption就可以了。
    3. 当然,剪贴版也是共享的。

Hotelling-Williams T-test (2)

I finished the reference reading of last post -- Hotelling-Williams T-test(1) last week. The reference is damn difficult to read. My curiosity gave me a great energy, or I will never finish the reading. However, I still felt disappointed after finishing the reference. Statistics is applied wildly, but I don't think the reason is precision but its imprecision. Some part of its theorem is not precise enough, in mathematical manner, a empirical subject.这段时间抽取了上篇论文 Hotelling-Williams T-test(1)里面的一些reference来看,难度不少,但是再全部看完之后却大失所望了。在这次reference reading之后, 我感觉统计学其实尺度挺大的,有些东西没有非常严格的数学证明也可以使用得很广泛,只要它能做出有用的判断,果然是一个“经验学科”。

第一篇东东是[1][Steiger] Steiger, J.H. (1980), Tests for comparing elements of a correlation matrix。这篇东西是心理学领域的文章,主要的工作是把当时对比样本间相关度的统计方法都介绍了一遍,并且对一些心理学家的错误进行纠正。当然,如果是内容不够好的话估计也难以发出来,文章还对这些统计方法从劣到优的次序进行了一次介绍分析,并且最终给出一些基于实验结果的建议,在于我工作里的那种情况来说,Hotelling-Williams T-test 是最优选择。

当然我看完第一篇东东的时候,我觉得介绍Williams改进Hotelling的T-test时所写的文章是非常厉害的,但是结果是非常地失望。文章是1954年写的,我能接受当年印刷能力的有限,但是却不能接受Williams 同学写文章时候的一些坏习惯,对很多东西都没有进行定义就直接开始用,很难找到他表示的东西。他通过回归来推导除Hotelling-Williams T-test的结果,这个结论还算可以,但是过程实在是让我为我的智商抓鸡了一把。看到这里的时候觉得心情还挺好,但是最后面的分析实在是让人的心崩溃了一地。他在做数学证明的时候证明了Hotelling-Williams T-test的结果实际上是有bias的,用一个有bias的检验并不算太好。然后又开始尝试验证另外一种检验的无偏性,结果最后证明说那个检验的偏差更厉害,还是Hotelling-Williams T-test比较好用,就这么用着吧。这个确实有点让人接受不了。

不过最后想想,或许是因为数学太精确太严谨,所以并不是太适用于存在一定chaos的现实世界,所以要求不那么严格的统计学才在这个世界上那么好用。难怪别人说,统计学,可以当哲学来用。

Moment Generating Function and Probability Generating Function

Moment Generating Function(mgf) and Probability Generating Function(pgf) are useful techniques in Probability Theorem. As Loss Model studies a lot about probability, mgf and pgf are necessary techniques. So I post some stuffs about them.

The definition of Moment Generating Function(Univariate Case) is

M_{X}(t) = E[e^{tX}] = \int_{-\infty}^{\infty}e^{tx}f(x)\mathrm{d}x

More generally, if X=(X_{1}, X_{2}, \dots, X_{n})^{T}, we use t^{T}X instead of tX:

M_{X}(t) = E[e^{t^{T}X}]

The definition of mgf seems it will be complicated, but why defining it like that? According to Wikipedia, defining that way can be used to find all the moments of the distribution. Employing Taylor's Series to expand e^{tx}, we have that

e^{tX} = 1 + tX + \frac{t^{2}X^{2}}{2!} + \frac{t^{3}X^{3}}{3!}+\cdots+\frac{t^{n}X^{n}}{n!}+\cdots

Such that

M_{X}(t) = 1 + tE[X]+ \frac{t^{2}E[X^{2}]}{2!} + \frac{t^{3}E[X^{3}]}{3!} + \cdots + \frac{t^{n}E[X^{n}]}{n!}+\cdots

It is straightforward to differentiate M_{X}(t) n times with respect to t and setting t =0 to get E[X^{n}].

And if X_{1}, X_{2}, \dots, X_{n} is sequence of independent random variables, and S_{n} = \sum\limits_{i=1}^{n}a_{i}X_{i}. The mgf of S_{n} is

M_{S_{n}}(t) = M_{X_{1}}(a_{1}t)M_{X_{2}}(a_{2}t)\cdots M_{X_{n}}(a_{n}t)

It is notable to remind that some distributions have no mgf because in some case \lim\limits_{n\rightarrow\infty}\sum\limits_{i=0}^{n}\frac{t^{i}E[X^{i}]}{i!} is not exist. For example, lognormal distribution.

For pgf , the definition is here:

G(z) = E[z^{X}]

. If we do a little bit transformation, we could drive our car to mgf:

G(e^{t}) = E[e^{tX}] = M_{X}(t)

When I reading the instruction of pgf on Wikipeida, it sounds like pgf is more appropriate for discrete random variable, but I don't have any evidence.

For Univariate case, a more detailed pgf definition is here:

G(z) = E(z^{X}) = \sum\limits_{x=0}^{\infty}p(x)z^{x}

And for Multivariate case, the definition is here:

G(z) = G(z_{1},\dots,z_{d}) = E(z_{1}^{X_{1}}\cdots z_{d}^{X_{d}}) = \sum\limits_{x_{1},\dots,x_{d}=0}^{\infty}p(x_{1},\dots,x_{d})z_{1}^{X_{1}}\cdots z_{d}^{X_{d}}

From its definition, it is obviously a power series, which guarantees that |z|\leq 1 will make the power series converged. If we setting z = 1^{-}, we could get that

E(\frac{X!}{(X-k)!}) = G^{k}(1^{-}),\ k \geq 0

And if X_{1}, X_{2}, \dots, X_{n} is sequence of independent random variables, and S_{n} = \sum\limits_{i=1}^{n}a_{i}X_{i}. The pgf of S_{n} is

G_{S_{n}}(z) = G_{X_{1}}(z)G_{X_{2}}(z)\cdots G_{X_{n}}(z)

And particularly, if S = X_{1}-X_{2}, we have

G_{S}(z) = G_{X_{1}}(z)G_{X_{2}}(1/z)

Note: All the materials of this post comes from wikipedia.org, you could check it out if you want something more detailed.

Hotelling-Williams T-test (1)

Recently, I am trying to compare the performance of two measures. It turns out a problem of comparing two correlation coefficients \rho_{12} and \rho_{13}, where the subscript 1 is denoting the observation group, 2 and 3 is denoting the measures. To be honest, I don't have any idea at the very beginning. Many thanks to my supvisor Dr. Dennis Cheung, he sent me a PPT about correlation coefficients, which Hotelling-Williams T test [Steiger] is also included.

The formula of Hotelling-Williams T test is here:

t_{(N-3)} = (r_{12}-r_{13})\sqrt{\frac{(N-1)(1+r_{23})}{2(N-1)|R|/(N-3)+\bar{r}^{2}(1-r_{23})^{2}}}

  • N = Number of Observation
  • r_{12} = sample correlation between Observation and measure 2
  • r_{13} = sample correlation between Observation and measure 3
  • r_{23} = sample correlation between measures
  • |R| = 1 - r_{12}^2 - r_{13}^2 - r_{23}^2 + 2(r_{12})(r_{13})(r_{23})
  • \bar{r} = (r_{12} + r_{13})/2
  • \rho means population correlation and r is denoting sample correlation

Hotelling-Williams T Test performs well in my hypothesis testing. It proofs that there is a significant difference between two measures, which explained the phenomenons I have observed. It is linear in my case, but I doubt that whether Hotelling-Williams T test appropriate for non-linear case, like log case . I found that in [crr] blog, there is a post about solving a similar problem --the correlations between the frequency measures and word processing time. Their post is very detailed and two more similar testing techniques are also introduced. One is the Vuong Test[Vuong, 1989], this test was suggested when dealing with a nonlinear problem, for example, the word processing time and log frequency. This will require we should use non-linear regression model. Vuong was suggested for this case for it based on a comparison of the log-likelihood. Another method is developed by Clarke (2007)[Clarke], he suspected that Vuong test is considered conservative for small N. However, after conducting a simulation test conducted by the [crr] blogger, they concluded that Hotelling-Williams T test is the best one and the latter is Vuong test. The Vuong test will be suggested unless the correlation between variables is very little.

The core idea about Hotelling-Williams T test is not clear yet, I will finish that in next post.

  1. [crr]http://crr.ugent.be/archives/546
  2. [Vuong] Vuong, Q.H. (1989): Likelihood Ratio Tests for Model Selection and non-nested Hypotheses. Econometrica, 57, 307-333.
  3. [Clarke] Clarke, K.A. (2007). A Simple Distribution-Free Test for Nonnested Model Selection. Political Analysis, 15, 347-363.
  4. [Steiger] Steiger, J.H. (1980), Tests for comparing elements of a correlation matrix, Psychological Bulletin, 87, 245-251.

最经我需要对比两个指标与观测数据的相关度,\rho_{12}\rho_{13}的比较(下标1表示观测数据,2,3分别表示两种不同的指标)。开始的时候我完全没有任何想法,因为之前的数理统计中没有涉及过这么一个问题。感谢我的导师Dr Dennis Cheung, 他给我发了一份关于相关系数的PPT,上面有Hotelling-Williams T 检验[Steiger]。

Hotelling-Williams T 检验的公式如下:

t_{(N-3)} = (r_{12}-r_{13})\sqrt{\frac{(N-1)(1+r_{23})}{2(N-1)|R|/(N-3)+\bar{r}^{2}(1-r_{23})^{2}}}

  • r_{12} = correlation between Observation and measure 2
  • r_{13} = correlation between Observation and measure 3
  • r_{23} = correlation between measures
  • N = Number of Observation
  • |R| = 1 - r_{12}^2 - r_{13}^2 - r_{23}^2 + 2(r_{12})(r_{13})(r_{23})
  • \bar{r} = (r_{12} + r_{13})/2

从结果上来看,Hotelling-Williams T test在我的数据上的结果还是挺不错的。另外我对它进行一些文献搜索的时候,发现了[crr]的博客上也有解决类似问题的文章--频数指标跟单词处理时间的问题. (英文)博客上面写得非常仔细而且还额外地介绍了两个检验方法。有一个是Vuong检验[Vuong,1989], 它主要是用在一些例如log 频数指标与单词处理时间之类的非线性情况下的建模. 它的一个特出的优点是它的原理基础是基于log-likelihood的。另外一种检验方法是Clarke(2007)[Clarke]检验,他提出这个方法是基于对Vuong检验在样本量小时的保守性的怀疑。但是在[crr]作者的一系列的模拟实验之后,他们建议优先使用Hotelling-Williams T 检验,其次是Vuong检验。并且在变量间的相关度很低的时候是用Vuong检验。

当然,Hotelling-Williams T检验的核心思想我还没有来得及琢磨清楚,不过应该会在下一次的文章中写上。

  1. [crr]http://crr.ugent.be/archives/546
  2. [Vuong] Vuong, Q.H. (1989): Likelihood Ratio Tests for Model Selection and non-nested Hypotheses. Econometrica, 57, 307-333.
  3. [Clarke] Clarke, K.A. (2007). A Simple Distribution-Free Test for Nonnested Model Selection. Political Analysis, 15, 347-363.
  4. [Steiger] Steiger, J.H. (1980), Tests for comparing elements of a correlation matrix, Psychological Bulletin, 87, 245-251.