一个菜鸟学习R语言的历程(一)

菜鸟也有梦想!

写在前面:本人的确是一只菜鸟,大学没学过编程,对于C语言和java也只是耳闻,R语言和Python是大学毕业后才知道(卑微)。本科只用过SPSS和EXCEL分析数据,目前马上研二,才认识到编程的重要性以及它的神奇。在Python和R之间选择了R来作为学习的主要目标,想达到的水平就是能够用R绘制论文中各种图和进行数据分析。不知道这个学习的历程持续多久,希望我能坚持到底!不断的学习,反复的练习!不求成为高手,只求从入门的菜鸟蜕变为一个真正的R使用者。

入门

我也不知道现在算不算入门了… ̄□ ̄||,最近一边上课一边自学,上课的内容难度较大,自学是从最基本的开始。网课老师讲的不够仔细而且听久了容易感到枯燥,也无法保证每个语句都有时间动手敲一遍。但是,在自学的过程中,可以充分体验复制粘贴的快乐哈哈哈,而且可以选择自己感兴趣的packages进行学习,不懂的可以通过各种途径搜索,查得多了,看得多了,敲得多了,对代码的认识也越来越深刻。
推荐一个学习R的包swirl,R亲自带我们学习!

install.packages("swirl")
library(swirl)

用了大约一天半的时间刷完了所有的模块,感觉很有意思,是一种引导式的学习。虽然都是最基本的东西,但对于入门者来说,能够学到不少,我本人受益匪浅,并且刷一遍不够,要多刷几遍,才能信手拈来。另外,给大家推荐一本书《R与tidyverse——数据分析入门》,前几章是对R的基本介绍,后面我还没看。网址:
https://tianyishi2001.github.io/r-and-tidyverse-book/import-export.html
在知乎上看到有大佬买了很多R语言的书,虽然我照着全买下来,但是我深知根本看不完!所以基于目前的需求,买了其中一本《ggplot:数据分析与图形艺术》。还在路上…

学习T检验

第一课,先来回顾一下数据分析中比较常用的T检验。
t检验,亦称student t检验(Student’s t test),主要用于样本含量较小(例如n < 30),总体标准差σ未知的正态分布
适用条件:
(1) 已知一个总体均数;
(2) 可得到一个样本均数及该样本标准差;
(3) 样本来自正态或近似正态总体。

T检验可以分为单总体检验双总体检验,以及配对样本检验

  1. 单总体t检验是检验一个样本平均数与一个已知的总体平均数的差异是否显著。举个例子,某地区年均降水量为400mm,而我们在近十年(2008-2018年)获取每年的年均降水量,分别是388,379,401,390,417,402,376,399,411,420mm。问题:近十年的年均降水量与该地区的历史年均降水量有没有显著性差异?

代码如下:

precipitation <- c(388,379,401,390,417,402,376,399,411,420)
t.test(precipitation, alternative = "greater", mu = 400 )
#alternative表示备择假设,two.sided(缺省),双边检验(H1:μ≠H0),less表示单边检验(H1:μ<μ0),greater表示单边检验(H1:μ>μ0)
#mu表示原假设μ0,paired表示是否配对样本T检验,conf.level置信水平,即1-α,通常是0.95
#var.equal是逻辑变量,var.equal=TRUE表示两样品方差相同,var.equal=FALSE(缺省)表示两样本方差不同。

运行后结果如下:

One Sample t-test

data:  precipitation
t = -0.35636, df = 9, p-value = 0.3649
alternative hypothesis: true mean is less than 400
95 percent confidence interval:
     -Inf 407.0447
sample estimates:
mean of x 
    398.3 

