2.13k likes | 2.45k Views
统计软件和 R 语言. 装了 R 没有?. 一个广泛接受的统计定义为:. 统计 是用以收集 数据 、分析 数据 和由 数据 得出结论的一组概念、原则和方法 . 这个定义决定了统计的命运:. 和数学及音乐不同 , 统计不能欣赏自己 , 它不为实际服务就 没有存在必要 统计必须 为各个领域服务 统计必须和 数据 打交道 因此 , 统计必须和 计算机 结合. 搞“理论统计”是否用不着动手搞数据呢 ?. 如果倒退 几十年 … 就可以 . 如果没有应用背景. 文章没人要 , 基金无人给 . 现在一些人即使瞎编也要编出一个应用背景来 . 纯 理论统计 存在吗?.
E N D
统计软件和R语言 装了R没有?
一个广泛接受的统计定义为: • 统计是用以收集数据、分析数据和由数据得出结论的一组概念、原则和方法.
这个定义决定了统计的命运: • 和数学及音乐不同, 统计不能欣赏自己, 它不为实际服务就没有存在必要 • 统计必须为各个领域服务 • 统计必须和数据打交道 • 因此,统计必须和计算机结合
搞“理论统计”是否用不着动手搞数据呢? • 如果倒退几十年… • 就可以.
如果没有应用背景 • 文章没人要, • 基金无人给. • 现在一些人即使瞎编也要编出一个应用背景来. • 纯理论统计存在吗?
统计和计算机 • 现代生活已离不开计算机了。 • 但最早使用计算机的是统计。 • 最初的计算机仅仅是为科学计算而建造的。大型计算机的最早一批用户就包含统计。 • 而现在统计仍然是进行数字计算最多的用户。
统计和计算机 • 计算机现在早已脱离了仅有计算功能的单一模式,而成为百姓生活的一部分。 • 计算机的使用,也从过去必须学会计算机语言到只需要“傻瓜式”地点击鼠标。结果也从单纯的数字输出到包括漂亮的表格和图形的各种形式。
统计软件 • 统计软件的发展,也使得统计从统计学家的圈内游戏变成了大众的游戏。 • 只要输入数据,点几下鼠标,做一些选项,马上就得到令人惊叹的漂亮结果了。
统计软件 • 是否傻瓜式的统计软件使用可以代替统计课程了? • 当然不是。 • 数据的整理和识别,方法的选用,计算机输出结果的理解都不象使用傻瓜相机那样简单可靠。
统计软件的问题 • 诸如法律和医学的软件都有不少警告,不时提醒你去咨询专家。 • 这是注意饭碗的律师和大夫的高明之处。 • 但统计软件则不那么负责。只要数据格式无误、方法不矛盾而且不用零作为除数就一定给你结果,而且没有任何警告。 • 可能统计学家缺乏商业头脑。
统计软件的问题 • 另外,统计软件输出的结果太多; • 即使是同样的方法,不同软件输出的内容还不一样;有时同样的内容名称也不一样。 • 这就使得使用者大伤脑筋。即使统计学家也不一定能解释所有的输出。 • 因此,就应该特别留神,明白自己是在干什么。不要在得到一堆毫无意义的垃圾之后还沾沾自喜。
data test; input x; cards; 1 2 3 17 60 run; proc univariate freq normal; run; 随意键入几行SAS语句和5个数目... 得到下面结果,一共50多个数目(你能够解释多少?你需要多少?).
The SAS System 15:33 Friday, September 12, 2003 1 Univariate Procedure Variable=X Moments Quantiles(Def=5) N 5 Sum Wgts 5 100% Max 60 99% 60 Mean 16.6 Sum 83 75% Q3 17 95% 60 Std Dev 25.12568 Variance 631.3 50% Med 3 90% 60 Skewness 1.899804 Kurtosis 3.563057 25% Q1 2 10% 1 USS 3903 CSS 2525.2 0% Min 1 5% 1 CV 151.3595 Std Mean 11.23655 1% 1 T:Mean=0 1.477322 Pr>|T| 0.2136 Range 59 Num ^= 0 5 Num > 0 5 Q3-Q1 15 M(Sign) 2.5 Pr>=|M| 0.0625 Mode 1 Sgn Rank 7.5 Pr>=|S| 0.0625 W:Normal 0.726472 Pr<W 0.0197 Extremes Lowest Obs Highest Obs 1( 1) 1( 1) 2( 2) 2( 2) 3( 3) 3( 3) 17( 4) 17( 4) 60( 5) 60( 5) Frequency Table Percents Percents Value Count Cell Cum Value Count Cell Cum 1 1 20.0 20.0 17 1 20.0 80.0 2 1 20.0 40.0 60 1 20.0 100.0 3 1 20.0 60.0 原始的5个数目清楚, 还是这50多个数目清楚? 这些输出都有意义吗?
实际上… • 对于一个统计数据,如果选择“傻瓜”软件适合该数据的选项的全部输出,那么… • 其中可能包含(很多,甚至多数)没有意义的结果(比如SPSS中的对数线性模型、非参数检验中的多重相关样本的检验等等,各种回归中的适合正态样本的检验)
而且… • 这些众多的输出,给了那些诸如检验中的“少数服从多数”的“创新者”以似是而非的“论据”。 • 许多“傻瓜”软件的输出找不到确切数学背景。只有使用编程软件才能够核对其真实意义。
统计软件的种类 • 统计软件的种类很多。 • 有些功能齐全,有些价格便宜;有些容易操作,有些需要更多的实践才能掌握。 • 还有些是专门的软件,只处理某一类统计问题。 • 最常见有几种。
统计软件的种类 • SPSS:这是一个很受欢迎的统计软件; • 它容易操作, • 输出漂亮, • 功能齐全, • 价格合理。 • 对于非统计工作者是很好的选择。
统计软件的种类 • Excel:严格说来不是统计软件,但作为数据表格软件,必然有一定统计计算功能。 • 注意,多数装Office时没有装数据分析的功能,画图功能都具备(虽然不好看)。 • 对于简单分析,Excel还算方便,但随着问题的深入,就不那么“傻瓜”,需要很麻烦地使用函数,甚至根本没有相应的方法了。
统计软件的种类 • SAS:这是功能非常齐全的软件; • 美国政府政策倾斜(“权威性”) • 许多美国公司使用。 • 价格不菲,每年交费.即使赠送,条件苛刻 • SAS公司傲慢无礼 • 尽管现在已经尽量“傻瓜化”,仍然需要一定的训练才可以进入。 • 对于基本统计课程则不那么方便。
统计软件的种类 • S-plus:这是统计学家喜爱的软件。 • 功能齐全, • 图形漂亮 • 有不断加入的各个方向统计学家编写的统计软件包。也可以自己加入算法. • 强大而又方便的编程功能,使得研究人员可以编制自己的程序来实现自己的理论和方法。 • 它也在进行“傻瓜化”以争取顾客。但主要以其方便的编程为顾客所青睐。 • 在R软件之前是统计学家的首选软件。 • 但是对于不会编程者,不那么“傻瓜”
统计软件的种类 • R软件:免费的,志愿者管理的软件。 • 其编程语言与S-plus所基于的S语言一样, • 编程方便,语言灵活,图形功能强大 • 有不断加入的各个方向统计学家编写的统计软件包。也可以自己加入自己算法的软件包. • 从网上可以不断更新和增加有关的软件包、数据和程序。可以使用其他软件编制的程序。 • 可以通过网上服务把程序变成机器语言 • 这是发展最快的软件,受到世界上统计师生的欢迎。是用户量增加最快的统计软件。 • 对于一般非统计工作者来说,主要问题是它没有“傻瓜化”。(后面对R语言还要专门介绍)
其他有关软件 • Minitab:这个软件是很方便的功能强大而又齐全的软件,也已经“傻瓜化”,在我国用的不如SPSS与SAS那么普遍。 • Statistica:也是功能强大而齐全的“傻瓜化”的软件,在我国用的也不如SAS与SPSS那么普遍。 • Eviews:这是一个主要处理回归和时间序列的软件。 • Systat: 已经被SPSS购买而消失 • GAUSS:这是一个很好用的统计软件,许多搞经济的喜欢它。主要也是编程功能强大。目前在我国使用的人不多。
其他有关软件 • MATLAB:这也是应用于各个领域的以编程为主的软件,在工程上应用广泛。编程类似于S和R。但是统计方法不多。 • FORTRAN:这是应用于各个领域的历史很长的非常优秀的编程软件,功能强大,有大量数学软件包及一定的统计软件包。计算速度比前面介绍的都快得多。但需要编程和编译。操作不那么容易。 • C/C++: 是许多软件,诸如SAS的基础;但没有软件包,编程不方便.
使用傻瓜软件的问题….. • 无法任意取出计算过程中产生的任何中间结果;只能输出软件规定的输出. • 无法在中间插入任何算法. • 无法实现软件所没有的计算.无法实现任何方法或计算方面的创新. • 是输入输出皆有限制的黑盒子. • 用语句的任何计算(即使1+1=2) 都需类似八股文的 “花架子”.
搞统计是否不需要学习编程语言, • 可以不学习,如果你… • 搞纯粹数学推导的,只搞“理论”,不面对数据, 不用计算机 • 觉得岁数太大,学不会“非傻瓜”的计算 • 不想有创新,仅使用现成方法套用 • 想永远依赖会编程的学生或别的什么人
但如果你要创新… • 你需要反复试验你的新方法 • 需要用各种数据来检验你的新方法 • 需要把你的方法和老方法进行比较 • 需要介绍自己的新方法 • 使用编程语言不可避免
现代统计学家都自己编程,比如… • Brockwell & Davis (时间序列) • Bruce & Gao (小波分析) • Bickel, et al. (非线性回归) • Hastie (广义可加模型) • Silverman (非参数密度估计) • McCullagh & Nelder (广义线性模型) • Hardell 、 Marron、范剑青(非参数回归) • Diggle , et al. (纵向数据) • ……………………………………….
毫无例外,没有任何新的重要统计方法是利用诸如SAS或 SPSS等傻瓜软件产生的。
多数SAS或 SPSS等的新统计方法软件包,是改写统计学家通过自己编程所发展的方法而来的。
在美国,很难想象一个统计学研究生不会使用编程语言在美国,很难想象一个统计学研究生不会使用编程语言
使用什么软件编程呢? • SAS、SPSS、Minitab等也有程序,但很难学,不好记,也没有任何普遍性和规律性。 • 而S (S-plus,R)、Matlab、Gauss、Fortran、C (C++)、Pascal、Basic等语言有很多共性。容易举一反三。 • 有些具有统计软件包,对统计学家则很方便。特别是S-plus软件、R软件和Gauss软件。
使用编程软件容易吗? • 以R软件为例. • 非常好学,极易入门 • 基本功能简单,和写公式一样 • 能在一个小时学会基本运算语句 • 在一天内学会编写函数(子程序)和利用软件包. • 往往困难的反而是统计内容本身
SAS专家很难实现下面并非复杂的运算 • 考虑60个观测值的回归, • 其中X和Y=2+3X1-2X2+e随机产生,X1来自U(10,20), X2来自U(-5,-8),e来自N(0,1),n=60. • 回归20次, 每一次回归之后把x15的值在目前的基础上加0.1个原始的x15值, • 输出残差e5和矩阵P=X(X’X)-1X’的第5个对角线元素h5的值,并分别点出这20个h5和e5的散点图于一张图中; • 计算这20个h5和e5的相关系数.
而对于R或者S-plus • 初学者可很快用下面几行来解决(不用任何软件包): • x1=rnorm(60,10,20);x2=runif(60,-8,-5);x=cbind(1,x1,x2);y=2+3*x1-2*x2+rnorm(60);h=NULL;e=h;i=1;while (i<=20){P=x%*%solve(t(x)%*%x)%*%t(x); h=c(h,diag(P)[5]);e=c(e,(y-P%*%y)[5]);x[5,1]=x[5,1]+x1[5]*0.1;i=i+1};par(mfrow=c(1,2));plot(h);plot(e);cor(h,e)
结果为 它们的相关系数为-0.9486753
R免费 • R 资源公开(不是黑盒子,也不是吝啬鬼) • R可以在UNIX, Windows和Macintosh运行. • R 有优秀的内在帮助系统. • R有优秀的画图功能 • 学生能够轻松地转到商业支持的 S-Plus程序(如果需要使用商业软件) • R语言有一个强大的,容易学习的语法,有许多内在的统计函数.
通过用户自编程序, R语言很容易延伸和扩大. 它就是这样成长的. • R 是计算机编程语言. 类似于UNIX语言,C语言,Pascal,Gauss语言等. • 对于熟练的编程者, 它将觉得该语言比其他语言更熟悉. • 而对计算机初学者, 学习R语言使得学习下一步的其他编程不那么困难. • 那些傻瓜软件(SAS,SPSS等)语言的语法则完全不同.
R的缺点 • 不如S-Plus在编辑输出的画图那样好 • 没有商业支持 (但有网上支持) • 需要编程, 不傻瓜.
R的历史 • S语言在1980年代后期在AT&T实验室开发. • R 项目由Auckland 大学统计系的Robert Gentleman和Ross Ihaka于1995年开始的. • 它很快得到广泛用户的欢迎. 目前它是由R核心发展团队维持;它是一个由志愿者组成的工作努力的国际团队
下载R(http://www.r-project.org/) 点击CRAN得到一批镜像网站
选择base 选择这个,下载安装文件 选择这个,下载软件包
Packages (每个都有大量数据和可以读写修改的函数/程序) • base The R Base Package • boot Bootstrap R (S-Plus) Functions (Canty) • class Functions for Classification • cluster Cluster Analysis Extended Rousseeuw et al. • concord Concordance and reliability • datasets The R Datasets Package • exactRankTests Exact Distributions for Rank and Permutation Tests • foreign Read Data Stored by Minitab, S, SAS, SPSS, Stata, Systat, dBase, ... • graphics The R Graphics Package • grDevices The R Graphics Devices and Support for Colours and Fonts • grid The Grid Graphics Package • KernSmooth Functions for kernel smoothing for Wand & Jones (1995) • lattice Lattice Graphics Interface • tools Tools for Package Development • utils The R Utils Package
Packages (继续) • MASSMain Package of Venables and Ripley's MASS • methodsFormal Methods and Classes • mgcvGAMs with GCV smoothness estimation and GAMMs by REML/PQL • multtestResampling-based multiple hypothesis testing • nlmeLinear and nonlinear mixed effects models • nnetFeed-forward Neural Networks and Multinomial Log-Linear Models • nortestTests for Normality • outliersTests for outliers • plsPartial Least Squares Regression (PLSR) and Principal Component Regression (PCR) • pls.pcrPLS and PCR functions • rpartRecursive Partitioning • SAGxStatistical Analysis of the GeneChip • smaStatistical Microarray Analysis • spatialFunctions for Kriging and Point Pattern Analysis • splinesRegression Spline Functions and Classes • statsThe R Stats Package • stats4Statistical Functions using S4 Classes • survivalSurvival analysis, including penalised likelihood. • tcltkTcl/Tk Interface • toolsTools for Package Development • utilsThe R Utils Package
Packages (网上) • 网上还有许多
所有这些Packages都是在base 和 stats package上添加的 • Base, stats包含所有固有的应用和数据 • 而其他的packages包含各统计学家自己发展的方法和数据。 • 希望你是下一个加盟这些packages的作者之一。
赋值和运算 • z = rnorm(1000000,4,0.1) • median(z) • 赋值: “=”可以用“<-”代替 • x<-z->y->w • 简单数学运算有:+,-,*,/, ^,%*%,%%(mod) %/%(整数除法)等等 • 常用的数学函数有:abs , sign , log , log2,log10 , logb, expm1, log1p(x), sqrt , exp , sin , cos , tan , acos , asin, atan , cosh , sinh, tanh