<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Keep on Fighting! &#187; 统计计算</title>
	<atom:link href="http://yihui.name/cn/category/r-language/r-computation/feed/" rel="self" type="application/rss+xml" />
	<link>http://yihui.name/cn</link>
	<description>谢益辉</description>
	<lastBuildDate>Sat, 31 Jul 2010 03:17:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://yihui.name/cn/wp-includes/js/jquery/jquery.js?ver=1.3.2'></script>
<script type="text/javascript">
/* <![CDATA[ */
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>统计图形和模拟视角下的模型理论解析</title>
		<link>http://yihui.name/cn/2010/07/master-thesis-graphics-and-simulation-in-stat-models/</link>
		<comments>http://yihui.name/cn/2010/07/master-thesis-graphics-and-simulation-in-stat-models/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 06:30:40 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[统计图示]]></category>
		<category><![CDATA[统计学]]></category>
		<category><![CDATA[统计计算]]></category>
		<category><![CDATA[硕士毕业论文]]></category>
		<category><![CDATA[统计图形]]></category>
		<category><![CDATA[统计模型]]></category>
		<category><![CDATA[统计模拟]]></category>
		<category><![CDATA[统计理论]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=1410</guid>
		<description><![CDATA[前在群众大学给一些客官承诺过我会把我的硕士毕业论文发上来，其实早就在网上了，只不过没吱声而已，用Git同步一下容易，但写几个字介绍一下就花时间了。感兴趣的客官可以去本站作品页面内下载：http://yihui.name/cn/publication/#GSM
这论文呢，自我评价可以给个80分。最大的问题在于没有花时间去整理文章的结构，所以构架上稍微有点散乱（俗称“意识流”）。内容上熟悉我的博客的客官一眼就能看出来，其实都是些博客文章的汇总，只不过用LaTeX让它们变得“人模狗样”一些而已，好在本小子平时也积攒了这些鸡零狗碎的东西，动过自己的脑子。我觉得群众大学的毕业论文，很多都是一个套路：经济/金融数据套一个神奇的模型，直到最后整个世界一片和谐，读者在最后一章都能隐约看到上帝老爷子在朝你挥手。其实也没啥，找工作不容易，地球人也都知道写论文就是忽悠——漫漫人生路上一道工序。
由于本小子是个小人（小小的活人），所以总关心小人关心的事情（俗称“人本主义”）。这论文嘛，窃以为也没什么上下高低之分，说出你怎么想的就可以了，而不要总说“他们”怎么想怎么做。一定要有数学上的创新？一定要有人家看不懂的公式才是好论文？一定要有综述？一定要有长长的参考文献列表才是好论文？一定要板起脸？不能写八卦？不准幽默？……嗨，作茧自缚。几年前看到一篇好文章，颇具恶搞性质，建议各位客官收藏：How to write Consistently Boring Scientific Literature。
言归正传：本文是厌倦八股文和数学理论的产物，从理论角度来说，几乎没什么价值，不过这篇文章是用Sweave写的，完全具有可重复性和100%透明度，对文中结果有怀疑的客官可以自行运行代码；其次，统计模拟和图形的声音在界内太微弱，大家都很忙，有人在忙着推公式，有人在忙着编数据，有人在忙着把公式用到不知道是不是编出来的数据上，本小子跟着瞎掺和了点别的东西，仅此而已。甭管有用没用，敬请拍砖。
－－－－－－－－－－外一篇：坛霸是怎样练成的－－－－－－－－－－
曾经有童鞋称呼在下为“坛霸”，这个……有时候确实有那么点意思，无图无真相（两个多月没怎么回帖了，一鼓作气）：
接下来我会陆续写第三届中国R语言会议、《现代统计图形》书稿和useR! 2010，若时间允许，我考虑一下电视剧《九阴真经》（93版）。
爷还想看：2010/05/23 -- 通知两则：第三届R会议培训及统计人才招聘 (12)2010/05/19 -- 渐近理想国：McNemar检验的两种统计量 (0)2010/04/15 -- 知识与常识：分析大学生挂科因素？ (17)2010/04/14 -- 统计计算与数学推导及逻辑分析 (2)2007/11/13 -- Type III Error（第三类错误） (2)]]></description>
			<content:encoded><![CDATA[<a href="http://yihui.name/cn/2010/07/master-thesis-graphics-and-simulation-in-stat-models/"><span class="dropcap-none">之</span></a>前在群众大学给一些客官承诺过我会把我的<a title="http://yihui.name/cn/docs/StatGraphics/Graphics-in-Stat-Models.pdf" href="http://yihui.name/cn/docs/StatGraphics/Graphics-in-Stat-Models.pdf">硕士毕业论文</a>发上来，其实早就在网上了，只不过没吱声而已，用Git同步一下容易，但写几个字介绍一下就花时间了。感兴趣的客官可以去本站<a title="http://yihui.name/cn/publication/" href="http://yihui.name/cn/publication/" target="_blank">作品页面</a>内下载：<a title="统计图形和模拟视角下的模型理论解析" href="http://yihui.name/cn/publication/#GSM" target="_blank">http://yihui.name/cn/publication/#GSM</a></p>
<p>这论文呢，自我评价可以给个80分。最大的问题在于没有花时间去整理文章的结构，所以构架上稍微有点散乱（俗称“意识流”）。内容上熟悉我的博客的客官一眼就能看出来，其实都是些博客文章的汇总，只不过用LaTeX让它们变得“人模狗样”一些而已，好在本小子平时也积攒了这些鸡零狗碎的东西，动过自己的脑子。我觉得群众大学的毕业论文，很多都是一个套路：经济/金融数据套一个神奇的模型，直到最后整个世界一片和谐，读者在最后一章都能隐约看到上帝老爷子在朝你挥手。其实也没啥，找工作不容易，地球人也都知道写论文就是忽悠——漫漫人生路上一道工序。</p>
<p>由于本小子是个小人（小小的活人），所以总关心小人关心的事情（俗称“人本主义”）。这论文嘛，窃以为也没什么上下高低之分，说出你怎么想的就可以了，而不要总说“他们”怎么想怎么做。一定要有数学上的创新？一定要有人家看不懂的公式才是好论文？一定要有综述？一定要有长长的参考文献列表才是好论文？一定要板起脸？不能写八卦？不准幽默？……嗨，作茧自缚。几年前看到一篇好文章，颇具恶搞性质，建议各位客官收藏：<a title="http://www.philippeweil.com/links/BoringWriting.pdf" href="http://www.philippeweil.com/links/BoringWriting.pdf">How to write Consistently Boring Scientific Literature</a>。</p>
<p>言归正传：本文是厌倦八股文和数学理论的产物，从理论角度来说，几乎没什么价值，不过这篇文章是用Sweave写的，完全具有可重复性和100%透明度，对文中结果有怀疑的客官可以自行运行代码；其次，统计模拟和图形的声音在界内太微弱，大家都很忙，有人在忙着推公式，有人在忙着编数据，有人在忙着把公式用到不知道是不是编出来的数据上，本小子跟着瞎掺和了点别的东西，仅此而已。甭管有用没用，敬请拍砖。</p>
<p style="text-align: center;">－－－－－－－－－－外一篇：坛霸是怎样练成的－－－－－－－－－－</p>
<p>曾经有童鞋称呼在下为“坛霸”，这个……有时候确实有那么点意思，无图无真相（两个多月没怎么回帖了，一鼓作气）：</p>
<p><div id="attachment_1414" class="wp-caption aligncenter" style="width: 610px"><a href="http://yihui.name/cn/wp-content/uploads/2010/07/cos-bbs-landlord.gif"><img class="size-full wp-image-1414 " title="坛霸是怎样练成的" src="http://yihui.name/cn/wp-content/uploads/2010/07/cos-bbs-landlord.gif" alt="坛霸是怎样练成的" width="600" /></a><p class="wp-caption-text">坛霸是怎样练成的</p></div>
<p>接下来我会陆续写第三届中国R语言会议、《现代统计图形》书稿和useR! 2010，若时间允许，我考虑一下电视剧《九阴真经》（93版）。</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/05/23 -- <a href="http://yihui.name/cn/2010/05/chinar-tutorial-and-sas-experts-wanted/" title="通知两则：第三届R会议培训及统计人才招聘">通知两则：第三届R会议培训及统计人才招聘</a> (12)</li><li>2010/05/19 -- <a href="http://yihui.name/cn/2010/05/asymptotia-mcnemar-test-statistics/" title="渐近理想国：McNemar检验的两种统计量">渐近理想国：McNemar检验的两种统计量</a> (0)</li><li>2010/04/15 -- <a href="http://yihui.name/cn/2010/04/knowledge-and-common-sense/" title="知识与常识：分析大学生挂科因素？">知识与常识：分析大学生挂科因素？</a> (17)</li><li>2010/04/14 -- <a href="http://yihui.name/cn/2010/04/stat-computation-math-logic/" title="统计计算与数学推导及逻辑分析">统计计算与数学推导及逻辑分析</a> (2)</li><li>2007/11/13 -- <a href="http://yihui.name/cn/2007/11/type-iii-error/" title="Type III Error（第三类错误）">Type III Error（第三类错误）</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2010/07/master-thesis-graphics-and-simulation-in-stat-models/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>渐近理想国：McNemar检验的两种统计量</title>
		<link>http://yihui.name/cn/2010/05/asymptotia-mcnemar-test-statistics/</link>
		<comments>http://yihui.name/cn/2010/05/asymptotia-mcnemar-test-statistics/#comments</comments>
		<pubDate>Wed, 19 May 2010 15:11:35 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[推荐]]></category>
		<category><![CDATA[数据分析]]></category>
		<category><![CDATA[统计图示]]></category>
		<category><![CDATA[统计计算]]></category>
		<category><![CDATA[KS检验]]></category>
		<category><![CDATA[McNemar检验]]></category>
		<category><![CDATA[列联表]]></category>
		<category><![CDATA[卡方统计量]]></category>
		<category><![CDATA[渐近理论]]></category>
		<category><![CDATA[统计模拟]]></category>
		<category><![CDATA[配对数据]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=1353</guid>
		<description><![CDATA[同经济学家不讲道德一样（学过经济学的人都知道这句话的意思），理论统计学家从某种程度上来说也不讲道德。我们常用的一些统计量通常都渐近服从某种分布（以卡方和正态为典型），看起来做理论的人对这些渐近理论都非常骄傲和自豪，我们在学习过程中也要一代一代传承下去。数学公式摆出来当然能唬人，也许唬到最后大家都为光着屁股的皇帝欢呼。坦白说，我对这些东西感到非常厌倦。
近日来收到邮件少了，但各个问题都不太好直接回答。比如这则关于McNemar检验的问题：McNemar检验可以有两种形式的统计量，一为(b &#8211; c)2/(b + c)，一为2b*log(2b/(b+c)) + 2c*log(2c/(b+c))，其中b和c是列联表非对角线上的频数。前者是McNemar检验本身的统计量，可以根据渐近正态分布得来（然后平方得到卡方），后者是似然比统计量（不带约束的似然除以带约束的，取对数，乘2）。McNemar检验看似复杂，实际上可以简化为检验b = c，或等价于检验一个n = b+c的二项分布中，是否p = 1/2（观察到X = b或c）。现在的问题是，这两种统计量有没有优劣之分？
作为一个懒得推公式的人，我向来喜欢用模拟回答问题，因为模拟的结果非常直截了当。我的考虑是，要看渐近统计量的优劣，那就看随着n增大，统计量和渐近分布有多接近好了。一个自然而然的想法当然是对若干统计量的观测值做分布检验了，比如KS检验。我们知道这两个统计量都是自由度为1的卡方分布，剩下的事情就是计算：
set.seed(123)
nmax = 1000
p = matrix(nrow = nmax, ncol = 2)
for (n in 2:nmax) {
    # 生成服从二项分布的随机数，分别计算两种统计量并作KS检验、记录P值
    b = rbinom(500, n, 0.5)
    x1 = (b - (n - b))^2/n
    x2 [...]]]></description>
			<content:encoded><![CDATA[<a href="http://yihui.name/cn/2010/05/asymptotia-mcnemar-test-statistics/"><span class="dropcap">如</span></a>同经济学家不讲道德一样（学过经济学的人都知道这句话的意思），理论统计学家从某种程度上来说也不讲道德。我们常用的一些统计量通常都渐近服从某种分布（以卡方和正态为典型），看起来做理论的人对这些渐近理论都非常骄傲和自豪，我们在学习过程中也要一代一代传承下去。数学公式摆出来当然能唬人，也许唬到最后大家都为光着屁股的皇帝欢呼。坦白说，我对这些东西感到非常厌倦。</p>
<p>近日来收到邮件少了，但各个问题都不太好直接回答。比如这则关于McNemar检验的问题：McNemar检验可以有两种形式的统计量，一为(b &#8211; c)<sup>2</sup>/(b + c)，一为2b*log(2b/(b+c)) + 2c*log(2c/(b+c))，其中b和c是列联表非对角线上的频数。前者是McNemar检验本身的统计量，可以根据渐近正态分布得来（然后平方得到卡方），后者是似然比统计量（不带约束的似然除以带约束的，取对数，乘2）。McNemar检验看似复杂，实际上可以简化为检验b = c，或等价于检验一个n = b+c的二项分布中，是否p = 1/2（观察到X = b或c）。现在的问题是，这两种统计量有没有优劣之分？</p>
<p>作为一个懒得推公式的人，我向来喜欢用模拟回答问题，因为模拟的结果非常直截了当。我的考虑是，要看渐近统计量的优劣，那就看随着n增大，统计量和渐近分布有多接近好了。一个自然而然的想法当然是对若干统计量的观测值做分布检验了，比如KS检验。我们知道这两个统计量都是自由度为1的卡方分布，剩下的事情就是计算：</p>
<pre>set.seed(123)
nmax = 1000
p = matrix(nrow = nmax, ncol = 2)
for (n in 2:nmax) {
    # 生成服从二项分布的随机数，分别计算两种统计量并作KS检验、记录P值
    b = rbinom(500, n, 0.5)
    x1 = (b - (n - b))^2/n
    x2 = 2 * b * log(2 * b/n) + 2 * (n - b) * log(2 * (n - b)/n)
    p[n, 1] = ks.test(x1, "pchisq", df = 1)$p.value
    p[n, 2] = ks.test(x2, "pchisq", df = 1)$p.value
}
# 调整一下数据格式，画图：随着n增大，P值如何变化？
library(ggplot2)
d = melt(p, varnames = c("n", "method"))
d$method = factor(d$method, labels = c("McNemar", "LRT"))
colnames(d)[3] = "p.value"
qplot(n, p.value, data = d, shape = method, geom = c("smooth", "point")) +
    scale_shape_manual(values = c(2, 3))
</pre>
<p><div id="attachment_1354" class="wp-caption aligncenter" style="width: 610px"><a href="http://yihui.name/cn/wp-content/uploads/2010/05/McNemar-test.png"><img class="size-full wp-image-1354" title="McNemar检验统计量与卡方分布拟合的好坏" src="http://yihui.name/cn/wp-content/uploads/2010/05/McNemar-test.png" alt="McNemar检验统计量与卡方分布拟合的好坏" width="600" height="400" /></a><p class="wp-caption-text">McNemar检验统计量与卡方分布拟合的好坏</p></div>
<p><span id="more-1353"></span>实际上，两种统计量与卡方分布的接近程度几乎是一样的，对于每一个n，KS检验得到的P值都差不多，可以看见图上两种方法检验得到的P值基本上是重叠的（其实也意味着统计量的值差不多），而n过了200之后，统计量基本上和卡方分布拟合比较好，即P值较大，但这种关系并不严格。</p>
<p>渐近理想国（asymptotia），来自Little (2006)在The American Statistician的文章，这词在英语词典中查不到，我将它翻译为“渐近理想国”。该文章是讲频率学派与贝叶斯学派的争论，提到人们对“渐近”的无奈：一个步履蹒跚的旅人，心想这理想国嘛时候才能到达呢？</p>
<p>至少在McNemar检验中，这个问题有了一个模糊的答案。</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/07/30 -- <a href="http://yihui.name/cn/2010/07/master-thesis-graphics-and-simulation-in-stat-models/" title="统计图形和模拟视角下的模型理论解析">统计图形和模拟视角下的模型理论解析</a> (3)</li><li>2010/04/14 -- <a href="http://yihui.name/cn/2010/04/stat-computation-math-logic/" title="统计计算与数学推导及逻辑分析">统计计算与数学推导及逻辑分析</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2010/05/asymptotia-mcnemar-test-statistics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>统计计算与数学推导及逻辑分析</title>
		<link>http://yihui.name/cn/2010/04/stat-computation-math-logic/</link>
		<comments>http://yihui.name/cn/2010/04/stat-computation-math-logic/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 00:01:21 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[推荐]]></category>
		<category><![CDATA[统计计算]]></category>
		<category><![CDATA[Sweave]]></category>
		<category><![CDATA[数学推导]]></category>
		<category><![CDATA[经济学论文]]></category>
		<category><![CDATA[统计模拟]]></category>
		<category><![CDATA[自动化]]></category>
		<category><![CDATA[计算机]]></category>
		<category><![CDATA[逻辑分析]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=1308</guid>
		<description><![CDATA[陈丽云这篇博客“真的是只大狐狸吗？对江西财经陈军昌博士的探究”让我想起一个长期以来我关心的一个话题。我对陈军昌这个人本身不如我对他的摘要的兴趣大，此君提到：
本文预言：在不久的未来，计算机技术将会借助非线性问题的进展彻底占据经济学的主流地位。这项技术不再是简单的用于经验数据的回归预测，而将成为主流形式化逻辑。 本文作者甚至计划在将来使用纯计算机程序的形式化逻辑写作一篇经济学论文。
我完全相信这段预言。倒不是说我觉得这种做法是对的，只是在目前可见的范围内，我严重怀疑堆积如山的经济学论文是否还需要人的脑子，我甚至想象，给一个Sweave模板，提供几个参数（如欲选择用什么模型、生成什么样式的图形），然后把数据读进来用R跑一遍，一篇论文就自动生成了，加上LaTeX本身就显得正式，这种论文一定人模狗样的，很能忽悠人。比如：
\Sexpr{names(dat)[1]} 的均值为 \Sexpr{mean(dat[  ,1])}，标准差为 xxx。图 \ref{...} 为 \Sexpr{figname[1]}：
……
\Sexpr{modname[1]}模型显示，斜率项为\Sexpr{coef(dat.lm)[2]}（t 检验结果为\Sexpr{ifelse{coef(summary(dat.lm))[2,4]&#60;0.05, '显著',  '不显著'}}）。
把目前主流杂志上的经济学论文遍历一下，总结一个八股规则，生成统计分析部分。至于结尾嘛，就把所有论文的结论部分分条存在一个数据库中，随机抽取5条就可以了，反正大家的结论都很NB，都对社会主义建设有重大意义。
调侃归调侃。如果这位陈博士的论文真的能被广为接受的话，我估摸着将来大多数期刊是不是要去喝西北风了。以上是经济学界的事情，与我没啥关系，暂不多说。还是回头说统计。
统计计算和模拟在统计界一直都是小弟，大佬仍然是搞数学的，而且似乎数学搞得越深越瞧不起做计算的。可以理解，学术跟宗教其实没有太多区别，人人都有信仰，而且只要有江湖，就一定会有名门正派和歪门邪道旁门左道之分。不过我倒是有两个有趣的例子：

Andrew Gelman在他的论文&#8220;A Bayesian Formulation of Exploratory Data  Analysis and Goodness-of-fit Testing&#8221;中提到Efron &#38; Tibshirani的&#8220;An  Introduction to the Bootstrap&#8221;。论文374页说：
[...] This is related to the idea from the bootstrap  literature that simulation can replace mathematical analysis.
我没考证原书，不过我没想到两位作者能放出这样的话（也许被Gelman夸大了，也许是断章取义）。
有个人叫Julian L. Simon，他在他的书&#8220;Resampling: the New  Statistics&#8221;（该书可下载）序言中放出一个赌注，愿意下注$5000赌一位以传统统计理论教学方式教统计学的老师，他自己以统计模拟的方式教同一个主题，看各自的学生在解决相关的数值问题谁更快得到答案。到现在为止没有人能应接这场赌局。也许是这本书太不出名了，也许是数学真的有某些方面的弱势。

统计计算之于传统统计学，就如同那位陈博士的想法之于传统经济学一样。人的逻辑思维未必是最有效的解决问题的方式，只不过在远古时代，人只有自己的脑子可用，所以就一直用一直用，总不肯承认除了脑子之外有其它替代方式来解决问题。不过也许若干年后，计算机的方式也会落后于时代。后之视今，犹如今之视昔。谁知道呢？
话说回来，我觉得计算机不可能完全替代经济学论文中的逻辑分析，但是用计算机做一些常规性的自动化报告也未尝不可。
附：本文中“经济学论文”大约可以推广到“社会科学论文”。
爷还想看：2010/07/30 [...]]]></description>
			<content:encoded><![CDATA[<span class="alert">本文论点在于计算机自动化的可能性以及对长久以来的数学推导传统的疑惑，并非为了贬低经济学论文。</span>
<p>陈丽云这篇博客“<a href="http://www.loyhome.cn/928.html">真的是只大狐狸吗？对江西财经陈军昌博士的探究</a>”让我想起一个长期以来我关心的一个话题。我对陈军昌这个人本身不如我对他的摘要的兴趣大，此君提到：</p>
<blockquote><p>本文预言：在不久的未来，计算机技术将会借助非线性问题的进展彻底占据经济学的主流地位。这项技术不再是简单的用于经验数据的回归预测，而将成为主流形式化逻辑。 本文作者甚至计划在将来使用纯计算机程序的形式化逻辑写作一篇经济学论文。</p></blockquote>
<p>我完全相信这段预言。倒不是说我觉得这种做法是对的，只是在目前可见的范围内，我严重怀疑堆积如山的经济学论文是否还需要人的脑子，我甚至想象，给一个Sweave模板，提供几个参数（如欲选择用什么模型、生成什么样式的图形），然后把数据读进来用R跑一遍，一篇论文就自动生成了，加上LaTeX本身就显得正式，这种论文一定人模狗样的，很能忽悠人。比如：</p>
<blockquote><p><code>\Sexpr{names(dat)[1]}</code> 的均值为 <code>\Sexpr{mean(dat[  ,1])}</code>，标准差为 xxx。图 <code>\ref{...} </code>为 <code>\Sexpr{figname[1]}</code>：</p>
<p>……</p>
<p><code>\Sexpr{modname[1]}</code>模型显示，斜率项为<code>\Sexpr{coef(dat.lm)[2]}</code>（t 检验结果为<code>\Sexpr{ifelse{coef(summary(dat.lm))[2,4]&lt;0.05, '显著',  '不显著'}}</code>）。</p></blockquote>
<p>把目前主流杂志上的经济学论文遍历一下，总结一个八股规则，生成统计分析部分。至于结尾嘛，就把所有论文的结论部分分条存在一个数据库中，随机抽取5条就可以了，反正大家的结论都很NB，都对社会主义建设有重大意义。</p>
<p>调侃归调侃。如果这位陈博士的论文真的能被广为接受的话，我估摸着将来大多数期刊是不是要去喝西北风了。以上是经济学界的事情，与我没啥关系，暂不多说。还是回头说统计。<span id="more-1308"></span></p>
<p>统计计算和模拟在统计界一直都是小弟，大佬仍然是搞数学的，而且似乎数学搞得越深越瞧不起做计算的。可以理解，学术跟宗教其实没有太多区别，人人都有信仰，而且只要有江湖，就一定会有名门正派和歪门邪道旁门左道之分。不过我倒是有两个有趣的例子：</p>
<ol>
<li>Andrew Gelman在他的论文&#8220;A Bayesian Formulation of Exploratory Data  Analysis and Goodness-of-fit Testing&#8221;中提到Efron &amp; Tibshirani的&#8220;An  Introduction to the Bootstrap&#8221;。论文374页说：</li>
<blockquote><p>[...] This is related to the idea from the bootstrap  literature that simulation can replace mathematical analysis.</p></blockquote>
<p>我没考证原书，不过我没想到两位作者能放出这样的话（也许被Gelman夸大了，也许是断章取义）。</p>
<li>有个人叫Julian L. Simon，他在他的书&#8220;<a title="http://www.resample.com/content/text/index.shtml" href="http://www.resample.com/content/text/index.shtml" target="_blank">Resampling: the New  Statistics</a>&#8221;（该书可下载）序言中放出一个赌注，愿意下注$5000赌一位以传统统计理论教学方式教统计学的老师，他自己以统计模拟的方式教同一个主题，看各自的学生在解决相关的数值问题谁更快得到答案。到现在为止没有人能应接这场赌局。也许是这本书太不出名了，也许是数学真的有某些方面的弱势。</li>
</ol>
<p>统计计算之于传统统计学，就如同那位陈博士的想法之于传统经济学一样。人的逻辑思维未必是最有效的解决问题的方式，只不过在远古时代，人只有自己的脑子可用，所以就一直用一直用，总不肯承认除了脑子之外有其它替代方式来解决问题。不过也许若干年后，计算机的方式也会落后于时代。后之视今，犹如今之视昔。谁知道呢？</p>
<p>话说回来，我觉得计算机不可能完全替代经济学论文中的逻辑分析，但是用计算机做一些常规性的自动化报告也未尝不可。</p>
<p>附：本文中“经济学论文”大约可以推广到“社会科学论文”。</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/07/30 -- <a href="http://yihui.name/cn/2010/07/master-thesis-graphics-and-simulation-in-stat-models/" title="统计图形和模拟视角下的模型理论解析">统计图形和模拟视角下的模型理论解析</a> (3)</li><li>2010/05/19 -- <a href="http://yihui.name/cn/2010/05/asymptotia-mcnemar-test-statistics/" title="渐近理想国：McNemar检验的两种统计量">渐近理想国：McNemar检验的两种统计量</a> (0)</li><li>2010/02/08 -- <a href="http://yihui.name/cn/2010/02/misc-issues-in-latex-lyx-r-sweave-pgfsweave/" title="关于LaTeX+LyX+R/Sweave+pgfSweave+PDF图形的若干中文问题">关于LaTeX+LyX+R/Sweave+pgfSweave+PDF图形的若干中文问题</a> (37)</li><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2009/12/08 -- <a href="http://yihui.name/cn/2009/12/meeting-r-core-members/" title="最近跟R core们经常打照面">最近跟R core们经常打照面</a> (9)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2010/04/stat-computation-math-logic/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>t检验方差不齐有多重要</title>
		<link>http://yihui.name/cn/2010/01/unequal-variance-in-t-test/</link>
		<comments>http://yihui.name/cn/2010/01/unequal-variance-in-t-test/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 21:02:56 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[推荐]]></category>
		<category><![CDATA[数据分析]]></category>
		<category><![CDATA[统计计算]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[Satterthwaite]]></category>
		<category><![CDATA[t检验]]></category>
		<category><![CDATA[Welch校正]]></category>
		<category><![CDATA[数值模拟]]></category>
		<category><![CDATA[方差齐性]]></category>
		<category><![CDATA[自由度]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=1238</guid>
		<description><![CDATA[统统计教科书大多会提及t检验中方差齐性这个问题，因为检验的假设条件是需要总体方差相等的。然而这个问题实际上可能并没有人们想象的那么重要，这里给两个简单的数值计算结果，看看方差不等对检验结果有什么影响。
par(mar = c(4, 4, 0.5, 0.5), mfrow = c(1, 2))
set.seed(123)
plot(pval &#60;- t(replicate(1000, {
    x1 = rnorm(100, mean = 0, sd = runif(1, 0.5, 1))
    x2 = rnorm(100, mean = 1, sd = runif(1, 2, 5))
    c(t.test(x1, x2, var.equal = TRUE)$p.value, t.test(x1, x2,
     [...]]]></description>
			<content:encoded><![CDATA[<a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/"><span class="dropcap-grey">传</span></a>统统计教科书大多会提及t检验中方差齐性这个问题，因为检验的假设条件是需要总体方差相等的。然而这个问题实际上可能并没有人们想象的那么重要，这里给两个简单的数值计算结果，看看方差不等对检验结果有什么影响。</p>
<pre>par(mar = c(4, 4, 0.5, 0.5), mfrow = c(1, 2))
set.seed(123)
plot(pval &lt;- t(replicate(1000, {
    x1 = rnorm(100, mean = 0, sd = runif(1, 0.5, 1))
    x2 = rnorm(100, mean = 1, sd = runif(1, 2, 5))
    c(t.test(x1, x2, var.equal = TRUE)$p.value, t.test(x1, x2,
        var.equal = FALSE)$p.value)
})), xlab = "P-value: equal variance", ylab = "P-value: unequal variance",
    pch = 20, asp = 1)
abline(0, 1)
plot(pval[, 1], pval[, 2] - pval[, 1], xlab = "P-value: equal variance",
    ylab = "Diff of p-values (unequal var - equal var)", pch = 20)
</pre>
<p>过程是：从两个正态总体中生成样本，第一个总体均值为0，标准差随机取自<code>U(0.5, 1)</code>，第二个总体均值为1，标准差取自<code>U(2, 5)</code>，显然两个总体标准差不相等，那么在t检验时设定和不设定方差相等的选项对结果有多大影响？把两种情况的P值都画出来：左图是原始P值，可见基本在对角线上，说明大致相等，若眼神儿不好，可看右图，即P值的差异，可见方差不等时P值偏大（原因很简单，因为Welch校正的自由度小于等于不校正的自由度，样本量相等的时候统计量的分母即标准误一样，因此统计量完全一样，自由度越小，P值越大嘛），但大多少呢？其实也没大多少。</p>
<p><div id="attachment_1239" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-1239" title="方差齐与不齐时t检验的结果对照" src="http://yihui.name/cn/wp-content/uploads/2010/01/t-test-unequal-variance.png" alt="方差齐与不齐时t检验的结果对照" width="600" height="300" /><p class="wp-caption-text">方差齐与不齐时t检验的结果对照</p></div>
<p><span id="more-1238"></span>Welch/Satterthwaite当然不是吃饱了没事干，要校正自由度当然也是有用武之地的，尤其是当样本量严重不相等时，这两者的结果就差远了。把第一个样本量改成10，然后如法炮制：</p>
<pre>par(mar = c(4, 4, 0.5, 0.5), mfrow = c(1, 2))
set.seed(123)
plot(pval &lt;- t(replicate(1000, {
    x1 = rnorm(10, mean = 0, sd = runif(1, 0.5, 1))
    x2 = rnorm(100, mean = 1, sd = runif(1, 2, 5))
    c(t.test(x1, x2, var.equal = TRUE)$p.value, t.test(x1, x2,
        var.equal = FALSE)$p.value)
})), xlab = "P-value: equal variance", ylab = "P-value: unequal variance",
    pch = 20, asp = 1)
abline(0, 1)
abline(h = 0.05, v = 0.05, col = "gray")
plot(pval[, 1], pval[, 2] - pval[, 1], xlab = "P-value: equal variance",
    ylab = "Diff of p-values (unequal var - equal var)", pch = 20)
</pre>
<div id="attachment_1240" class="wp-caption aligncenter" style="width: 610px"><img class="size-full wp-image-1240" title="方差齐与不齐时t检验的结果对照（样本量不同）" src="http://yihui.name/cn/wp-content/uploads/2010/01/t-test-unequal-variance-sample-size.png" alt="方差齐与不齐时t检验的结果对照（样本量不同）" width="600" height="300" /><p class="wp-caption-text">方差齐与不齐时t检验的结果对照（样本量不同）</p></div>
<p>这文章，上COS主站寒酸了点，有人能扩展一下就好了。不过这个过程倒是可以提醒广大人民群众避免“路见不平一声吼，吼完继续往前走”，尤其是懒得翻公式的人（像我这样），遇见问题，可以偷懒用计算的方法找答案。</p>
<p>附“大家来找茬”一则：第二次的代码和第一次有啥不一样（除了样本量变了之外）？为啥有这么个变化？这小子想干啥？</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2008/12/24 -- <a href="http://yihui.name/cn/2008/12/speed-of-computing-square-root/" title="开平方的速度">开平方的速度</a> (6)</li><li>2008/10/07 -- <a href="http://yihui.name/cn/2008/10/why-avoid-excel-in-statistics/" title="再谈为什么不用Excel做统计分析">再谈为什么不用Excel做统计分析</a> (0)</li><li>2010/04/14 -- <a href="http://yihui.name/cn/2010/04/stat-computation-math-logic/" title="统计计算与数学推导及逻辑分析">统计计算与数学推导及逻辑分析</a> (2)</li><li>2009/12/08 -- <a href="http://yihui.name/cn/2009/12/meeting-r-core-members/" title="最近跟R core们经常打照面">最近跟R core们经常打照面</a> (9)</li><li>2009/12/04 -- <a href="http://yihui.name/cn/2009/12/snow-in-ames-and-2nd-chinese-r-conference/" title="2009第一场雪和第二届中国R语言会议">2009第一场雪和第二届中国R语言会议</a> (43)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2010/01/unequal-variance-in-t-test/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>啊（R），辽阔的非洲草原！（一个生态模拟）</title>
		<link>http://yihui.name/cn/2009/02/ecological-simulation-with-r/</link>
		<comments>http://yihui.name/cn/2009/02/ecological-simulation-with-r/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 05:53:22 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[统计计算]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[模拟]]></category>
		<category><![CDATA[生态学]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=259</guid>
		<description><![CDATA[久以前，某同学问我，为什么R语言要叫R呢？我回答：因为它总是让人发出一声“啊！”。譬如，“啊，R语言真TM难学”，或“啊，R语言真神奇”，等等。啊，我今天在论坛上看见一个生态模拟的例子，便为发帖者编撰了如下场景：
ecol.simu = function(nr = 10, nc = 10, col.sp = c(1, 2),
    pch.sp = c(1, 2), col.die = 1, pch.die = 4, cex = 3,
    nmax = 50, interval = 1) {
    x = rep(1:nc, nr)
    y = rep(1:nr, each = nc)
  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://yihui.name/cn/2009/02/ecological-simulation-with-r/"><span class="dropcap-green">很</span></a>久以前，某同学问我，为什么R语言要叫R呢？我回答：因为它总是让人发出一声“啊！”。譬如，“啊，R语言真TM难学”，或“啊，R语言真神奇”，等等。啊，我今天在论坛上看见<a title="http://cos.name/bbs/read.php?tid=14093" href="http://cos.name/bbs/read.php?tid=14093">一个生态模拟的例子</a>，便为发帖者编撰了如下场景：</p>
<pre>ecol.simu = function(nr = 10, nc = 10, col.sp = c(1, 2),
    pch.sp = c(1, 2), col.die = 1, pch.die = 4, cex = 3,
    nmax = 50, interval = 1) {
    x = rep(1:nc, nr)
    y = rep(1:nr, each = nc)
    par(ann = FALSE)
    p = sample(rep(1:2, nr * nc/2), nr * nc)
    for (i in 1:nmax) {
        plot(1:nc, 1:nr, type = "n", xlim = c(0.5, nc + 0.5),
            ylim = c(0.5, nr + 0.5))
        abline(h = 1:nr, v = 1:nc, col = "lightgray", lty = 3)
        points(x, y, col = col.sp[p], pch = pch.sp[p], cex = cex)
        Sys.sleep(interval)
        idx = sample(nr * nc, 1)
        points(x[idx], y[idx], pch = pch.die, col = col.die,
            cex = cex, lwd = 3)
        tbl = as.vector(table(p))
        tbl = tbl + sign(p[idx] - 1.5) * c(1, -1)
        p[idx] = sample(1:2, 1, prob = tbl)
        Sys.sleep(interval)
    }
    p
}
par(mar = c(3, 3, 1, 1))
# 一步一步来
ecol.simu()
# 对于急性子和眼力好以及计算机速度快的同志，试试这个暴力模拟
ecol.simu(col.sp = c(8, 2), pch.sp = c(20, 17), nmax = 1000,
    interval = 0.05)</pre>
<p>大意是：有两种物种，每次随机死一个，后继者的概率为生者的比例。</p>
<div style="text-align: center;"><object width="500" height="500" data="http://yihui.name/cn/wp-content/uploads/1235627391_0.swf" type="application/x-shockwave-flash"><param name="quality" value="high" /><param name="src" value="http://yihui.name/cn/wp-content/uploads/1235627391_0.swf" /></object></div>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2008/12/05 -- <a href="http://yihui.name/cn/2008/12/catching-train-with-r/" title="用R赶火车">用R赶火车</a> (9)</li><li>2008/10/19 -- <a href="http://yihui.name/cn/2008/10/java-is-better-than-r-in-animation/" title="Java比R更容易表达连续型动画">Java比R更容易表达连续型动画</a> (2)</li><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2009/12/08 -- <a href="http://yihui.name/cn/2009/12/meeting-r-core-members/" title="最近跟R core们经常打照面">最近跟R core们经常打照面</a> (9)</li><li>2009/12/04 -- <a href="http://yihui.name/cn/2009/12/snow-in-ames-and-2nd-chinese-r-conference/" title="2009第一场雪和第二届中国R语言会议">2009第一场雪和第二届中国R语言会议</a> (43)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2009/02/ecological-simulation-with-r/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>正态分布变量和均匀分布变量分别的累加有什么关系</title>
		<link>http://yihui.name/cn/2009/02/cumsum-of-normal-var-and-uniform-var/</link>
		<comments>http://yihui.name/cn/2009/02/cumsum-of-normal-var-and-uniform-var/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 16:06:28 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[统计计算]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[均匀分布]]></category>
		<category><![CDATA[正态分布]]></category>
		<category><![CDATA[随机模拟]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=249</guid>
		<description><![CDATA[理论上应该是独立的啊，但今天偶然发现这么个现象：

不管怎么重复这幅散点图，两个累加变量之间总是有某种说不清的关系。怪哉，怪哉。
n = 1e+05
x = cumsum(rnorm(n, 0, 1))
y = cumsum(runif(n, -1, 1))
cl = gray(seq(0, 1, length = n))
plot(x, y, pch = ".", col = cl, xlab = 'CUM-Norm', ylab = 'CUM-Uniform')
数学公式推得快的看官请帮忙解释一下，谢谢！
下午2:00的补充：
我想明白这个道理了，因为累加之后数据的极差比较大，而每次点的位置与上一次点的位置之间的距离相对于这个极差来说就非常小，因此点的移动就是一小步一小步的，而整幅散点图看起来就会有聚类的现象，似乎两个累加变量之间有什么依随关系，实际上跟布朗运动差不多。
爷还想看：2008/10/19 -- Java比R更容易表达连续型动画 (2)2010/01/05 -- t检验方差不齐有多重要 (6)2009/12/08 -- 最近跟R core们经常打照面 (9)2009/12/04 -- 2009第一场雪和第二届中国R语言会议 (43)2009/10/10 -- R的第五万次SVN修改：看看R大佬们的工作时间分布 (9)]]></description>
			<content:encoded><![CDATA[<p>理论上应该是独立的啊，但今天偶然发现这么个现象：</p>
<p style="text-align: center;"><img class="aligncenter" style="border: 0pt none;" title="正态随机数累加与均匀分布随机数累加的散点图" src="http://yihui.name/cn/wp-content/uploads/1234973066_0.png" border="0" alt="正态随机数累加与均匀分布随机数累加的散点图" width="500" height="350" /></p>
<p>不管怎么重复这幅散点图，两个累加变量之间总是有某种说不清的关系。怪哉，怪哉。</p>
<pre>n = 1e+05
x = cumsum(rnorm(n, 0, 1))
y = cumsum(runif(n, -1, 1))
cl = gray(seq(0, 1, length = n))
plot(x, y, pch = ".", col = cl, xlab = 'CUM-Norm', ylab = 'CUM-Uniform')</pre>
<p>数学公式推得快的看官请帮忙解释一下，谢谢！</p>
<hr />下午2:00的补充：</p>
<p>我想明白这个道理了，因为累加之后数据的极差比较大，而每次点的位置与上一次点的位置之间的距离相对于这个极差来说就非常小，因此点的移动就是一小步一小步的，而整幅散点图看起来就会有聚类的现象，似乎两个累加变量之间有什么依随关系，实际上跟布朗运动差不多。</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2008/10/19 -- <a href="http://yihui.name/cn/2008/10/java-is-better-than-r-in-animation/" title="Java比R更容易表达连续型动画">Java比R更容易表达连续型动画</a> (2)</li><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2009/12/08 -- <a href="http://yihui.name/cn/2009/12/meeting-r-core-members/" title="最近跟R core们经常打照面">最近跟R core们经常打照面</a> (9)</li><li>2009/12/04 -- <a href="http://yihui.name/cn/2009/12/snow-in-ames-and-2nd-chinese-r-conference/" title="2009第一场雪和第二届中国R语言会议">2009第一场雪和第二届中国R语言会议</a> (43)</li><li>2009/10/10 -- <a href="http://yihui.name/cn/2009/10/50000-revisions-committed-to-r/" title="R的第五万次SVN修改：看看R大佬们的工作时间分布">R的第五万次SVN修改：看看R大佬们的工作时间分布</a> (9)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2009/02/cumsum-of-normal-var-and-uniform-var/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>开平方的速度</title>
		<link>http://yihui.name/cn/2008/12/speed-of-computing-square-root/</link>
		<comments>http://yihui.name/cn/2008/12/speed-of-computing-square-root/#comments</comments>
		<pubDate>Wed, 24 Dec 2008 14:21:53 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[统计计算]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[平方根]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=234</guid>
		<description><![CDATA[天突然想起，开平方sqrt(x)和直接用x^0.5谁的速度快，本以为sqrt()会快一些，结果貌似不是这样：
&#62; rm(list = ls(all = TRUE))
&#62; set.seed(123)
&#62; x = runif(1e+05)
&#62; system.time(replicate(1000, {
+     sqrt(x)
+     NULL
+ }))
   user  system elapsed
  18.07    0.00   18.14
&#62; system.time(replicate(1000, {
+     x^0.5
+     NULL
+ }))
   user  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://yihui.name/cn/2008/12/speed-of-computing-square-root/"><span class="dropcap">今</span></a>天突然想起，开平方<code>sqrt(x)</code>和直接用<code>x^0.5</code>谁的速度快，本以为<code>sqrt()</code>会快一些，结果貌似不是这样：</p>
<pre>&gt; rm(list = ls(all = TRUE))
&gt; set.seed(123)
&gt; x = runif(1e+05)
&gt; system.time(replicate(1000, {
+     sqrt(x)
+     NULL
+ }))
   user  system elapsed
  18.07    0.00   18.14
&gt; system.time(replicate(1000, {
+     x^0.5
+     NULL
+ }))
   user  system elapsed
  10.47    0.00   10.50
&gt; identical(sqrt(x), x^0.5)
 [1] TRUE</pre>
<p>看来四则运算还是快于调用函数啊。（旁白：真煞风景，今天是圣诞前夜呀老大！我：啥时候见过美国人过五四青年节么？）</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2008/10/07 -- <a href="http://yihui.name/cn/2008/10/why-avoid-excel-in-statistics/" title="再谈为什么不用Excel做统计分析">再谈为什么不用Excel做统计分析</a> (0)</li><li>2010/04/14 -- <a href="http://yihui.name/cn/2010/04/stat-computation-math-logic/" title="统计计算与数学推导及逻辑分析">统计计算与数学推导及逻辑分析</a> (2)</li><li>2009/12/08 -- <a href="http://yihui.name/cn/2009/12/meeting-r-core-members/" title="最近跟R core们经常打照面">最近跟R core们经常打照面</a> (9)</li><li>2009/12/04 -- <a href="http://yihui.name/cn/2009/12/snow-in-ames-and-2nd-chinese-r-conference/" title="2009第一场雪和第二届中国R语言会议">2009第一场雪和第二届中国R语言会议</a> (43)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2008/12/speed-of-computing-square-root/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>不懂原理请慎用R</title>
		<link>http://yihui.name/cn/2008/11/never-use-r-before-understanding-theories/</link>
		<comments>http://yihui.name/cn/2008/11/never-use-r-before-understanding-theories/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 01:44:23 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[推荐]]></category>
		<category><![CDATA[统计计算]]></category>
		<category><![CDATA[Adaboost.M1]]></category>
		<category><![CDATA[boosting]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[提升]]></category>
		<category><![CDATA[统计学原理]]></category>
		<category><![CDATA[莫要自欺欺人]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=223</guid>
		<description><![CDATA[各位客官谨记：R是一把锋利的刀，用得不好会割到自己（so sharp that you&#8217;ll cut yourself）。近日一位小同学的一个问题真是让我颇有些生气。
带着图形界面统计软件的思维来用R的话，十有八九会割到自己。在SPSS、SAS等工具中，虽然看着满屏幕的按钮，但大部分人可能也不害怕，因为不用管它们是什么意思，瞎选一通，按OK，下面就可以洋洋自得看着长篇大论的报表出来了，这种过程很是爽。
到了R的世界，满屏幕只有代码，后来好不容易明白了，原来R不用编程，调用现成函数就可以了，于是乎，开始把各式各样的数据、参数往函数里面扔，扔完了summary()一下，长篇大论的报表也出来了，甚爽。直到有一天，R向你报告说某地方出错了，于是傻了。
这里的案例是AdaBoost，这位同学用adabag包中的adaboost.M1()函数对树模型做boosting，却被告知无法进行。我看了一下数据，原来因变量是数值变量。于是火了，数值变量你咋用Adaboost.M1啊？它本身是对分类问题做的提升，对于一个回归问题非要驴唇对马嘴，这不净瞎扯么。
洒家满以为是个有趣的问题，结果饿着肚子回了邮件，真是亏大了。外专业的同仁也就罢了，俺不会说什么，关键是统计专业的。挥一挥衣袖，用膳去鸟。
爷还想看：2010/01/05 -- t检验方差不齐有多重要 (6)2009/12/08 -- 最近跟R core们经常打照面 (9)2009/12/04 -- 2009第一场雪和第二届中国R语言会议 (43)2009/10/10 -- R的第五万次SVN修改：看看R大佬们的工作时间分布 (9)2009/06/10 -- 用R语言和Flash以及JavaScript生成标签云 (7)]]></description>
			<content:encoded><![CDATA[<p><a href="http://yihui.name/cn/2008/11/never-use-r-before-understanding-theories/"><span class="dropcap-green">请</span></a>各位客官谨记：R是一把锋利的刀，用得不好会割到自己（so sharp that you&#8217;ll cut yourself）。近日一位小同学的一个问题真是让我颇有些生气。</p>
<p>带着图形界面统计软件的思维来用R的话，十有八九会割到自己。在SPSS、SAS等工具中，虽然看着满屏幕的按钮，但大部分人可能也不害怕，因为不用管它们是什么意思，瞎选一通，按OK，下面就可以洋洋自得看着长篇大论的报表出来了，这种过程很是爽。</p>
<p>到了R的世界，满屏幕只有代码，后来好不容易明白了，原来R不用编程，调用现成函数就可以了，于是乎，开始把各式各样的数据、参数往函数里面扔，扔完了summary()一下，长篇大论的报表也出来了，甚爽。直到有一天，R向你报告说某地方出错了，于是傻了。</p>
<p>这里的案例是AdaBoost，这位同学用adabag包中的adaboost.M1()函数对树模型做boosting，却被告知无法进行。我看了一下数据，原来因变量是数值变量。于是火了，数值变量你咋用Adaboost.M1啊？它本身是对分类问题做的提升，对于一个回归问题非要驴唇对马嘴，这不净瞎扯么。</p>
<p>洒家满以为是个有趣的问题，结果饿着肚子回了邮件，真是亏大了。外专业的同仁也就罢了，俺不会说什么，关键是统计专业的。挥一挥衣袖，用膳去鸟。</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2009/12/08 -- <a href="http://yihui.name/cn/2009/12/meeting-r-core-members/" title="最近跟R core们经常打照面">最近跟R core们经常打照面</a> (9)</li><li>2009/12/04 -- <a href="http://yihui.name/cn/2009/12/snow-in-ames-and-2nd-chinese-r-conference/" title="2009第一场雪和第二届中国R语言会议">2009第一场雪和第二届中国R语言会议</a> (43)</li><li>2009/10/10 -- <a href="http://yihui.name/cn/2009/10/50000-revisions-committed-to-r/" title="R的第五万次SVN修改：看看R大佬们的工作时间分布">R的第五万次SVN修改：看看R大佬们的工作时间分布</a> (9)</li><li>2009/06/10 -- <a href="http://yihui.name/cn/2009/06/creating-tag-cloud-using-r-and-flash-javascript/" title="用R语言和Flash以及JavaScript生成标签云">用R语言和Flash以及JavaScript生成标签云</a> (7)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2008/11/never-use-r-before-understanding-theories/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>几何级数增长应该怎样用图形表达</title>
		<link>http://yihui.name/cn/2008/10/demonstrate-geometric-growth-in-graphics/</link>
		<comments>http://yihui.name/cn/2008/10/demonstrate-geometric-growth-in-graphics/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 15:20:52 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[推荐]]></category>
		<category><![CDATA[统计图示]]></category>
		<category><![CDATA[统计计算]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[几何级数增长]]></category>
		<category><![CDATA[对数]]></category>
		<category><![CDATA[指数增长]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=206</guid>
		<description><![CDATA[日在北大听史密斯商学院创业大赛报告，其中有一位参赛者幻灯片中提到了他们的用户数这几年呈几何级数增长，并拿用户数和时间作了一幅图，图中线条呈现出增长越来越快的趋势，其实这种做法有糊弄之嫌——增长越来越快的并不一定是几何级数增长方式。例如y=sin(x)+1在区间上增长也是越来越快，但它并非几何级数。
表达几何级数增长（或者指数增长）的方式一般是对y取对数，然后与x作图，看图形是否呈一条直线：若log(y)=a*x+b，那么显然是指数增长方式。人眼观察直线比观察曲线要容易得多，因此这种方法比用原始数据作图要更容易表达“几何级数增长”。下图左边为原始数据，右边为y轴取对数后的图形。R中处理起来非常简单，作图时添加参数log即可（可以对x轴或y轴或者同时取对数）。

文件下载链接
#png("exp_growth.png", width = 600, height = 500)
options(scipen = 5)
x = seq(1.51 * pi, 2 * pi, length = 100)
par(mfrow = c(2, 2), pch = 20, mar = c(5, 6, 1, 0.1),
    col = rgb(0, 0, 0, 0.5), las = 1, mgp = c(4, 1, 0))
plot(x, sin(x) + 1)
plot(x, sin(x) + 1, log [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://yihui.name/cn/2008/10/demonstrate-geometric-growth-in-graphics/"><span class="dropcap-red">今</span></a>日在北大听史密斯商学院创业大赛报告，其中有一位参赛者幻灯片中提到了他们的用户数这几年呈几何级数增长，并拿用户数和时间作了一幅图，图中线条呈现出增长越来越快的趋势，其实这种做法有糊弄之嫌——增长越来越快的并不一定是几何级数增长方式。例如y=sin(x)+1在<img src="http://www.forkosh.dreamhost.com/mimetex.cgi?\normalsize %5B1.5%5Cpi%2C%202%5Cpi%5D" title="[1.5\pi, 2\pi]" alt="[1.5\pi, 2\pi]" align="absmiddle" class="math" />区间上增长也是越来越快，但它并非几何级数。</p>
<p>表达几何级数增长（或者指数增长）的方式一般是对y取对数，然后与x作图，看图形是否呈一条直线：若log(y)=a*x+b，那么显然是指数增长方式。人眼观察直线比观察曲线要容易得多，因此这种方法比用原始数据作图要更容易表达“几何级数增长”。下图左边为原始数据，右边为y轴取对数后的图形。R中处理起来非常简单，作图时添加参数log即可（可以对x轴或y轴或者同时取对数）。</p>
<p align="center"><img title="指数增长的图示方法" src="http://yihui.name/cn/wp-content/uploads/1225293431_0.png" border="0" alt="指数增长的图示方法" /></p>
<p><a href="http://yihui.name/cn/wp-content/uploads//1225293485_0.r">文件下载链接</a></p>
<pre>#png("exp_growth.png", width = 600, height = 500)
options(scipen = 5)
x = seq(1.51 * pi, 2 * pi, length = 100)
par(mfrow = c(2, 2), pch = 20, mar = c(5, 6, 1, 0.1),
    col = rgb(0, 0, 0, 0.5), las = 1, mgp = c(4, 1, 0))
plot(x, sin(x) + 1)
plot(x, sin(x) + 1, log = "y")
plot(x, exp(x))
plot(x, exp(x), log = "y")
#dev.off()</pre>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2009/12/08 -- <a href="http://yihui.name/cn/2009/12/meeting-r-core-members/" title="最近跟R core们经常打照面">最近跟R core们经常打照面</a> (9)</li><li>2009/12/04 -- <a href="http://yihui.name/cn/2009/12/snow-in-ames-and-2nd-chinese-r-conference/" title="2009第一场雪和第二届中国R语言会议">2009第一场雪和第二届中国R语言会议</a> (43)</li><li>2009/10/10 -- <a href="http://yihui.name/cn/2009/10/50000-revisions-committed-to-r/" title="R的第五万次SVN修改：看看R大佬们的工作时间分布">R的第五万次SVN修改：看看R大佬们的工作时间分布</a> (9)</li><li>2009/06/10 -- <a href="http://yihui.name/cn/2009/06/creating-tag-cloud-using-r-and-flash-javascript/" title="用R语言和Flash以及JavaScript生成标签云">用R语言和Flash以及JavaScript生成标签云</a> (7)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2008/10/demonstrate-geometric-growth-in-graphics/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>关于最小中位数平方法（Least Median of Squares）</title>
		<link>http://yihui.name/cn/2008/10/least-median-of-squares/</link>
		<comments>http://yihui.name/cn/2008/10/least-median-of-squares/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 14:23:23 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[推荐]]></category>
		<category><![CDATA[统计计算]]></category>
		<category><![CDATA[Least Median of Squares]]></category>
		<category><![CDATA[LMS]]></category>
		<category><![CDATA[lqs()]]></category>
		<category><![CDATA[MASS]]></category>
		<category><![CDATA[OLS]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[普通最小二乘]]></category>
		<category><![CDATA[最小中位数平方法]]></category>
		<category><![CDATA[稳健回归]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=199</guid>
		<description><![CDATA[果我没记错的话，Prof Lin在课堂上提到，Least Median of Squares是一个难题：它的目标是最小化误差平方的中位数。当时上课我没去考虑这个问题，晚上突然想起，这个问题不管怎么说至少可以有暴力解法，比如用BFGS等方法去优化就能算出系数了。
但是转念一想，LMS这个东西怎么看着眼熟，打开MASS一看，原来是自己以前用过的。MASS包的lqs()可以计算各种稳健和耐抗回归，LMS是其中一种。LMS是一种稳健回归方法（下第一幅图），然而MASS的文献指出它对大量堆在中间位置上的数值敏感（下第二幅图）。
图1 离群点对普通最小二乘有严重影响，LMS却没问题
图2 大量的中间值让LMS失效，普通最小二乘却没事
文件下载链接
#png("lms.png", width = 500, height = 400)
par(mar = c(4, 4, 0.1, 0.1))
library(MASS)
set.seed(1)
x = runif(50)
set.seed(1)
y = 2 + 3 * x + rnorm(50)
# an outlier
x = c(x, 2); y = c(y, 30)
plot(x, y, pch = 20)
abline(lqs(y ~ x, method = "lqs"), col = "blue", lty = 2)
abline(lm(y ~ x), col [...]]]></description>
			<content:encoded><![CDATA[<a href="http://yihui.name/cn/2008/10/least-median-of-squares/"><span class="dropcap-green">如</span></a>果我没记错的话，Prof Lin在课堂上提到，Least Median of Squares是一个难题：它的目标是最小化误差平方的中位数。当时上课我没去考虑这个问题，晚上突然想起，这个问题不管怎么说至少可以有暴力解法，比如用BFGS等方法去优化就能算出系数了。</p>
<p>但是转念一想，LMS这个东西怎么看着眼熟，打开MASS一看，原来是自己以前用过的。MASS包的lqs()可以计算各种稳健和耐抗回归，LMS是其中一种。LMS是一种稳健回归方法（下第一幅图），然而MASS的文献指出它对大量堆在中间位置上的数值敏感（下第二幅图）。</p>
<p><div class="wp-caption aligncenter" style="width: 510px"><a href="http://yihui.name/cn/wp-content/uploads/1224512131_0.png"><img style="border: 0pt none;" title="LMS与OLS的比较（LMS较稳健）" src="http://yihui.name/cn/wp-content/uploads/1224512131_0.png" border="0" alt="LMS与OLS的比较（LMS较稳健）" width="500" height="400" /></a><p class="wp-caption-text">LMS与OLS的比较（LMS较稳健）</p></div>
<p style="text-align: center;">图1 离群点对普通最小二乘有严重影响，LMS却没问题</p>
<div class="wp-caption aligncenter" style="width: 510px"><a href="http://yihui.name/cn/wp-content/uploads/1224512525_0.png"><img style="border: 0pt none;" title="LMS与OLS的比较（LMS对中间值敏感）" src="http://yihui.name/cn/wp-content/uploads/1224512525_0.png" border="0" alt="LMS与OLS的比较（LMS对中间值敏感）" width="500" height="400" /></a><p class="wp-caption-text">LMS与OLS的比较（LMS对中间值敏感）</p></div>
<p style="text-align: center;">图2 大量的中间值让LMS失效，普通最小二乘却没事</p>
<p><a href="http://yihui.name/cn/wp-content/uploads//1224513797_0.r">文件下载链接</a></p>
<pre>#png("lms.png", width = 500, height = 400)
par(mar = c(4, 4, 0.1, 0.1))
library(MASS)
set.seed(1)
x = runif(50)
set.seed(1)
y = 2 + 3 * x + rnorm(50)
# an outlier
x = c(x, 2); y = c(y, 30)
plot(x, y, pch = 20)
abline(lqs(y ~ x, method = "lqs"), col = "blue", lty = 2)
abline(lm(y ~ x), col = "red")
legend("topleft", legend = c("OLS", "LMS"), col = c("red",
    "blue"), lty = 1:2, bty = "n")
#dev.off()

#png("lms-central.png", width = 500, height = 400)
par(mar = c(4, 4, 0.1, 0.1))
library(MASS)
set.seed(1)
x = runif(50)
set.seed(1)
y = 2 + 3 * x + rnorm(50)
# 500 central values
x = c(x, jitter(rep(mean(x), 500), 3))
y = c(y, jitter(rep(mean(y), 500), 3))
plot(x, y, pch = 20, cex = c(rep(1, 50), rep(0.1, 500)))
abline(lqs(y ~ x, method = "lqs"), col = "blue", lty = 2)
abline(lm(y ~ x), col = "red")
legend("topleft", legend = c("OLS", "LMS"), col = c("red",
    "blue"), lty = 1:2, bty = "n")
#dev.off()</pre>
<p>应读者要求，将两幅图的数据分别附在这里。</p>
<span class="download"><a href="http://yihui.name/cn/wp-content/uploads/2008/10/fig1.txt">第一幅图的数据下载</a></p>
<p><a href="http://yihui.name/cn/wp-content/uploads/2008/10/fig2.txt">第二幅图的数据下载</a></span>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2009/12/08 -- <a href="http://yihui.name/cn/2009/12/meeting-r-core-members/" title="最近跟R core们经常打照面">最近跟R core们经常打照面</a> (9)</li><li>2009/12/04 -- <a href="http://yihui.name/cn/2009/12/snow-in-ames-and-2nd-chinese-r-conference/" title="2009第一场雪和第二届中国R语言会议">2009第一场雪和第二届中国R语言会议</a> (43)</li><li>2009/10/10 -- <a href="http://yihui.name/cn/2009/10/50000-revisions-committed-to-r/" title="R的第五万次SVN修改：看看R大佬们的工作时间分布">R的第五万次SVN修改：看看R大佬们的工作时间分布</a> (9)</li><li>2009/06/10 -- <a href="http://yihui.name/cn/2009/06/creating-tag-cloud-using-r-and-flash-javascript/" title="用R语言和Flash以及JavaScript生成标签云">用R语言和Flash以及JavaScript生成标签云</a> (7)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2008/10/least-median-of-squares/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>再谈为什么不用Excel做统计分析</title>
		<link>http://yihui.name/cn/2008/10/why-avoid-excel-in-statistics/</link>
		<comments>http://yihui.name/cn/2008/10/why-avoid-excel-in-statistics/#comments</comments>
		<pubDate>Tue, 07 Oct 2008 10:47:02 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[统计计算]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[R]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=188</guid>
		<description><![CDATA[想到魔鬼经济学（Freakonomics）在NY Times的Blog上也写起R来了。话说昨天有这么一篇“免费的超牛牛计算软件”（Free Super-Crunching Software），作者小小赞扬了一把Excel可以多么灵活多么实用，然后介绍了一下R。后面顿时狂风大作、飞沙走石、昏天黑地。
其中，第一位留言的同学给了一篇小文档，对统计分析的人来说值得警醒。
爷还想看：2010/01/05 -- t检验方差不齐有多重要 (6)2008/12/24 -- 开平方的速度 (6)2008/09/10 -- 为什么避免用Excel作统计计算 (15)2008/08/22 -- 数据导入/导出的通用方法 (0)2010/04/14 -- 统计计算与数学推导及逻辑分析 (2)]]></description>
			<content:encoded><![CDATA[<p><a href="http://yihui.name/cn/2008/10/why-avoid-excel-in-statistics/"><span class="dropcap-brown">没</span></a>想到魔鬼经济学（Freakonomics）在NY Times的<a title="http://freakonomics.blogs.nytimes.com/" href="http://freakonomics.blogs.nytimes.com/" target="_blank">Blog</a>上也写起R来了。话说昨天有这么一篇“免费的超牛牛计算软件”（<a title="http://freakonomics.blogs.nytimes.com/2008/10/06/free-super-crunching-software/" href="http://freakonomics.blogs.nytimes.com/2008/10/06/free-super-crunching-software/" target="_blank">Free Super-Crunching Software</a>），作者小小赞扬了一把Excel可以多么灵活多么实用，然后介绍了一下R。后面顿时狂风大作、飞沙走石、昏天黑地。</p>
<p>其中，第一位留言的同学给了<a title="http://pages.stern.nyu.edu/~jsimonof/classes/1305/pdf/excelreg.pdf" href="http://pages.stern.nyu.edu/~jsimonof/classes/1305/pdf/excelreg.pdf" target="_blank">一篇小文档</a>，对统计分析的人来说值得警醒。</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2008/12/24 -- <a href="http://yihui.name/cn/2008/12/speed-of-computing-square-root/" title="开平方的速度">开平方的速度</a> (6)</li><li>2008/09/10 -- <a href="http://yihui.name/cn/2008/09/why-avoid-excel-to-do-calculation/" title="为什么避免用Excel作统计计算">为什么避免用Excel作统计计算</a> (15)</li><li>2008/08/22 -- <a href="http://yihui.name/cn/2008/08/data-import-and-export-approach/" title="数据导入/导出的通用方法">数据导入/导出的通用方法</a> (0)</li><li>2010/04/14 -- <a href="http://yihui.name/cn/2010/04/stat-computation-math-logic/" title="统计计算与数学推导及逻辑分析">统计计算与数学推导及逻辑分析</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2008/10/why-avoid-excel-in-statistics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>理解计算机中的数字</title>
		<link>http://yihui.name/cn/2008/10/understanding-numbers-in-computer/</link>
		<comments>http://yihui.name/cn/2008/10/understanding-numbers-in-computer/#comments</comments>
		<pubDate>Sat, 04 Oct 2008 04:37:17 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[推荐]]></category>
		<category><![CDATA[统计计算]]></category>
		<category><![CDATA[数值计算]]></category>
		<category><![CDATA[浮点数]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=185</guid>
		<description><![CDATA[多人对统计计算或数值计算不以为然，表现在他们充分相信计算机、在遇到计算问题时就是一句话，“交给软件去做就可以了”。不过我觉得稍微了解一下数字的常识还是很有必要的，一些表达式在数学上成立，在计算上未必成立。据R-FAQ介绍，在&#8221;The Elements of Programming Style&#8221;一书中有这么一句话：
10.0 times 0.1 is hardly ever 1.0. （10.0乘以0.1通常不是1.0。）
类似地，在R里面还有这样的例子：
&#62; .17 - .6 + .43
[1] 5.551115e-17
&#62; .17 + .43 - .6
[1] 0
&#62; .6 - .17 - .43
[1] -5.551115e-17
奇怪么？不奇怪（而且注意这不是R的问题），想象与现实总是有差距。以前我见有人用R求极大似然估计，直接使用了密度函数值相乘再最大化，却不知成百上千个小数乘起来在计算机中会是怎样难以表达，我换作取对数求和的形式之后，估计就稳定多了。编程的人（尤其是统计编程的人）千万莫偷懒，写代码之前一定要想好把数学问题转换一下，让计算机能够适应你要用的数字。还有一个最简单的例子就是求组合数，理论上可以用排列数（函数factorial()）乘乘除除得出来，但是当n取好几百的大数时，想想n的排列是多大的数、计算机能否表达？这种情况下就应该用组合数本身的函数choose()——理论上等价，计算上不等价。万一choose()本身也很难计算了，那只能考虑先求对数再求和最后求幂，这样也许损失精度，但计算上可实现。
最近R-help里面出现过好几例类似的案子，甚至有人在优化时初始值取的是Inf（无穷大），让人哭笑不得、无可奈何。昨天又有人问1 - cumsum(rep(0.1, 10))的最后一个数字为什么不是0。
爷还想看：2010/04/14 -- 统计计算与数学推导及逻辑分析 (2)2010/01/05 -- t检验方差不齐有多重要 (6)2008/12/24 -- 开平方的速度 (6)2008/10/07 -- 再谈为什么不用Excel做统计分析 (0)]]></description>
			<content:encoded><![CDATA[<p><a href="http://yihui.name/cn/2008/10/understanding-numbers-in-computer/"><span class="dropcap-blue">很</span></a>多人对统计计算或数值计算不以为然，表现在他们充分相信计算机、在遇到计算问题时就是一句话，“交给软件去做就可以了”。不过我觉得稍微了解一下数字的常识还是很有必要的，一些表达式在数学上成立，在计算上未必成立。据R-FAQ介绍，在&#8221;The Elements of Programming Style&#8221;一书中有这么一句话：</p>
<blockquote><p><em>10.0 times 0.1 is hardly ever 1.0</em>. （10.0乘以0.1通常不是1.0。）</p></blockquote>
<p>类似地，在R里面还有这样的例子：</p>
<pre>&gt; .17 - .6 + .43
[1] 5.551115e-17
&gt; .17 + .43 - .6
[1] 0
&gt; .6 - .17 - .43
[1] -5.551115e-17</pre>
<p>奇怪么？不奇怪（而且注意这不是R的问题），想象与现实总是有差距。以前我见有人用R求极大似然估计，直接使用了密度函数值相乘再最大化，却不知成百上千个小数乘起来在计算机中会是怎样难以表达，我换作取对数求和的形式之后，估计就稳定多了。编程的人（尤其是统计编程的人）千万莫偷懒，写代码之前一定要想好把数学问题转换一下，让计算机能够适应你要用的数字。还有一个最简单的例子就是求组合数，理论上可以用排列数（函数<code>factorial()</code>）乘乘除除得出来，但是当n取好几百的大数时，想想n的排列是多大的数、计算机能否表达？这种情况下就应该用组合数本身的函数<code>choose()</code>——理论上等价，计算上不等价。万一<code>choose()</code>本身也很难计算了，那只能考虑先求对数再求和最后求幂，这样也许损失精度，但计算上可实现。</p>
<p>最近R-help里面出现过好几例类似的案子，甚至有人在优化时初始值取的是Inf（无穷大），让人哭笑不得、无可奈何。昨天又有人问<code>1 - cumsum(rep(0.1, 10))</code>的最后一个数字为什么不是0。</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/04/14 -- <a href="http://yihui.name/cn/2010/04/stat-computation-math-logic/" title="统计计算与数学推导及逻辑分析">统计计算与数学推导及逻辑分析</a> (2)</li><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2008/12/24 -- <a href="http://yihui.name/cn/2008/12/speed-of-computing-square-root/" title="开平方的速度">开平方的速度</a> (6)</li><li>2008/10/07 -- <a href="http://yihui.name/cn/2008/10/why-avoid-excel-in-statistics/" title="再谈为什么不用Excel做统计分析">再谈为什么不用Excel做统计分析</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2008/10/understanding-numbers-in-computer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>计量经济学与R</title>
		<link>http://yihui.name/cn/2008/08/econometrics-and-r/</link>
		<comments>http://yihui.name/cn/2008/08/econometrics-and-r/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 06:22:01 +0000</pubDate>
		<dc:creator>谢益辉</dc:creator>
				<category><![CDATA[统计计算]]></category>
		<category><![CDATA[JSS]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[计量经济学]]></category>

		<guid isPermaLink="false">http://yihui.name/cn/?p=148</guid>
		<description><![CDATA[SS第27期为计量经济学专辑，对计量经济学感兴趣的不妨看一看。不过一共只有7篇论文（不算第1篇），内容可能不太全面。
看样子Achim Zeileis兴趣还挺广泛。
爷还想看：2010/01/05 -- t检验方差不齐有多重要 (6)2009/12/08 -- 最近跟R core们经常打照面 (9)2009/12/04 -- 2009第一场雪和第二届中国R语言会议 (43)2009/10/10 -- R的第五万次SVN修改：看看R大佬们的工作时间分布 (9)2009/06/10 -- 用R语言和Flash以及JavaScript生成标签云 (7)]]></description>
			<content:encoded><![CDATA[<p><a href="http://yihui.name/cn/2008/08/econometrics-and-r/"><span class="dropcap-none">J</span></a><a title="http://www.jstatsoft.org/v27" href="http://www.jstatsoft.org/v27" target="_blank">SS第27期</a>为计量经济学专辑，对计量经济学感兴趣的不妨看一看。不过一共只有7篇论文（不算第1篇），内容可能不太全面。</p>
<p>看样子Achim Zeileis兴趣还挺广泛。</p>
<h2  class="related_post_title">爷还想看：</h2><ul class="related_post"><li>2010/01/05 -- <a href="http://yihui.name/cn/2010/01/unequal-variance-in-t-test/" title="t检验方差不齐有多重要">t检验方差不齐有多重要</a> (6)</li><li>2009/12/08 -- <a href="http://yihui.name/cn/2009/12/meeting-r-core-members/" title="最近跟R core们经常打照面">最近跟R core们经常打照面</a> (9)</li><li>2009/12/04 -- <a href="http://yihui.name/cn/2009/12/snow-in-ames-and-2nd-chinese-r-conference/" title="2009第一场雪和第二届中国R语言会议">2009第一场雪和第二届中国R语言会议</a> (43)</li><li>2009/10/10 -- <a href="http://yihui.name/cn/2009/10/50000-revisions-committed-to-r/" title="R的第五万次SVN修改：看看R大佬们的工作时间分布">R的第五万次SVN修改：看看R大佬们的工作时间分布</a> (9)</li><li>2009/06/10 -- <a href="http://yihui.name/cn/2009/06/creating-tag-cloud-using-r-and-flash-javascript/" title="用R语言和Flash以及JavaScript生成标签云">用R语言和Flash以及JavaScript生成标签云</a> (7)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://yihui.name/cn/2008/08/econometrics-and-r/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