检验结果为t=-0.35636,显著性P值=0.3649>0.05,接受原假设,说明近十年的年均降水量与历史年均降水量无显著差异。

  1. 双总体t检验是检验两个样本平均数与其各自所代表的总体的差异是否显著。双总体t检验又分为两种情况,一是独立样本t检验(各实验处理组之间毫无相关存在,即为独立样本),该检验用于检验两组非相关样本被试所获得的数据的差异性;一是配对样本t检验,用于检验匹配而成的两组被试获得的数据或同组被试在不同条件下所获得的数据的差异性,这两种情况组成的样本即为相关样本。
    (1)独立样本t检验
    例子:两个坡面,一个阳坡,一个阴坡,100cm的土壤剖面,从上往下每隔10cm取一次土样,测定土壤含水量。类似于双因素十水平。(阳坡:8.39,9.71,7.47,6.75,7.69,10.66,8.08,10.07,9.27,7.88%;阴坡:8.46,10.71,8.17,6.48,8.09,9.87,8.99,11.07,10.27,7.46%)问题:阴坡与阳坡的土壤含水量在100cm剖面的分布是否有显著差异?
    代码如下:
library(car)
yangpo <- c(8.39,9.71,7.47,6.75,7.69,10.66,8.08,10.07,9.27,7.88)
yinpo <- c(8.46,10.71,8.17,6.48,8.09,9.87,8.99,11.07,10.27,7.46)
shapiro.test(yangpo)
shapiro.test(yinpo)
#正态分布检验
y <- c(8.39,9.71,7.47,6.75,7.69,10.66,8.08,10.07,9.27,7.88,8.46,10.71,8.17,6.48,8.09,9.87,8.99,11.07,10.27,7.46)
group=as.factor(c(1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2))
leveneTest(y = y, group=group)
#方差齐性检验
a <- factor(c(rep(1,10),rep(2,10)))
leveneTest(y~group)
#方差齐性检验(看起来代码简单一些,但结果是一样的)

运行后结果如下:

> shapiro.test(yangpo)

	Shapiro-Wilk normality test

data:  yangpo
W = 0.95519, p-value = 0.73

> shapiro.test(yinpo)

	Shapiro-Wilk normality test
data:  yinpo
W = 0.96352, p-value = 0.8251

R自身包含var.test和bartlett.test方差齐性检验,分别对应两组和多组数据。在car包中有levene.test(也是SPSS的默认方差齐性检验方法)。在此选用了levene.test(),也就是新版本中的leveneTest()。

> leveneTest(y = y, group=group)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  1  0.3365 0.5691
      18   
> leveneTest(y~group)
Levene's Test for Homogeneity of Variance (center = median)
      Df F value Pr(>F)
group  1  0.3365 0.5691
      18   

可以看出,阴坡和阳坡的显著性P值均大于0.05,符合正态分布,也通过了方差齐性检验。
接下来进行t检验:

t.test(yangpo,yinpo,paired = FALSE)

结果如下:

> t.test(yangpo,yinpo,paired = FALSE)

	Welch Two Sample t-test

data:  yangpo and yinpo
t = -0.58114, df = 17.532, p-value = 0.5685
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1.663954  0.943954
sample estimates:
mean of x mean of y 
    8.597     8.957 

显著性P值=0.5685>0.05,说明阴坡与阳坡的土壤含水量在100cm剖面没有显著差异。
(2)配对t检验
例子:人工降雨试验,雨强是60,时间10min,每隔1min收集一次径流。设置两个土槽,控制单一变量,即坡度分别为10°和20°。(10°:1,2,3,4,5,6,7.5,8,8.2,8.5;20°:2,4,6,8,10,11,11.5,12,12.3,12.4)
在此就不进行正态分布和方差齐性检验了,直接进行t检验。
代码如下:

ten <- c(1,2,3,4,5,6,7.5,8,8.2,8.5)
twenty <- c(2,4,6,8,10,11,11.5,12,12.3,12.4)
t.test(ten,twenty,paired=TRUE)

运行后结果如下:

	Paired t-test

data:  ten and twenty
t = -8.9938, df = 9, p-value = 8.587e-06
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -4.505491 -2.694509
sample estimates:
mean of the differences 
                   -3.6 

可以看到显著性P值= 8.587e-06,远小于0.001,两个坡度之间的径流量具有极显著差异,或者说坡度对径流量具有显著影响。(表述可能不够规范)

今天的学习任务结束!明天继续加油ヾ(◍°∇°◍)ノ゙
  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值