




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、统统 计计 软软 件件 和和 r 语语 言言 装了装了r没有?没有? 一个广泛接受的统计定义为:一个广泛接受的统计定义为: 统计统计是用以收集是用以收集数据数据、 分析分析数据数据和由和由数据数据得得 出结论的一组概念、出结论的一组概念、 原则和方法原则和方法. 这个定义决定了统计的命运:这个定义决定了统计的命运: 和数学及音乐不同和数学及音乐不同, 统计统计 不能欣赏自己不能欣赏自己, 它不为实它不为实 际服务就际服务就没有存在必要没有存在必要 统计必须统计必须为各个领域服务为各个领域服务 统计必须和统计必须和数据数据打交道打交道 因此因此,统计必须和统计必须和计算机计算机结合结合 搞搞“理
2、论统计理论统计”是否是否 用不着动手搞数据呢用不着动手搞数据呢? 如果倒退如果倒退几十年几十年 就可以就可以. 如果没有应用背景如果没有应用背景 文章没人要文章没人要, 基金无人给基金无人给. 现在一些人即使瞎编也要编现在一些人即使瞎编也要编 出一个应用背景来出一个应用背景来. 纯纯理论统计理论统计存在吗?存在吗? 统计和计算机统计和计算机 现代生活已离不开计算机了。现代生活已离不开计算机了。 但最早使用计算机的是统计。但最早使用计算机的是统计。 最初的计算机最初的计算机仅仅是为科学仅仅是为科学 计算而建造的。大型计算机计算而建造的。大型计算机 的最早一批用户就包含统计。的最早一批用户就包含统
3、计。 而现在统计仍然是进行数字而现在统计仍然是进行数字 计算最多的用户。计算最多的用户。 统计和计算机统计和计算机 计算机现在早已脱离了仅有计算计算机现在早已脱离了仅有计算 功能的单一模式,而成为功能的单一模式,而成为百姓生百姓生 活的一部分活的一部分。 计算机的使用,也从过去必须学计算机的使用,也从过去必须学 会计算机语言到只需要会计算机语言到只需要“傻瓜式傻瓜式” 地点击鼠标。结果也从单纯的数地点击鼠标。结果也从单纯的数 字输出到包括漂亮的表格和图形字输出到包括漂亮的表格和图形 的各种形式。的各种形式。 统计软件统计软件 统计软件的发展,也使得统统计软件的发展,也使得统 计从统计学家的圈内
4、游戏变计从统计学家的圈内游戏变 成了大众的游戏。成了大众的游戏。 只要输入数据,点几下鼠标,只要输入数据,点几下鼠标, 做一些选项,马上就得到令做一些选项,马上就得到令 人惊叹的人惊叹的漂亮结果了漂亮结果了。 统计软件统计软件 是否傻瓜式的统计软件使用是否傻瓜式的统计软件使用 可以代替统计课程了?可以代替统计课程了? 当然不是。当然不是。 数据的整理和识别,方法的数据的整理和识别,方法的 选用,计算机输出结果的理选用,计算机输出结果的理 解都不象使用傻瓜相机那样解都不象使用傻瓜相机那样 简单可靠。简单可靠。 统计软件的问题统计软件的问题 诸如法律和医学的软件都有不少诸如法律和医学的软件都有不少
5、 警告,不时提醒你去咨询专家。警告,不时提醒你去咨询专家。 这是注意饭碗的律师和大夫的高这是注意饭碗的律师和大夫的高 明之处。明之处。 但统计软件则不那么负责。只要但统计软件则不那么负责。只要 数据格式无误、方法不矛盾而且数据格式无误、方法不矛盾而且 不用零作为除数就一定给你结果,不用零作为除数就一定给你结果, 而且而且没有任何警告没有任何警告。 可能统计学家缺乏商业头脑。可能统计学家缺乏商业头脑。 统计软件的问题统计软件的问题 另外,统计软件另外,统计软件输出的结果太多输出的结果太多; 即使是同样的方法,不同软件输即使是同样的方法,不同软件输 出的内容还不一样;有时同样的出的内容还不一样;有
6、时同样的 内容名称也不一样。内容名称也不一样。 这就使得使用者大伤脑筋。即使这就使得使用者大伤脑筋。即使 统计学家也不一定能解释所有的统计学家也不一定能解释所有的 输出。输出。 因此,就应该特别留神,明白自因此,就应该特别留神,明白自 己是在干什么。己是在干什么。不要在得到一堆不要在得到一堆 毫无意义的垃圾之后还沾沾自喜。毫无意义的垃圾之后还沾沾自喜。 data test; input x; cards; 1 2 3 17 60 run; proc univariate freq normal; run; 随意键入几行随意键入几行sas语句和语句和5个数目个数目. 得到下面结果得到下面结果,一
7、共一共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.563
8、057 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 prw 0.0197 extremes lowest obs highest obs 1( 1) 1( 1) 2( 2) 2( 2)
9、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多个数目清楚多个数目清楚? 这些输出都有意义吗这些输出都有意义吗? 实际上实际上 对于一个统计数据,如果选择对于一个统计数据,如果选择 “傻瓜傻瓜”软件适合该数据的选
10、软件适合该数据的选 项的全部输出,那么项的全部输出,那么 其中可能包含(很多,甚至多其中可能包含(很多,甚至多 数)没有意义的结果数)没有意义的结果(比如(比如 spss中的对数线性模型、非参中的对数线性模型、非参 数检验中的多重相关样本的检数检验中的多重相关样本的检 验等等,各种回归中的适合正验等等,各种回归中的适合正 态样本的检验)态样本的检验) 而且而且 这些众多的输出,给了那些这些众多的输出,给了那些 诸如检验中的诸如检验中的“少数服从多少数服从多 数数”的的“创新者创新者”以似是而以似是而 非的非的“论据论据”。 许多许多“傻瓜傻瓜”软件的输出找软件的输出找 不到确切数学背景。只有使
11、不到确切数学背景。只有使 用编程软件才能够核对其真用编程软件才能够核对其真 实意义。实意义。 统计软件的种类统计软件的种类 统计软件的种类很多。统计软件的种类很多。 有些功能齐全,有些价格便有些功能齐全,有些价格便 宜;有些容易操作,有些需宜;有些容易操作,有些需 要更多的实践才能掌握。要更多的实践才能掌握。 还有些是专门的软件,只处还有些是专门的软件,只处 理某一类统计问题。理某一类统计问题。 最常见有几种。最常见有几种。 统计软件的种类统计软件的种类 spss:这是一个很受欢迎的这是一个很受欢迎的 统计软件;统计软件; 它容易操作,它容易操作, 输出漂亮,输出漂亮, 功能齐全,功能齐全,
12、价格合理。价格合理。 对于非统计工作者是很好的对于非统计工作者是很好的 选择。选择。 统计软件的种类统计软件的种类 excel:严格说来不是统计软件,严格说来不是统计软件, 但作为数据表格软件,必然有一定但作为数据表格软件,必然有一定 统计计算功能。统计计算功能。 注意,多数装注意,多数装office时没有装数据时没有装数据 分析的功能,画图功能都具备分析的功能,画图功能都具备(虽虽 然不好看然不好看)。 对于简单分析,对于简单分析,excel还算方便,还算方便, 但随着问题的深入,就不那么但随着问题的深入,就不那么“傻傻 瓜瓜”,需要很麻烦地使用函数,甚,需要很麻烦地使用函数,甚 至根本没有
13、相应的方法了。至根本没有相应的方法了。 统计软件的种类统计软件的种类 sas:这是功能这是功能非常非常齐全的软件;齐全的软件; 美国政府政策倾斜美国政府政策倾斜(“权威性权威性”) 许多美国公司使用。许多美国公司使用。 价格不菲价格不菲,每年交费每年交费.即使赠送即使赠送,条条 件苛刻件苛刻 sas公司傲慢无礼公司傲慢无礼 尽管现在已经尽量尽管现在已经尽量“傻瓜化傻瓜化”, 仍然需要一定的训练才可以进入。仍然需要一定的训练才可以进入。 对于基本统计课程则不那么方便。对于基本统计课程则不那么方便。 统计软件的种类统计软件的种类 s-plus:这是:这是统计学家统计学家喜爱的软件。喜爱的软件。 功
14、能齐全,功能齐全, 图形漂亮图形漂亮 有不断加入有不断加入的各个方向统计学家编写的统的各个方向统计学家编写的统 计软件包。也可以自己加入算法计软件包。也可以自己加入算法. 强大而又方便的编程功能强大而又方便的编程功能,使得研究人员,使得研究人员 可以编制自己的程序来实现自己的理论和可以编制自己的程序来实现自己的理论和 方法。方法。 它也在进行它也在进行“傻瓜化傻瓜化”以争取顾客。但主以争取顾客。但主 要以其要以其方便的编程方便的编程为顾客所青睐。为顾客所青睐。 在在r软件之前软件之前是是统计学家统计学家的首选软件。的首选软件。 但是对于不会编程者但是对于不会编程者,不那么不那么“傻瓜傻瓜” 统
15、计软件的种类统计软件的种类 r软件:软件:免费的免费的,志愿者管理的软件。志愿者管理的软件。 其编程语言与其编程语言与s-plus所基于的所基于的s语言一样,语言一样, 编程方便,语言灵活,图形功能强大编程方便,语言灵活,图形功能强大 有不断加入的各个方向统计学家编写的统计软件有不断加入的各个方向统计学家编写的统计软件 包。包。也可以自己加入自己算法的软件包也可以自己加入自己算法的软件包. 从网上可以不断更新和增加有关的软件包、数据从网上可以不断更新和增加有关的软件包、数据 和程序。可以使用其他软件编制的程序。和程序。可以使用其他软件编制的程序。 可以通过网上服务把程序变成机器语言可以通过网上
16、服务把程序变成机器语言 这是这是发展最快发展最快的软件,受到世界上统计师生的欢的软件,受到世界上统计师生的欢 迎。迎。是用户量增加最快的统计软件是用户量增加最快的统计软件。 对于一般非统计工作者来说,主要问题是它没有对于一般非统计工作者来说,主要问题是它没有 “傻瓜化傻瓜化”。(后面对后面对r语言还要专门介绍语言还要专门介绍) 其他有关软件其他有关软件 minitab:这个软件是很方便的功能强大这个软件是很方便的功能强大 而又齐全的软件,也已经而又齐全的软件,也已经“傻瓜化傻瓜化”, 在我国用的不如在我国用的不如spss与与sas那么普遍。那么普遍。 statistica:也是功能强大而齐全的
17、也是功能强大而齐全的“傻傻 瓜化瓜化”的软件,在我国用的也不如的软件,在我国用的也不如sas 与与spss那么普遍。那么普遍。 eviews:这是一个主要处理回归和时间这是一个主要处理回归和时间 序列的软件。序列的软件。 systat: 已经被已经被spss购买而消失购买而消失 gauss:这是一个很好用的统计软件,这是一个很好用的统计软件, 许多搞经济的喜欢它。主要也是编程功许多搞经济的喜欢它。主要也是编程功 能强大。目前在我国使用的人不多。能强大。目前在我国使用的人不多。 其他有关软件其他有关软件 matlab:这也是应用于各个领域的以编这也是应用于各个领域的以编 程为主的软件,在工程上应
18、用广泛。程为主的软件,在工程上应用广泛。编程编程 类似于类似于s和和r。但是统计方法不多。但是统计方法不多。 fortran:这是应用于各个领域的历史这是应用于各个领域的历史 很长的非常优秀的编程软件,功能强大,很长的非常优秀的编程软件,功能强大, 有大量数学软件包及一定的统计软件包。有大量数学软件包及一定的统计软件包。 计算速度比前面介绍的都快得多。但需要计算速度比前面介绍的都快得多。但需要 编程和编译。操作不那么容易。编程和编译。操作不那么容易。 c/c+: 是许多软件是许多软件,诸如诸如sas的基础的基础;但没但没 有软件包有软件包,编程不方便编程不方便. 使用傻瓜软件的问题使用傻瓜软件
19、的问题. 无法无法任意取出任意取出计算过程中产生的计算过程中产生的 任何任何中间结果中间结果; ;只能输出软件规定只能输出软件规定 的输出的输出. . 无法在中间无法在中间插入任何算法插入任何算法. . 无法实现软件所无法实现软件所没有的没有的计算计算. .无法无法 实现任何方法或计算方面的创新实现任何方法或计算方面的创新. . 是输入输出皆有限制的是输入输出皆有限制的黑盒子黑盒子. . 用语句的任何计算用语句的任何计算( (即使即使1+1=2) 1+1=2) 都需类似八股文的都需类似八股文的 “ “花架子花架子”. . 搞统计是否搞统计是否不需要不需要学习编程语言,学习编程语言, 可以不学习
20、可以不学习, ,如果你如果你 搞纯粹数学推导的搞纯粹数学推导的, ,只搞只搞“理论理论 ”, ,不面对数据不面对数据, , 不用计算机不用计算机 觉得岁数太大觉得岁数太大, ,学不会学不会“非傻瓜非傻瓜” 的计算的计算 不想有创新不想有创新, ,仅使用现成方法套用仅使用现成方法套用 想永远依赖会编程的学生或别的想永远依赖会编程的学生或别的 什么人什么人 但如果你要创新但如果你要创新 你需要反复试验你的新方法你需要反复试验你的新方法 需要用各种数据来检验你的需要用各种数据来检验你的 新方法新方法 需要把你的方法和老方法进需要把你的方法和老方法进 行比较行比较 需要介绍自己的新方法需要介绍自己的新
21、方法 使用编程语言不可避免使用编程语言不可避免 没有任何别的选择没有任何别的选择 现代统计学家都自己编程现代统计学家都自己编程, ,比如比如 brockwell ; 计算这计算这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%*%sol
22、ve(t(x)%*%x)%*%t(x); h=c(h,diag(p)5);e=c(e,(y-p%*%y)5); x5,1=x5,1+x15*0.1;i=i+1;par(mfrow=c(1, 2);plot(h);plot(e);cor(h,e) 5101520 0.81.0 index h 5101520 0.00.51.0 index e 结果为结果为 它们的相关系数为它们的相关系数为-0.9486753 r-语言语言/软件软件 r免费免费 r 资源公开资源公开(不是黑盒子不是黑盒子,也不是吝啬鬼也不是吝啬鬼) r可以在可以在unix, windows和和macintosh
23、 运行运行. r 有优秀的有优秀的内在帮助系统内在帮助系统. r有优秀的有优秀的画图功能画图功能 学生能够轻松地学生能够轻松地转转到商业支持的到商业支持的 s- plus程序程序(如果需要使用商业软件如果需要使用商业软件) r语言有一个语言有一个强大的强大的,容易学习容易学习的语法的语法, 有许多内在的统计函数有许多内在的统计函数. 通过用户通过用户自编程序自编程序, r语言很容易语言很容易延延 伸和扩大伸和扩大. 它就是这样成长的它就是这样成长的. r 是计算机编程语言是计算机编程语言. 类似于类似于unix 语言语言,c语言语言,pascal,gauss语言等语言等. 对于熟练的编程者对于
24、熟练的编程者, 它将觉得该语它将觉得该语 言言比其他语言更熟悉比其他语言更熟悉. 而对计算机初学者而对计算机初学者, 学习学习r语言语言使得使得 学习下一步的其他编程不那么困难学习下一步的其他编程不那么困难. 那些傻瓜软件那些傻瓜软件(sas,spss等等)语言的语言的 语法则完全不同语法则完全不同. r的缺点的缺点 不如不如s-plus在编辑输出在编辑输出 的画图那样好的画图那样好 没有商业支持没有商业支持 (但有网但有网 上支持上支持) 需要编程需要编程, 不傻瓜不傻瓜. r的历史的历史 s语言在语言在1980年代后期在年代后期在at它它 是一个由志愿者组成的工作努力是一个由志愿者组成的工
25、作努力 的国际团队的国际团队 r里面有什么里面有什么? packages (每个都有大量数据和可(每个都有大量数据和可 以读写修改的函数以读写修改的函数/程序)程序) base the r base package boot bootstrap r (s-plus) functions (canty) class functions for classification cluster functions for clustering (by rousseeuw et al.) ctest classical tests eda exploratory data analysis foreig
26、n read data stored by minitab, sas, spss, . grid the grid graphics package kernsmooth functions for kernel smoothing for wand w3 分布和产生随机数分布和产生随机数 正态分布正态分布: pnorm(1.2,2,1);dnorm(1.2,2,1); qnorm(.7,2,1);rnorm(10,0,1)#rnorm(10) t分布分布:pt(1.2,1);dt(1.2,2);qt(.7,1);rt(10,1) 此外还有此外还有指数分布、指数分布、f分布、分布、“卡方卡方”
27、分布、分布、 beta分布、二项分布、分布、二项分布、cauchy分布、分布、 gamma分布、几何分布、超几何分布、对分布、几何分布、超几何分布、对 数正态分布、数正态分布、logistic分布、负二项分布、分布、负二项分布、 poisson分布、均匀分布、分布、均匀分布、weibull分布、分布、 willcoxon分布等分布等 变元可以是向量变元可以是向量! 向量运算向量运算 x=rep(0,10);z=1:3;x+z 1 1 2 3 1 2 3 1 2 3 1 warning message: longer object length is not a multiple of shor
28、ter object length in: x + z x*z 1 0 0 0 0 0 0 0 0 0 0 warning message: longer object length is not a multiple of shorter object length in: x * z rev(x) z=c(no cat,has ,nine,tails) z1=no cat 1 true 向量名字和向量名字和append x=1:3;names(x)=letters1:3 x a b c 1 2 3 append(x,runif(3),after=2) a b c 1.0000000 2.0
29、000000 0.3107987 0.7505149 0.5752226 3.0000000 向量赋值向量赋值 z=1:5 z7=8;z 1 1 2 3 4 5 na 8 z=null zc(1,3,5)=1:3; z 1 1 na 2 na 3 rnorm(10)c(2,5) z-c(1,3) #去掉第去掉第1、3元素元素. z(length(z)-4):length(z) #最后五个元素最后五个元素. 向量的大小次序向量的大小次序 z = s a m p l e ( 1 : 1 0 0 , 1 0 ) ; z #比较比较sample(1:100,10,rep=t) 1 75 68 28 4
30、2 17 21 96 34 69 47 order(z) 1 5 6 3 8 4 10 2 9 1 7 zorder(z) 1 17 21 28 34 42 47 68 69 75 96 sort(z) 1 17 21 28 34 42 47 68 69 75 96 which(z=max(z)#给出下标给出下标 matrix x=matrix(runif(20),4,5) x ,1 ,2 ,3 ,4 ,5 1, 0.7983678 0.04607601 0.04555323 0.8594483 0.73089500 2, 0.6559851 0.79562222 0.02948270 0.1
31、453364 0.79552838 3, 0.6759171 0.56193147 0.48286653 0.2419931 0.56069988 4, 0.1183701 0.80652627 0.49405167 0.6523137 0.08345406 x=matrix(1:20,4,5);x ,1 ,2 ,3 ,4 ,5 1, 1 5 9 13 17 2, 2 6 10 14 18 3, 3 7 11 15 19 4, 4 8 12 16 20 x=matrix(1:20,4,5,byrow=t);x ,1 ,2 ,3 ,4 ,5 1, 1 2 3 4 5 2, 6 7 8 9 10
32、3, 11 12 13 14 15 4, 16 17 18 19 20 一些简单函数一些简单函数 max,min,length,mean,median, fivenum,quantile,unique,sd,var,ran ge,rep,diff,sort,order,sum,cumsum, prod,cumprod,rev,print,sample,seq, exp,pi 矩阵的行和列矩阵的行和列(子集子集) nrow(x); ncol(x);dim(x)#行列数目行列数目 x=matrix(rnorm(24),4,6) xc(2,1),#第第2和第和第1行行 x,c(1,3) #第第1和第
33、和第3列列 x2,1 #第第2,1元素元素 xx,10,1 #第第1列大于列大于0的元素的元素 sum(x,10) #第第1列大于列大于0的元素的个数的元素的个数 sum(x,10all(x!=0);any(x0);(1:10)x0 x=sample(1:7,5,rep=t);unique(x) 矩阵的转置和逆矩阵矩阵的转置和逆矩阵 x=matrix(runif(9),3,3);x ,1 ,2 ,3 1, 0.6747652 0.9954731 0.7524502 2, 0.3090199 0.2390141 0.2472961 3, 0.5102675 0.9515505 0.6082803
34、 t(x) ,1 ,2 ,3 1, 0.6747652 0.3090199 0.5102675 2, 0.9954731 0.2390141 0.9515505 3, 0.7524502 0.2472961 0.6082803 solve(x) # solve(a,b)可以解可以解ax=b方方 程程 ,1 ,2 ,3 1, -12.313293 15.125819 9.082300 2, -8.459725 3.627898 8.989864 3, 23.563034 -18.363808 -20.037986 警告警告:计算机中的计算机中的0是什么是什么? x%*%solve(x) ,1 ,
35、2 ,3 1, 1.000000e+00 -9.454243e-17 -3.911801e-16 2, 5.494737e-16 1.000000e+00 3.248270e-16 3, -3.018419e-16 1.804980e-15 1.000000e+00 要用线性代数的知识来判断诸如有要用线性代数的知识来判断诸如有 多少非零特征根等问题多少非零特征根等问题.假定假定v是特是特 征 值 组 成 的 向 量征 值 组 成 的 向 量 , 不 能 用 诸 如不 能 用 诸 如 sum(v!=0) 等方法来判断非零特征等方法来判断非零特征 根的数目根的数目! matrix x ,1 ,2
36、,3 ,4 ,5 1, 0.5474306 0.2362356 0.687007107 0.4036998 0.5255839 2, 0.8234363 0.4922711 0.960554564 0.4704976 0.1327870 3, 0.1861151 0.8461655 0.390523424 0.2202575 0.4057607 4, 0.8117521 0.5375946 0.004505845 0.4821567 0.7644741 is.matrix(x) 1 true x1,2 x1, x,2 dim(x)#得到维数得到维数(4,5) array x=array(run
37、if(24),c(4,3,2) is.matrix(x) #可由可由dim(x)得到维数得到维数(4,3,2) 1 false x , , 1 ,1 ,2 ,3 1, 0.3512615 0.7270611 0.009055522 2, 0.1444965 0.2527673 0.697977027 3, 0.6658176 0.6638542 0.773747542 4, 0.4258436 0.4168940 0.634235148 , , 2 ,1 ,2 ,3 1, 0.3664152 0.9633497 0.5628006 2, 0.3466645 0.5036830 0.154298
38、6 3, 0.4552553 0.1289775 0.8423017 4, 0.1074899 0.3841463 0.7648297 array的子集的子集 x=array(1:24,c(4,3,2) xc(1,3), , , 1 ,1 ,2 ,3 1, 1 5 9 2, 3 7 11 , , 2 ,1 ,2 ,3 1, 13 17 21 2, 15 19 23 矩阵乘法及行列运算矩阵乘法及行列运算 x=matrix(1:30,5,6);y=matrix(rnorm(20),4,5) y%*%x ,1 ,2 ,3 ,4 ,5 ,6 1, -3.231808 -8.13791204 -13.0
39、44017 -17.950121 -22.856225 -27.762330 2, -14.072030 -39.33640851 -64.600787 -89.865165 -115.129543 -140.393921 3, -1.750057 -0.02764783 1.694761 3.417170 5.139578 6.861987 4, 5.862412 9.78064218 13.698872 17.617103 21.535333 25.453563 apply(x,1,mean) 1 13.5 14.5 15.5 16.5 17.5 apply(x,2,sum) 1 15 4
40、0 65 90 115 140 apply(x,2,prod) 1 120 30240 360360 1860480 6375600 17100720 array的维运算的维运算 x=array(1:24,c(4,3,2) apply(x,1,mean) 1 11 12 13 14 apply(x,1:2,sum) ,1 ,2 ,3 1, 14 22 30 2, 16 24 32 3, 18 26 34 4, 20 28 36 apply(x,c(1,3),prod) ,1 ,2 1, 45 4641 2, 120 5544 3, 231 6555 4, 384 7680 矩阵与向量之间的运算
41、矩阵与向量之间的运算 sweep(x,1,1:5,*) ,1 ,2 ,3 ,4 ,5 ,6 1, 1 6 11 16 21 26 2, 4 14 24 34 44 54 3, 9 24 39 54 69 84 4, 16 36 56 76 96 116 5, 25 50 75 100 125 150 x*1:5 sweep(x,2,1:6,+) ,1 ,2 ,3 ,4 ,5 ,6 1, 2 8 14 20 26 32 2, 3 9 15 21 27 33 3, 4 10 16 22 28 34 4, 5 11 17 23 29 35 5, 6 12 18 24 30 36 array和矩阵和矩
42、阵/向量向量/array之间的运算之间的运算 z=array(1:24,c(2,3,4)#注意排列次序注意排列次序 z , , 1 ,1 ,2 ,3 1, 1 3 5 2, 2 4 6 , , 2 ,1 ,2 ,3 1, 7 9 11 2, 8 10 12 , , 3 ,1 ,2 ,3 1, 13 15 17 2, 14 16 18 , , 4 ,1 ,2 ,3 1, 19 21 23 2, 20 22 24 array和矩阵和矩阵/向量向量/array之间的运算之间的运算 sweep(z,1,1:2,-) , , 1 ,1 ,2 ,3 1, 0 2 4 2, 0 2 4 , , 2 ,1 ,
43、2 ,3 1, 6 8 10 2, 6 8 10 , , 3 ,1 ,2 ,3 1, 12 14 16 2, 12 14 16 , , 4 ,1 ,2 ,3 1, 18 20 22 2, 18 20 22 array和矩阵和矩阵/向量向量/array之间的运算之间的运算 sweep(z,c(1,2),matrix(1:6,2,3),-) , , 1 ,1 ,2 ,3 1, 0 0 0 2, 0 0 0 , , 2 ,1 ,2 ,3 1, 6 6 6 2, 6 6 6 , , 3 ,1 ,2 ,3 1, 12 12 12 2, 12 12 12 , , 4 ,1 ,2 ,3 1, 18 18 1
44、8 2, 18 18 18 外积外积(产生矩阵或产生矩阵或array) outer(1:2,rep(1,2) ,1 ,2 1, 1 1 2, 2 2 outer(1:2,matrix(rep(1,6),3,2) , , 1 ,1 ,2 ,3 1, 1 1 1 2, 2 2 2 , , 2 ,1 ,2 ,3 1, 1 1 1 2, 2 2 2 list(set of objects) list可以是任何对象的集合可以是任何对象的集合(包括包括lists) z=list(1:3,tom=c(1:2, a=list(r,letters1:5),w=hi!) z1;z2;z$t;z$t$a2;z$t3
45、;z$t$w attributes(z)#属性属性! $names 1 tom attributes(matrix(1:6,2,3) $dim 1 2 3 矩阵矩阵,array及其维名字及其维名字 x=matrix(1:12,nrow=3,dimnamesx=matrix(1:12,nrow=3,dimnames=list(c(i,=list(c(i, ii,iii),paste(x,1:4,sep=)ii,iii),paste(x,1:4,sep=) x1 x2 x3 x4 i 1 4 7 10 ii 2 5 8 11 iii 3 6 9 12 y=array(1:12,c(3,2,2),d
46、imnamesy=array(1:12,c(3,2,2),dimnames=list(c(i=list(c(i , i i , i i i ) , p a s t e ( x , 1 : 2 , i i , i i i ) , p a s t e ( x , 1 : 2 sep=),paste(y,1:2, sep=)sep=),paste(y,1:2, sep=) , , y1 x1 x2 i 1 4 ii 2 5 iii 3 6 , , y2 x1 x2 i 7 10 ii 8 11 iii 9 12 data.frame x=matrix(1:6,2,3) x=as.data.frame
47、(x);x v1 v2 v3 1 1 3 5 2 2 4 6 x$v2 1 3 4 x$v2 1 3 4 attributes(x) $names 1 v1 v2 v3 $s 1 1 2 $class 1 data.frame data.frame names(x)=c(toyota,gm,hun da) s(x)=c(2001,2002) x toyota gm hunda 2001 1 3 5 2002 2 4 6 x$gm 1 3 4 data.frame attach(x) gm 1 3 4 detach(x) gm error: object gm n
48、ot found 直接手工输入和编辑数据直接手工输入和编辑数据 直接敲入直接敲入:x=c(1,2,7,8,) 或者或者 x=scan() 1 2 7 8 .(以以“enter”两次来结束两次来结束) fix(x)(通过编辑修改数据通过编辑修改数据) categorical data a survey asks people if they smoke or not. the data is yes, no, no, yes, yes x=c(yes,no,no,yes,yes) table(x);x factor(x) barplot:suppose, a group of 25 people
49、 are surveyed as to their beer- drinking preference. the categories were (1) domestic can, (2) domestic bottle, (3) microbrew and (4) import. the raw data is 3 4 1 1 3 4 3 3 1 3 2 1 2 1 2 3 2 3 1 1 1 1 4 3 1 beer = scan() 3 4 1 1 3 4 3 3 1 3 2 1 2 1 2 3 2 3 1 1 1 1 4 3 1 barplot(beer) # this isnt co
50、rrect barplot(table(beer) # yes, call with summarized data barplot(table(beer)/length(beer) # divide by n for proportion table(beer)/length(beer) ceo salaries: suppose, ceo yearly compensations are sampled and the following are found (in millions). (this is before being indicted for cooking the book
51、s.) 12 .4 5 2 50 8 3 1 4 0.25 sals = scan() # read in with scan 12 .4 5 2 50 8 3 1 4 0.25 mean(sals) ;var(sals) :sd(sals) ;median(sals) fivenum(sals) # min, lower hinge, median, upper hinge, max summary(sals) data=c(10, 17, 18, 25, 28,28); summary(data); quantile(data,.25); quantile(data,c(.25,.75)
52、sort(sals); fivenum(sals);summary(sals) mean(sals,trim=1/10) ;mean(sals,trim=2/10) iqr(sals) mad:median|xi-median(x)|(1.4826) mad(sals) median(abs(sals - median(sals) # without median(abs(sals - median(sals) * 1.4826 stem-and-leaf charts suppose you have the box score of a basketball game and the fo
53、llowing points per game for players on both teams 2 3 16 23 14 12 4 13 2 0 0 0 6 28 31 14 4 8 2 5 scores = scan() 2 3 16 23 14 12 4 13 2 0 0 0 6 28 31 14 4 8 2 5 apropos(stem)#apropos returns a character vector giving the names of all objects in the search list matching what. 如如 apropos(“stem”) 1 “s
54、tem” “system” “system.file” “system.time” 参看参看find(stem) stem(scores);stem(scores,scale=2) the salaries could be placed into broad categories of 0-1 million, 1-5 million and over 5 million. to do this using r one uses the cut() function and the table() function. suppose the salaries are again 12 .4
55、5 2 50 8 3 1 4 .25 and we want to break that data into the intervals 0; 1; (1; 5; (5; 50 sals = c(12, .4, 5, 2, 50, 8, 3, 1, 4, .25) # enter data cats = cut(sals,breaks=c(0,1,5,max(sals) # the breaks cats # view the values table(cats) # organize levels(cats) = c(poor,rich,rolling in it) table(cats)
56、histograms: suppose the top 25 ranked movies made the following gross receipts for a week 4 29.6 28.2 19.6 13.7 13.0 7.8 3.4 2.0 1.9 1.0 0.7 0.4 0.4 0.3 0.3 0.3 0.3 0.3 0.2 0.2 0.2 0.1 0.1 0.1 0.1 0.1 x=scan() 29.6 28.2 19.6 13.7 13.0 7.8 3.4 2.0 1.9 1.0 0.7 0.4 0.4 0.3 0.3 0.3 0.3 0.3 0.2 0.2 0.2 0
57、.1 0.1 0.1 0.1 0.1 hist(x) # frequencies hist(x,probability=true) # proportions (or probabilities) rug(jitter(x) # add tick marks hist(x,breaks=10) # 10 breaks, or just hist(x,10) hist(x,breaks=c(0,1,2,3,4,5,10,20,max(x) # breaks frequency polygons: x = c(.314,.289,.282,.279,.275,.267,.266,.265,.256
58、,.250,.249,.211,.161) tmp = hist(x) # store the results lines(c(min(tmp$breaks),tmp$mids,max(tmp$brea ks),c(0,tmp$counts,0),type=l) data(faithful) attach(faithful) # make eruptions visible hist(eruptions,15,prob=t) # proportions, not frequencies lines(density(eruptions) # lines makes a curve, defaul
59、t bandwidth handling bivariate categorical data: person smokes amount of studying 1 y less than 5 hours 2 n 5 - 10 hours 3 n 5 - 10 hours 4 y more than 10 hours 5 n more than 10 hours 6 y less than 5 hours 7 y 5 - 10 hours 8 y less than 5 hours 9 n more than 5 hours 10 y 5 - 10 hours smokes = c(y,n,
60、n,y,n,y,y,y,n,y) amount = c(1,2,2,3,3,1,2,1,3,2) table(smokes,amount) tmp=table(smokes,amount) # store the table options(digits=3) # only print 3 decimal places prop.table(tmp,1) # the rows sum to 1 now prop.table(tmp,2) # the columns sum to 1 now really sweep(x, margin, margin.table(x, margin), /)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025云南玉溪易门县华亿投资有限责任公司招聘5人备考练习题库及答案解析
- 2025云南省曲靖市富源县营上交管中队招聘警务辅助人员(3人)备考练习题库及答案解析
- 2025广西钦州供电局项目资料员招聘24人考试模拟试题及答案解析
- 2025广西民族中等专业学校教师招聘3人笔试备考题库及答案解析
- 2025广西北海市市委市直机关工委选聘市直机关党建专员1人考试模拟试题及答案解析
- 2025福建三明大田县公安局招聘警务辅助人员5人笔试备考试题及答案解析
- 2025福建莆田市司法局选任人民监督员50人考试参考题库附答案解析
- 2025安徽合肥庐江县应急管理局所属事业单位选调工作人员2人笔试备考题库及答案解析
- 2025生产科-原材料供应合同
- 2025年智慧社区安防系统全面维护与安全保障服务协议
- 9第九章-心境障碍PPT
- 丝印首件检验记录表
- 陕西省中考数学历年(2016-2022年)真题分类汇编专题8四边形及答案
- 新概念第一册重点句型300句
- GB/T 923-2009六角盖形螺母
- GB 19761-2009通风机能效限定值及能效等级
- 学会关心-教育的另一种模式课件
- 药物的结构性质与生物活性
- 少年中国说五线谱乐谱
- 国际公法学-第三章国际法与国内法的关系
- 广东广州市番禺区教育局招考聘用公办中小学临聘教师17人(必考题)模拟卷
评论
0/150
提交评论