植物人分享 http://blog.sciencenet.cn/u/maolingfeng 中国科学院植物研究所

博文

R语言学习笔记(二)Introductory statistics whith R -Peter Da

已有 20053 次阅读 2011-3-21 23:32 |个人分类:R语言学习笔记|系统分类:科研笔记| R语言, 编程, 函数, 学习笔记, 植物人

(cases form Introductory statistics whith R by Peter Dalgaard)

###R镜像官方网站(http://ftp.ctex.org/mirrors/CRAN/)
1、对矩阵的操作,可以利用matrix函数,并且,用rownames()函数给矩阵赋予名字
x <- matrix(1:12,nrow=3,byrow=T)
rownames(x) <- LETTERS[1:3]
x
[,1] [,2] [,3] [,4]
A 1 2 3 4
B 5 6 7 8
C 9 10 11 12
2、对于矩阵的合并,按行合并或者按列合并cbind()rbind()
   cbind(A=1:4,B=5:8,C=9:12)
A B C
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
> rbind(A=1:4,B=5:8,C=9:12)
[,1] [,2] [,3] [,4]
A 1 2 3 4
B 5 6 7 8
C 9 10 11 12
3、因子的定义
text.pain <- c("none","severe", "medium", "medium", "mild")
factor(text.pain)
4、利用data.frame()来讲两个向量合并成一个矩阵
   vetor1 <- rnorm(20)
   vetor2 <- rnorm(20)
   d <- data.frame(vetor1,vetor2)
5、条件选择,可以利用条件,对别的向量进行操作
  vetor1 <- rnorm(20)
   vetor2 <- rnorm(20)
   a<- vetor1[vetor2>0]##选出向量1中,当向量vetor2中数大于0所对于的数值。
   []号内为选择的条件
  intake.post[intake.pre > 7000 & intake.pre <= 8000]
 6、对于缺损值NA,利用is.na(x)来寻找
 7、d[d$intake.pre>7000,],对于数据库d,在[]中给出d的条件,非常有用
intake.pre intake.post
8 7515 5975
9 7515 6790
10 8230 6900
11 8770 7335
第33页

 1\对数据框中子集的操作###数据框thuesen,包含个向量内容,其中选择,blood.glucose<7的,条件部分
   和上面的方括号条件设定有点类似。
    vetor1 <- rnorm(20)
   vetor2 <- rnorm(20)
   d <- data.frame(vetor1,vetor2)
  thue2 <- subset(d,vetor1<0)
  > thue2
  2、##对子集中的数值进行转换,结果将会在转换后的矩阵中增加一列转换的那列结果
  > thue3 <- transform(d,log.gluc=log(vetor1))
>   thue3
 3、##对一个矩阵进行拆分,函数split()##其中order()函数,是对sort()函数中的原来数据的位置进行罗列
 
   <- split(d$vetor1, d$vetor2)
  4排序函数sort()
  data1<- rnorm(20)
  sort(data1)
  order(data1)
  ######对于一个矩阵,要利用其中的一个向量来进行排序怎需要用到order()函数
  其中order(sex,age)代表先以性别进行排序,再用年龄进行排序,order获取的是顺序值
  5、###apply系列函数的应用
     apply(a4[,2:6], 1, mean)##代表对于矩阵a4,从2列到第6列开始,取平均值mean,其中参数“1”为按
  ##行计算,如果括号中参数为2,则按列计算,mean可以变为sd,sum、中值median等计算。
  case:
  m <- matrix(rnorm(12),4)
  apply(m, 2, min)
 result: [1] -1.1616653 -0.7892404 0.3189893
lapply(thuesen, mean, na.rm=T)和sapply(thuesen, mean, na.rm=T)是等效的,其中对于na.rm=T
代表的是缺损值不进入计算
    6高斯分布随机函数Gaussian(normal):形式为rnorm(n,mean=0,sd=1);
    随机数runif(n, min=0, max=1)
 7排序range(x)其功能等同于才c(min(x),max(x))
 8关于协方差的计算var(x,y),如果是矩阵或者数据框,则用cov(x,y)来表示。
