==统计编程的框架与R语言统计分析基础.pdf
《==统计编程的框架与R语言统计分析基础.pdf》由会员分享,可在线阅读,更多相关《==统计编程的框架与R语言统计分析基础.pdf(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 统计编程的框架 与 R 语言统计分析基础 (北京地区第一次COS沙龙活动讲稿)中国人民大学统计学院 谢益辉2007 年 5 月 13 日 2 目 录 一、道冲,而用之或不盈一、道冲,而用之或不盈.4 1为什么需要统计编程?.5 2哪里需要编程?.6 3从一般计算机编程说起.10 4数值计算与统计编程.12 5统计编程的流程.16 二、欲善其事,先利其器二、欲善其事,先利其器.17 1什么是利器?.18 3 2为什么用R?.19 3谁不适合用R?.20 三、一箪食,一瓢饮,在陋巷三、一箪食,一瓢饮,在陋巷.21 1获取与安装.23 2R数据结构.26 3R统计分析.55 4R图形.76 4 一
2、、道冲,而用之或不盈一、道冲,而用之或不盈 道冲,而用之或不盈。渊兮,似万物之宗。挫其锐,解其纷,和其光,同其尘。湛兮,似或存。吾不知谁之子,象帝之先。老子 5 1为什么需要统计编程?为什么需要统计编程??统计人的责任:了解算法的黑箱(我不入黑箱谁入黑箱?)?黑箱:忽悠的源泉(你快回来,我一人忽悠不来!)?统计人的自由:灵活计算与输出(我的地盘我做主!)?我的地盘儿,我也不知道听谁的。?我的地盘儿,听你的。?统计人的愿景:走在时代的前列(直挂云帆济沧海!)?吃罢早饭吃中饭,吃罢中饭吃夜饭,夜饭吃过困觉哉,困觉起来吃早饭。6 2哪里需要编程?哪里需要编程??没错,很多情况下确实不需要(即便是用R
3、也不需要)?但是,无论如何你的GUI都不可能把所有的方法都囊括到菜单和按钮中的?正态性的检验有多少种方法?Jarque-Bera 检验?SPSS 做一个 t 分布的 KS 检验?(只有正态、泊松、指数等)?前沿:Copulas?Machine Learning??等等 Jarque-Bera 检验 JB 统计量渐近服从分布 2(2)7 8 一个随意的初级 R 程序:n=length(x)S=mean(x-mean(x)3)/(n-1)/n*var(x)1.5 K=mean(x-mean(x)4)/(n-1)/n*var(x)2 chi=n/6*(S2+(K-3)2/4)pvalue=1-pch
4、isq(chi,2)R 源代码(tseries 包;jarque.bera.test()函数)jarque.bera.test function(x)if(NCOL(x)1)stop(x is not a vector or univariate time series)if(any(is.na(x)stop(NAs in x)DNAME-deparse(substitute(x)9 n-length(x)m1-sum(x)/n m2-sum(x-m1)2)/n m3-sum(x-m1)3)/n m4-sum(x-m1)4)/n b1-(m3/m2(3/2)2 b2-(m4/m22)STATI
5、STIC-n*b1/6+n*(b2-3)2/24 names(STATISTIC)-X-squared PARAMETER-2 names(PARAMETER)-df PVAL-1-pchisq(STATISTIC,df=2)METHOD 1:10#井号是 R 的注释符号 1 1 2 3 4 5 6 7 8 9 10 10:1 1 10 9 8 7 6 5 4 3 2 1 seq(1,10,0.5)#等差数列 1 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 30 11 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0 rep(2,5)
6、#重复相同的对象 1 2 2 2 2 2 rep(1:3,times=3)#观察与下例的不同 1 1 2 3 1 2 3 1 2 3 rep(1:3,each=3)1 1 1 1 2 2 2 3 3 3 rep(1:3,1:3)31 1 1 2 2 3 3 3 产生结构化数据 向量很容易用函数 c()产生:x=c(9,1,1)x 1 9 1 1 (x=c(Xie,Yi,Hui)#为什么用括号 32 1 Xie Yi Hui 矩阵用 matrix()产生:matrix(1:10,2)#注意:默认按列排列 ,1,2,3,4,5 1,1 3 5 7 9 2,2 4 6 8 10 matrix(1:1
7、0,nrow=2,ncol=5,byrow=T),1,2,3,4,5 33 1,1 2 3 4 5 2,6 7 8 9 10 数据框用 data.frame()产生 x=data.frame(1:5,4:8)#把若干个向量合成数据框 x X1.5 X4.8 1 1 4 2 2 5 34 3 3 6 4 4 7 5 5 8 x=cbind(x,c(A,B,C,D,E)#绑上一列字符 x X1.5 X4.8 c(A,B,C,D,E)1 1 4 A 2 2 5 B 35 3 3 6 C 4 4 7 D 5 5 8 E dimnames(x)#看一下 x 的行列名 1 1 1 2 3 4 5 2 36
8、 1 X1.5 2 X4.8 3 c(A,B,C,D,E)colnames(x)#只看列名 1 X1.5 2 X4.8 3 c(A,B,C,D,E)37 colnames(x)=c(X1,X2,X3)#改列名 x#这样看起来就舒服多了 X1 X2 X3 1 1 4 A 2 2 5 B 3 3 6 C 4 4 7 D 5 5 8 E 38 因子用 factor()产生 列表用 list()产生 时间序列用 ts()产生 数据还可以从外部文件读入,甚至是剪贴板(clipboard),或者 SQL、Access 数据库(RODBC 包)例:D:x.txt 文件 V1 V2 V3 V4 V5 39 1
9、 5 9 13 17 2 6 10 14 18 3 7 11 15 19 4 8 12 16 20 x=read.table(d:x.txt,header=T)x V1 V2 V3 V4 V5 1 1 5 9 13 17 40 2 2 6 10 14 18 3 3 7 11 15 19 4 4 8 12 16 20 运算运算 算术运算:+,-,*,/,%(余数),%/%(整数商),(乘方)5%2 41 1 1 5%/%2 1 2 25 1 32 逻辑运算:&,|,!(且、或、非);,=,=,=(“小于一个负数”如何表示?注意-是赋值符号,x-9 与 42 x=9 等价!正确写法是加上空格 x-
10、9 或者 x T&F 1 FALSE T|F 1 TRUE !T 1 FALSE 43 1=T 1 TRUE 2=T 1 FALSE 0=F 1 TRUE 1:10 5 1 FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE 44 下标的使用(获取元素)下标的使用(获取元素)向量、因子、时间序列 xi;矩阵 xi,j xi,x,j,数据框同矩阵;数组就是根据维度多打几个逗号而已 xi,j,k,;列表要用双重中括号 xi 特殊的使用:在中括号中用逻辑表达式提取元素或给特定元素赋值 xx 5#提出大于 5 的元素 1 6 7 8 9 10
11、45 xx 5&x x=matrix(1:20,4,5)xx=2&x x ,1,2,3,4,5 1,1 5 9 13 17 46 2,2 6 10 14 18 3,3 7 11 15 19 4,4 8 12 16 20 xx=2&x x ,1,2,3,4,5 1,1 NA NA NA 17 2,NA NA NA NA 18 47 3,NA NA NA NA 19 4,NA NA NA 16 20 一些数学和统计函数一些数学和统计函数?最大值max(),最小值min(),均值mean(),标准差sd(),方差var(),相关系数cor(),求和sum(),积prod(),中位数median(),
12、分位数quantile(),对数log(),指数exp(),排列factorial(),组合choose(),四舍五入round(),向下 48 取整 floor(),向上取整 ceiling(),总结 summary(),?累加 cumsum(),秩 rank(),排序 sort(),倒序 rev(),矩阵转置 t(),逆矩阵 solve(),特征根 eigen(),?关于统计分布的四大金刚:pnorm(),dnorm(),qnorm(),rnorm(),(p,d,q,r+分布名称分别构成:分布函数值、密度函数值、分位数、随机数,如 pf()表示 F 分布函数值,runif()表示产生均匀分
13、布的随机数);抽样 sample(),?线性模型 lm(),广义线性模型 glm(),t 检验 t.test()49 程序控制流:告诉计算机怎么走程序控制流:告诉计算机怎么走?选择控制?if(条件)怎样怎样?if(条件)怎样怎样 else 又怎样?ifelse()函数:ifelse(条件,满足则取我,不满足则取我)?switch()函数:多条件选择(至少我很少用它)50?循环?for(循环变量 in 一个序列中)怎样怎样?while(某条件满足则)怎样怎样 例:cond=T if(cond)winDialog(ok,Hello Kitty!)x=0 for(i in 10:1)51+x=x+i
14、+x 1 55 while(x=1&winDialog(yesno,Im a little pig.)!=YES)+x=x-1+#这个例子比较整人 52 Tips:括号怎么打?小括号一般用于函数,中括号获取元素,大括号把一段完整语句“保护起来”(如果只有一句话,通常大括号可用可不用)至此,我们有了数据结构,知道了怎么控制我们的程序,那么,编程的问题基本已经解决。剩下的工作就是适应 R 的语言环境(这是一个积累的过程,勿急躁)53 国有国法,家有家规。不要对你的计算机想当然。几个小例子:http:/ 不是逻辑运算;0 x|t|)(Intercept)0.009639 0.019638 0.491
15、 0.625 x 0.193976 0.032711 5.930 4.55e-08*-58 Signif.codes:0*0.001*0.01*0.05.0.1 1 Residual standard error:0.0979 on 98 degrees of freedom Multiple R-Squared:0.2641,Adjusted R-squared:0.2566 F-statistic:35.17 on 1 and 98 DF,p-value:4.548e-08 plot(x,y);abline(fit)0.00.20.40.60.81.0-0.2-0.10.00.10.20.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 统计 编程 框架 语言 统计分析 基础
限制150内