统计软件和R语言.ppt
统计软件和R语言,装了R没有?,一个广泛接受的统计定义为:,统计是用以收集数据、分析数据和由数据得出结论的一组概念、原则和方法.,这个定义决定了统计的命运:,和数学及音乐不同,统计不能欣赏自己,它不为实际服务就没有存在必要统计必须为各个领域服务统计必须和数据打交道因此,统计必须和计算机结合,搞“理论统计”是否用不着动手搞数据呢?,如果倒退几十年就可以.,如果没有应用背景,文章没人要,基金无人给.现在一些人即使瞎编也要编出一个应用背景来.纯理论统计存在吗?,统计和计算机,现代生活已离不开计算机了。但最早使用计算机的是统计。最初的计算机仅仅是为科学计算而建造的。大型计算机的最早一批用户就包含统计。而现在统计仍然是进行数字计算最多的用户。,统计和计算机,计算机现在早已脱离了仅有计算功能的单一模式,而成为百姓生活的一部分。计算机的使用,也从过去必须学会计算机语言到只需要“傻瓜式”地点击鼠标。结果也从单纯的数字输出到包括漂亮的表格和图形的各种形式。,统计软件,统计软件的发展,也使得统计从统计学家的圈内游戏变成了大众的游戏。只要输入数据,点几下鼠标,做一些选项,马上就得到令人惊叹的漂亮结果了。,统计软件,是否傻瓜式的统计软件使用可以代替统计课程了?当然不是。数据的整理和识别,方法的选用,计算机输出结果的理解都不象使用傻瓜相机那样简单可靠。,统计软件的问题,诸如法律和医学的软件都有不少警告,不时提醒你去咨询专家。这是注意饭碗的律师和大夫的高明之处。但统计软件则不那么负责。只要数据格式无误、方法不矛盾而且不用零作为除数就一定给你结果,而且没有任何警告。可能统计学家缺乏商业头脑。,统计软件的问题,另外,统计软件输出的结果太多;即使是同样的方法,不同软件输出的内容还不一样;有时同样的内容名称也不一样。这就使得使用者大伤脑筋。即使统计学家也不一定能解释所有的输出。因此,就应该特别留神,明白自己是在干什么。不要在得到一堆毫无意义的垃圾之后还沾沾自喜。,data test;input x;cards;1231760run;proc univariate freq normal;run;,随意键入几行SAS语句和5个数目.,得到下面结果,一共50多个数目(你能够解释多少?你需要多少?).,The SAS System 15:33 Friday,September 12,2003 1Univariate ProcedureVariable=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 PrW 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(XX)-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);x5,1=x5,1+x15*0.1;i=i+1;par(mfrow=c(1,2);plot(h);plot(e);cor(h,e),结果为,它们的相关系数为-0.9486753,R-语言/软件,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它是一个由志愿者组成的工作努力的国际团队,R里面有什么?,Packages(每个都有大量数据和可以读写修改的函数/程序),base The R base packageboot Bootstrap R(S-Plus)Functions(Canty)class Functions for classificationcluster Functions for clustering(by Rousseeuw et al.)ctest Classical Testseda Exploratory Data Analysisforeign Read data stored by Minitab,SAS,SPSS,.grid The Grid Graphics PackageKernSmooth Functions for kernel smoothing for Wand&Jones(1995)lattice Lattice Graphicslqs Resistant Regression and Covariance EstimationMASS Main Library of Venables and Ripleys MASSmethods Formal Methods and Classesmgcv Multiple smoothing parameter estimation and GAMs by GCV,Packages(继续),modreg Modern Regression:Smoothing and Local Methodsmva Classical Multivariate Analysisnlme Linear and nonlinear mixed effects modelsnls Nonlinear regressionnnet Feed-forward neural networks and multinomial log-linear modelsrpart Recursive partitioningspatial functions for kriging and point pattern analysissplines Regression Spline Functions and Classesstepfun Step Functions,including Empirical Distributionssurvival Survival analysis,including penalised likelihood.tcltk Interface to Tcl/Tktools Tools for Package Development and Administrationts Time series functions,所有这些Packages都是在base package上添加的,Base包含所有固有的应用和数据而其他的packages包含各统计学家自己发展的方法和数据。希望你是下一个加盟这些packages的作者之一。,赋值和运算,z=rnorm(1000000,4,0.1)median(z)“=”可以用“y-w简单数学运算有+,-,*,/,%*%,%等等,序列和向量,z=seq(-1,10,length=100)z=seq(-1,10,len=100)z=seq(10,-1,-1)z=10:-1x=rep(3,1:3)x=rep(3:5,1:3)x1 3 4 4 5 5 5x=rep(c(1,10),c(4,5)w=c(1,3,x,z);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分布、“卡方”分布、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 shorter 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 cat1 TRUE,向量名字和append,x=1:3;names(x)=LETTERS1:3xA B C 1 2 3 append(x,runif(3),after=2)A B C 1.0000000 2.0000000 0.3107987 0.7505149 0.5752226 3.0000000,向量赋值,z=1:5z7=8;z1 1 2 3 4 5 NA 8z=NULLzc(1,3,5)=1:3;z1 1 NA 2 NA 3rnorm(10)c(2,5)z-c(1,3)#去掉第1、3元素.z(length(z)-4):length(z)#最后五个元素.,向量的大小次序,z=sample(1:100,10);z#比较sample(1:100,10,rep=T)1 75 68 28 42 17 21 96 34 69 47 order(z)1 5 6 3 8 4 10 2 9 1 7zorder(z)1 17 21 28 34 42 47 68 69 75 96sort(z)1 17 21 28 34 42 47 68 69 75 96which(z=max(z)#给出下标,Matrix,x=matrix(runif(20),4,5)x,1,2,3,4,51,0.7983678 0.04607601 0.04555323 0.8594483 0.730895002,0.6559851 0.79562222 0.02948270 0.1453364 0.795528383,0.6759171 0.56193147 0.48286653 0.2419931 0.560699884,0.1183701 0.80652627 0.49405167 0.6523137 0.08345406 x=matrix(1:20,4,5);x,1,2,3,4,51,1 5 9 13 172,2 6 10 14 183,3 7 11 15 194,4 8 12 16 20 x=matrix(1:20,4,5,byrow=T);x,1,2,3,4,51,1 2 3 4 52,6 7 8 9 103,11 12 13 14 154,16 17 18 19 20,一些简单函数,max,min,length,mean,median,fivenum,quantile,unique,sd,var,range,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和第3列x2,1#第2,1元素 xx,10,1#第1列大于0的元素sum(x,10)#第1列大于0的元素的个数sum(x,1=0)#第1列不大于0的元素的个数x,-c(1,3)#没有第1、3列的x.x-2,-c(1,3)#没有第2行、第1、3列的x.,矩阵/向量的(子集),xx,10unique(x),矩阵的转置和逆矩阵,x=matrix(runif(9),3,3);x,1,2,31,0.6747652 0.9954731 0.75245022,0.3090199 0.2390141 0.24729613,0.5102675 0.9515505 0.6082803t(x),1,2,31,0.6747652 0.3090199 0.51026752,0.9954731 0.2390141 0.95155053,0.7524502 0.2472961 0.6082803solve(x)#solve(a,b)可以解ax=b方程,1,2,31,-12.313293 15.125819 9.0823002,-8.459725 3.627898 8.9898643,23.563034-18.363808-20.037986,警告:计算机中的0是什么?,x%*%solve(x),1,2,31,1.000000e+00-9.454243e-17-3.911801e-162,5.494737e-16 1.000000e+00 3.248270e-163,-3.018419e-16 1.804980e-15 1.000000e+00要用线性代数的知识来判断诸如有多少非零特征根等问题.假定v是特征值组成的向量,不能用诸如sum(v!=0)等方法来判断非零特征根的数目!,Matrix&Array,x=array(runif(20),c(4,5);x,1,2,3,4,51,0.5474306 0.2362356 0.687007107 0.4036998 0.52558392,0.8234363 0.4922711 0.960554564 0.4704976 0.13278703,0.1861151 0.8461655 0.390523424 0.2202575 0.40576074,0.8117521 0.5375946 0.004505845 0.4821567 0.7644741is.matrix(x)1 TRUEx1,2x1,x,2dim(x)#得到维数(4,5),Array,x=array(runif(24),c(4,3,2)is.matrix(x)#可由dim(x)得到维数(4,3,2)1 FALSEx,1,1,2,31,0.3512615 0.7270611 0.0090555222,0.1444965 0.2527673 0.6979770273,0.6658176 0.6638542 0.7737475424,0.4258436 0.4168940 0.634235148,2,1,2,31,0.3664152 0.9633497 0.56280062,0.3466645 0.5036830 0.15429863,0.4552553 0.1289775 0.84230174,0.1074899 0.3841463 0.7648297,Array的子集,x=array(1:24,c(4,3,2)xc(1,3),1,1,2,31,1 5 92,3 7 11,2,1,2,31,13 17 212,15 19 23,矩阵乘法及行列运算,x=matrix(1:30,5,6);y=matrix(rnorm(20),4,5)y%*%x,1,2,3,4,5,61,-3.231808-8.13791204-13.044017-17.950121-22.856225-27.7623302,-14.072030-39.33640851-64.600787-89.865165-115.129543-140.3939213,-1.750057-0.02764783 1.694761 3.417170 5.139578 6.8619874,5.862412 9.78064218 13.698872 17.617103 21.535333 25.453563apply(x,1,mean)1 13.5 14.5 15.5 16.5 17.5apply(x,2,sum)1 15 40 65 90 115 140apply(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 14apply(x,1:2,sum),1,2,31,14 22 302,16 24 323,18 26 344,20 28 36apply(x,c(1,3),prod),1,21,45 46412,120 55443,231 65554,384 7680,矩阵与向量之间的运算,sweep(x,1,1:5,*),1,2,3,4,5,61,1 6 11 16 21 262,4 14 24 34 44 543,9 24 39 54 69 844,16 36 56 76 96 1165,25 50 75 100 125 150 x*1:5 sweep(x,2,1:6,+),1,2,3,4,5,61,2 8 14 20 26 322,3 9 15 21 27 333,4 10 16 22 28 344,5 11 17 23 29 355,6 12 18 24 30 36,Array和矩阵/向量/array之间的运算,z=array(1:24,c(2,3,4)#注意排列次序 z,1,1,2,31,1 3 52,2 4 6,2,1,2,31,7 9 112,8 10 12,3,1,2,31,13 15 172,14 16 18,4,1,2,31,19 21 232,20 22 24,Array和矩阵/向量/array之间的运算,sweep(z,1,1:2,-),1,1,2,31,0 2 42,0 2 4,2,1,2,31,6 8 102,6 8 10,3,1,2,31,12 14 162,12 14 16,4,1,2,31,18 20 222,18 20 22,Array和矩阵/向量/array之间的运算,sweep(z,c(1,2),matrix(1:6,2,3),-),1,1,2,31,0 0 02,0 0 0,2,1,2,31,6 6 62,6 6 6,3,1,2,31,12 12 122,12 12 12,4,1,2,31,18 18 182,18 18 18,外积(产生矩阵或array),outer(1:2,rep(1,2),1,21,1 12,2 2outer(1:2,matrix(rep(1,6),3,2),1,1,2,31,1 1 12,2 2 2,2,1,2,31,1 1 12,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;z$T$wattributes(z)#属性!$names1 Tom attributes(matrix(1:6,2,3)$dim1 2 3,矩阵,array及其维名字,x=matrix(1:12,nrow=3,dimnames=list(c(I,II,III),paste(X,1:4,sep=)X1 X2 X3 X4I 1 4 7 10II 2 5 8 11III 3 6 9 12y=array(1:12,c(3,2,2),dimnames=list(c(I,II,III),paste(X,1:2 sep=),paste(Y,1:2,sep=),Y1 X1 X2I 1 4II 2 5III 3 6,Y2 X1 X2I 7 10II 8 11III 9 12,data.frame,x=matrix(1:6,2,3)x=as.data.frame(x);xV1 V2 V31 1 3 52 2 4 6x$V21 3 4x$V21 3 4attributes(x)$names1 V1 V2 V3$row.names1 1 2$class1 data.frame,data.frame,names(x)=c(TOYOTA,GM,HUNDA)row.names(x)=c(2001,2002)x TOYOTA GM HUNDA2001 1 3 52002 2 4 6 x$GM1 3 4,data.frame,attach(x)GM1 3 4detach(x)GMError:Object GM not found,直接手工输入和编辑数据,直接敲入:x=c(1,2,7,8,)或者x=scan()1 2 7 8.(以“Enter”两次来结束)fix(x)(通过编辑修改数据),Categorical dataA survey asks people if they smoke or not.The data is Yes,No,No,Yes,Yesx=c(Yes,No,No,Yes,Yes)table(x);xfactor(x),Barplot:Suppose,a group of 25 people 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 1beer=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 1barplot(beer)#this isnt correctbarplot(table(beer)#Yes,call with summarized databarplot(table(beer)/length(beer)#divide by n for proportiontable(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 books.)12.4 5 2 50 8 3 1 4 0.25sals=scan()#read in with scan12.4 5 2 50 8 3 1 4 0.25mean(sals);var(sals):sd(sals);median(sals)fivenum(sals)#min,lower hinge,Median,upper hinge,maxsummary(sals)data=c(10,17,18,25,28,28);summary(data);quantile(data,.25);quantile(data,c(.25,.75),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 following points per game for players on both teams2 3 16 23 14 12 4 13 2 0 0 0 6 28 31 14 4 8 2 5scores=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“stem”“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 again12.4 5 2 50 8 3 1 4.25 And we want to break that data into the intervals 0;1;(1;5;(5;50sals=c(12,.4,5,2,50,8,3,1,4,.25)#enter datacats=cut(sals,breaks=c(0,1,5,max(sals)#the breakscats#view the valuestable(cats)#organizelevels(cats)=c(poor,rich,rolling in it)table(cats),Histograms:Suppose the top 25 ranked movies made the following gross receipts for a week 429.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.1 0.1 0.1 0.1 0.1hist(x)#frequencieshist(x,probability=TRUE)#proportions(or probabilities)rug(jitter(x)#add tick markshist(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,.250,.249,.211,.161)tmp=hist(x)#store the resultslines(c(min(tmp$breaks),tmp$mids,max(tmp$breaks),c(0,tmp$counts,0),type=l),data(faithful)attach(faithful)#make eruptions visiblehist(eruptions,15,prob=T)#proportions,not frequencieslines(density(eruptions)#lines makes a curve,default bandwidth,Handling bivariate categorical data:Person Smokes amount of Studying1 Y less than 5 hours2 N 5-10 hours3 N 5-10 hours4 Y more tha