####二、关于制图
     1、基本的制图函数形式
   x <- runif(50,0,2)##产生两个含50个元素,从0-2的的随机向量x,y。
      y <- runif(50,0,2)
      plot(x, y, main="Main title", sub="subtitle",xlab="x-label", ylab="y-label")
  ###其中main为主标题,sub为副标题,xlab为x轴的名字,ylab=为y轴的名字。其他参数还有很多,比如
    ###add=FALSE为不叠加到前一个图形上,如果为TURE叠加到前面一个图上,如果有的话;axes=TURE则
 绘制边框,如果是FALSE则不绘制边框。type="p":点图;“l”线图;“b”点连线图。xlim=c(1,10),xlim=rang(x)
 用来指定xy轴的上下限
 2、部分比较有用的绘图低级命令
        points(x,y)添加点
  lines(x,y)添加线
  text(x,y,labels,)在(x,y)处添加用labels指定的文字,典型用法是plot(x,y,type="n");text(x,y,name)
  abline(h=y)在纵坐标y处化直线
  abline(v=x)在横坐标x处画直线,很有用的函数
  abline(lm.obj)画由lm.obj确定的回归线;如lm.obj<-lm(x~y),执行abline(lm.obj)既添加上了回归线
 3、关于坐标轴axis的设定
        axis(2,at=seq(0.2,1.8,0.2))##其中,2代表y轴,如果是1则代表x轴,坐标轴的形式中的分界点
       at为从0.2开始到1.8结束,中间间隔为0.2
    box()设置外边框
   4、联合不同的图形
     x <- rnorm(100)
    hist(x,freq=F)
    curve(dnorm(x),add=T)
   h <- hist(x, plot=F)
      ylim <- range(0, h$density, dnorm(0))
     hist(x, freq=F, ylim=ylim)
     curve(dnorm(x), add=T)
5、编写函数的相关函数
    x <- y/2
  repeat{
               x <- (x + y/x)/2
             if (abs(x*x-y) < 1e-10) break
       }
    x
  ###if给出条件语句,如果符合那么执行下面的步骤,case中即break中断
   x <- seq(0, 1,.05)
   plot(x, x, ylab="y", type="l")
   for ( j in 2:8 ) lines(x, x^j)
   ##for语句的应用及相关的格式
 6、ls()给出所有的工作空间内的对象;rm(height, weight, bmi)移除相关的对象;rm(ls())移除所有对象
 7、保存工作空间及所有的计算过程save.image("ZDVI_y2_3.rdata")注意保存文件名的后缀名.rdata
 8、移除文件包detach("package:survival")
    基本的学习结束。
三、概率和分布(probablity and distributions)
    1随机采样
   sample(1:40,5)###在1到40的数中随机采集5个数
   sample(c("H","T"), 10, replace=T)##当采样个数大于向量的元素个数时,利用replace可以重复
      [1] "T" "T" "T" "T" "T" "H" "H" "T" "H" "T"
     sample(c("succ", "fail"), 10, replace=T, prob=c(0.9, 0.1))##不均一的概率采样,其中prob中
   设置0.9代表采集到succ的概率为90%
    [1] "succ" "succ" "succ" "succ" "succ" "succ" "succ" "succ" "succ" "succ"
 2、1/choose(40,5)###函数40个数中选择5个的概率
 3、画随机曲线,dnorm(x),表示x的密度,
    x <- seq(-4,4,0.1)
       plot(x,dnorm(x),type="l")
    等效函数为curve(dnorm(x), from=-4, to=4);
 4、1-pnorm(160,mean=132,sd=13)###对于平均值为132,标准差为13的一组数列,其中一个数值为160或者比这更大的概率为
      [1] 0.01562612
 5、pbinom(16,size=20,prob=.5)
        [1] 0.9987116
 6、###关于正态分布95%自信区间的获取 
      xbar <- 83###一组数的平均值
      sigma <- 12###标准差sd
      n <- 5   ###数据的长度length
     sem <- sigma/sqrt(n)###平均的标准误差
      sem
      [1] 5.366563
      xbar + sem * qnorm(0.025)
      [1] 72.48173
      xbar + sem * qnorm(0.975)
     [1] 93.51827  ###获得95%置信区间的上下数值
   In professional statistics they are used to create simulated data sets in order to study the accuracy of mathematical approximations and
the effect of assumptions being violated.
    rbinom(10,size=20,prob=.5)###10为重演十次,20为可能性,prob=0.5为概率值
   [1] 12 11 10 8 11 8 11 8 8 13  
  ###测试抛硬币的函数哪个要好点的算法,两个好像差不多
     a<-rbinom(10000,size=1,prob=.5)####注意两种选择,size等于1
  b<-sample(c(0,1), 10000, replace=T, prob=c(0.5,0.5))
     sum(a)
  sum(b)
   ###关于正态分布的自编函数normal.fun()
       normal.fun<- function(vetor1,a)##a的数值为0.05或者是0.001自己设定
   {
   xbar  <- mean(vetor1)###一组数的平均值
      sigma <- sd(vetor1)###标准差sd
      n <- length(vetor1)   ###数据的长度length
      sem <- sigma/sqrt(n)###平均的标准误差
      border1 <- xbar + sem * qnorm(a/2)
      border2 <- xbar + sem * qnorm(1-a/2)
   vetor2 <- c(border1,border2)
   return(vetor2)
     }
   b<-rnorm(20)
   normal.fun(b,0.05)
  
  


https://blog.sciencenet.cn/blog-474707-424967.html

上一篇:R语言学习笔记(一)
下一篇:R语言学习笔记(三)
收藏 IP: 159.226.89.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-19 06:31

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部