跳转到内容

统计分析:使用 R 的入门 / R 基础

来自维基教科书,开放书籍,开放世界

为什么选择 R?

[编辑 | 编辑源代码]

R 是一款命令驱动的统计软件包。乍一看,这可能会让它看起来难以使用。然而,有许多理由让你选择使用这款计算机程序来学习统计学。其中最重要的两个原因是

  • R 是免费的;你可以从 https://r-project.org.cn 下载并将其安装到几乎任何你喜欢的计算机上。
  • R 允许你进行所有你可能需要的统计测试,从简单到高度复杂的测试。这意味着你应该始终能够对你的数据进行正确的分析。

R 的额外优势在于它具有出色的图形和编程能力,可以作为教学和学习的辅助工具。例如,本书中的所有插图都是使用 R 制作的;通过点击任何插图,你可以获取用于生成它的 R 命令。

最后一个好处是,一旦你掌握了统计学或 R 的一些基本知识,你就能发现网上有许多资源可以帮助 R 用户。你可以从 本书的附录 中找到一个列表。

如何使用本书学习 R

[编辑 | 编辑源代码]

本书中的主要文本描述了统计学背后的原因和方法,这些内容与你使用的任何统计软件包都息息相关。然而,除了主要文本之外,还有大量“R 主题”:使用 R 来阐明特定观点的练习和示例。你可能会发现你需要花一些时间才能适应 R,特别是如果你不熟悉计算机语言的概念。

别担心!本章和 第 2 章 中的主题将帮助你入门,让你能够理解和使用 R 的基本功能。本章旨在帮助你入门:一旦你安装了 R,就有一些主题教你如何执行 简单的计算使用函数,如何 存储结果,如何 获取帮助,以及如何 退出。第 1 章中的一些练习主要展示了使用 R 时可供你使用的可能性,然后第 2 章介绍了 R 使用的基础知识:特别是 向量因素读取数据数据框 中,以及 绘图 各种 类型。从那时起,练习就变得更加统计化了。

如果你想在进行统计讨论之前直接完成这些最初的练习,可以从 这里 收集这些练习。请注意,在在线完成 R 主题时,如果你 设置维基教科书 来以一种美观的方式显示 R 命令,你可能会发现它更具视觉吸引力。如果 R 主题妨碍了你阅读主要文本,你可以通过点击每个框右上角的箭头来隐藏它们。

如果你尚未在你的计算机上安装 R,请从 https://r-project.org.cn 免费下载最新版本,并安装基本系统。你暂时不需要安装任何额外的包。安装完成后,启动它,你应该会看到类似下面的内容

R version 2.11.1 (2010-05-31)
Copyright (C) 2010 The R Foundation for Statistical Computing
ISBN 3-900051-07-0

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

>

你现在正在 R 会话中。R 是一个命令驱动的程序,而令人毛骨悚然的“>”字符表示 R 现在正在等待你输入内容。不要害怕。你很快就会掌握最简单的命令,这些命令应该足够你目前使用。并且你最终会发现,命令行驱动界面赋予了你 [1] 一定程度的自由度和能力,这是使用更“用户友好”的软件包无法实现的。

v·d·e

R 作为计算器

类似这样的文本用于讨论 R 的特定方面。你可以按它们在书中出现的顺序阅读这些部分来学习 R 的基础知识。还有一些命令可以直接输入 R;你可以直接将它们复制粘贴到你的 R 会话 [2] 中。尝试以下命令以了解如何将 R 用作简单的计算器
输入
100+2/3
结果
> 100+2/3

[1] 100.6667

在没有关于如何处理命令输出的任何指令的情况下,R 通常会将结果打印到屏幕上。暂时忽略 [1] 之前的答案:我们会看到这在 R 输出多个数字时很有用。请注意,R 遵守标准的数学规则,即在加减法之前进行乘除法:它在将 100 相加之前将 2 除以 3。
R 命令有时可能很难理解,因此在某些情况下,用注释对其进行标注可能会很有用。这可以通过输入井号 (#) 字符来完成:同一行上的任何后续文本都将被 R 忽略。这将在本书的 R 示例中得到广泛使用,例如:
输入
#this is a comment: R will ignore it
(100+2)/3    #You can use round brackets to group operations so that they are carried out first
5*10^2       #The symbol * means multiply, and ^ means "to the power", so this gives 5 times (10 squared), i.e. 500
1/0          #R knows about infinity (and minus infinity)
0/0          #undefined results take the value NaN ("not a number")
(0i-9)^(1/2) #for the mathematically inclined, you can force R to use complex numbers
结果
> # 这是一个注释:R 将忽略它

> (100+2)/3 # 你可以使用圆括号对操作进行分组,以便它们先执行 [1] 34 > 5*10^2 # * 符号表示乘法,^ 表示“乘方”,因此这表示 5 乘以 (10 的平方) [1] 500 > 1/0 # R 知道无穷大(和负无穷大) [1] Inf > 0/0 # 未定义的结果将取值为 NaN(“非数字”) [1] NaN > (0i-9)^(1/2) # 对于数学爱好者,你可以强制 R 使用复数 [1] 0+3i

  • 如果你不了解复数,别担心:它们在这里并不重要。
  • 请注意,你不能使用花括号 {} 或方括号 [] 来对操作进行分组


v·d·e

存储对象

R 是一种称为“面向对象”的程序。所有内容(包括您刚刚输入的数字)都是一种对象。稍后我们将看到为什么这个概念如此有用。目前,您只需要注意您可以为对象指定一个名称,这将存储它以供以后使用。可以使用类似箭头的符号 <--> 来分配名称,如下面的练习所示。您使用哪个符号取决于您是否更喜欢将名称放在前面或后面(将 -> 视为“放入”,将 <- 视为“设置为”可能会有所帮助)。与许多统计软件包不同,R 通常不会显示您执行的分析结果。相反,分析通常以生成一个可以存储的对象结束。然后可以随时从该对象中获取结果。因此,在 R 中进行统计时,您会经常发现自己命名和存储对象。您选择的名称应包含字母、数字和“.”字符[3],并且不能以数字开头。
输入
0.001 -> small.num                #Store the number 0.0001 under the name "small.num" (i.e. put 0.0001 into small.num)
big.num <- 10 * 100               #You can put the name first if you reverse the arrow (set big.num to 10000).
big.num+small.num+1               #Now you can treat big.num and small.num as numbers, and use them in calculations
my.result <- big.num+small.num+2  #And you can store the result of any calculation
my.result                         #To look at the stored object, just type its name
pi                                #There are some named objects that R provides for you
结果
> 0.001 -> small.num # 在名称为“small.num”下存储数字 0.0001(即,将 0.0001 放入 small.num 中)

> big.num <- 10 * 100 # 您可以将名称放在前面,如果反转箭头(将 big.num 设置为 10000)。> big.num+small.num+1 # 现在您可以将 big.num 和 small.num 视为数字,并在计算中使用它们 [1] 1001.001 > my.result <- big.num+small.num+2 # 并且您可以存储任何计算的结果 > my.result # 要查看存储的对象,只需键入其名称 [1] 1002.001 > pi # R 为您提供了一些命名对象 [1] 3.141593

请注意,当命令的最终结果是存储(分配)一个对象时,例如在输入行 1、2 和 4 上,R 不会向屏幕打印任何内容。


v·d·e

函数

除了数字之外,R 中最有用的命名对象可能是**函数**。您在 R 中执行的几乎所有有用操作都是使用函数完成的,并且 R 默认情况下提供了许多函数。您可以通过键入函数名称后跟一对圆括号来使用(或“调用”)函数。例如,启动文本提到了以下函数,如果您想在已发表的作品中引用 R,您可能会发现它很有用
输入
citation()
结果
> citation() 要在出版物中引用 R,请使用:R Development Core Team (2008)。R:一种用于统计计算的语言和环境。R 统计计算基金会,维也纳,奥地利。ISBN 3-900051-07-0,URL http://www.R-project.org。LaTeX 用户的 BibTeX 条目是 @Manual{,url = {http://www.R-project.org},title = {R:一种用于统计计算的语言和环境},author = {{R Development Core Team}},organization = {R 统计计算基金会},address = {维也纳,奥地利},year = {2008},note = {{ISBN} 3-900051-07-0},} 我们在创建 R 上投入了大量时间和精力,请在使用它进行数据分析时引用它。另请参阅‘citation("pkgname")’ 以引用 R 包。
许多 R 函数可以根据您提供给它们的**参数**产生不同的结果。参数放置在圆括号内,用逗号隔开。许多函数有一个或多个可选参数:也就是说,您可以选择是否提供它们。citation() 函数就是一个例子。它可以接受一个可选参数,该参数提供R 附加包的名称。如果您没有提供可选参数,通常会使用一个假设的默认值(在 citation() 的情况下,这个默认值为 "base",即提供基本包的引用:提供 R 语言大部分基础的包)。

大多数函数参数是命名的。例如,citation 函数的第一个参数名为package。为了提供额外的清晰度,在使用函数时,您可以使用较长的形式name=value 提供参数。因此

citation("base")

citation(package="base")
相同。如果一个函数可以接受多个参数,使用长形式还可以改变参数的顺序,如下面的示例代码所示。
输入
citation("base")      #Does the same as citation(), because the default for the first argument is "base"
                      #Note: quotation marks are needed in this particular case (see discussion below)
citation("datasets")  #Find the citation for another package (in this case, the result is very similar)
sqrt(25)              #A different function: "sqrt" takes a single argument, returning its square root.
sqrt(25-9)            #An argument can contain arithmetic and so forth
sqrt(25-9)+100        #The result of a function can be used as part of a further analysis
max(-10, 0.2, 4.5)    #This function returns the maximum value of all its arguments
sqrt(2 * max(-10, 0.2, 4.5))             #You can use results of functions as arguments to other functions
x <- sqrt(2 * max(-10, 0.2, 4.5)) + 100  #... and you can store the results of any of these calculations
x
log(100)              #This function returns the logarithm of its first argument
log(2.718282)         #By default this is the natural logarithm (base "e")
log(100, base=10)     #But you can change the base of the logarithm using the "base" argument
log(100, 10)          #This does the same, because "base" is the second argument of the log function
log(base=10, 100)     #To have the base as the first argument, you have to use the form name=value
结果
> citation("base") # 与 citation() 相同,因为第一个参数的默认值为“base” 要在出版物中引用 R,请使用:R Development Core Team (2008)。R:一种用于统计计算的语言和环境。R 统计计算基金会,维也纳,奥地利。ISBN 3-900051-07-0,URL http://www.R-project.org。LaTeX 用户的 BibTeX 条目是 @Manual{,title = {R:一种用于统计计算的语言和环境},author = {{R Development Core Team}},organization = {R 统计计算基金会},address = {维也纳,奥地利},year = {2008},note = {{ISBN} 3-900051-07-0},url = {http://www.R-project.org},} 我们在创建 R 上投入了大量时间和精力,请在使用它进行数据分析时引用它。另请参阅‘citation("pkgname")’ 以引用 R 包。 > # 注意:在这种情况下需要引号(见下文讨论) > citation("datasets") # 查找另一个包的引用(在这种情况下,结果非常相似)'datasets' 包是 R 的一部分。要在出版物中引用 R,请使用:R Development Core Team (2008)。R:一种用于统计计算的语言和环境。R 统计计算基金会,维也纳,奥地利。ISBN 3-900051-07-0,URL http://www.R-project.org。LaTeX 用户的 BibTeX 条目是 @Manual{,title = {R:一种用于统计计算的语言和环境},author = {{R Development Core Team}},organization = {R 统计计算基金会},address = {维也纳,奥地利},year = {2008},note = {{ISBN} 3-900051-07-0},url = {http://www.R-project.org},} 我们在创建 R 上投入了大量时间和精力,请在使用它进行数据分析时引用它。另请参阅‘citation("pkgname")’ 以引用 R 包。 > sqrt(25) # 另一个函数:“sqrt”接受一个参数,返回它的平方根。 [1] 5 > sqrt(25-9) # 参数可以包含算术运算等等 [1] 4 > sqrt(25-9)+100 # 函数的结果可以作为进一步分析的一部分使用 [1] 104 > max(-10, 0.2, 4.5) # 该函数返回所有参数中的最大值 [1] 4.5 > sqrt(2 * max(-10, 0.2, 4.5)) # 您可以将函数的结果用作其他函数的参数 [1] 3 > x <- sqrt(2 * max(-10, 0.2, 4.5)) + 100 # ... 并且您可以存储这些计算结果 > x [1] 103 > log(100) # 该函数返回第一个参数的对数 [1] 4.60517 > log(2.718282) # 默认情况下,这是自然对数(以“e”为底) [1] 1 > log(100, base=10) # 但您可以使用“base”参数更改对数的底 [1] 2 > log(100, 10) # 这样做是一样的,因为“base”是 log 函数的第二个参数 [1] 2 > log(base=10, 100) # 要将基数作为第一个参数,您必须使用 name=value 形式 [1] 2
请注意,在键入普通文本(如包名称)时,它需要用引号[4]括起来,以避免与对象的名称混淆。换句话说,在 R 中
citation

指的是一个函数,而

"citation"

是一个文本“字符串”。这在提供绘图标题等时很有用。

您可能会发现,了解 R 的最棘手方面之一是知道在特定情况下使用哪个函数。幸运的是,R 不仅为所有其函数提供文档,还提供搜索文档的方法,以及其他获取帮助的方法。


v·d·e

获得帮助

在 R 中获得帮助有很多方法,而且还有大量在线信息。大多数 R 安装都带有一个相当详细的帮助文件,名为“R 入门”,但对于第一次使用统计软件包的用户来说,这可能有点技术性。R 中自动提供的几乎所有函数和其他对象都有一个帮助页面,该页面详细介绍了如何使用它们。这些帮助页面通常还包含示例,这对于新用户特别有用。但是,如果您不知道要查找的内容的名称,那么查找帮助可能并不容易,尽管可以搜索与对象相关的关键字和概念。某些版本的 R 提供轻松访问帮助文件,无需键入命令(例如,提供菜单栏的版本通常有一个“帮助”菜单,Macintosh 界面在右上角也有一个帮助框)。但是,始终可以通过键入相应的命令来访问此功能。您可能想在 R 会话中键入以下内容中的部分或全部内容(这里没有列出输出,因为结果将取决于您的 R 系统)。
help.start()            #A web-based set of help pages (try the link to "An Introduction to R")
help(sqrt)              #Show details of the "sqrt" and similar functions
?sqrt                   #A shortcut to do the same thing
example(sqrt)           #run the examples on the bottom of the help page for "sqrt"
help.search("maximum")  #gives a list of functions involving the word "maximum", but oddly, "max" is not in there!
### The next line is commented out to reduce internet load. To try it, remove the first # sign.
#RSiteSearch("maximum")  #search the R web site for anything to do with "maximum". Probably overkill here!
倒数第二个命令说明了使用 R 帮助函数时可能会遇到的一个问题。帮助文件的搜索功能有时有点随机。如果您找不到您要查找的确切内容,查看任何听起来有点相似或相关的帮助文件的“另请参阅”部分通常很有用。在这种情况下,您可能最终会通过查看 which.max() 帮助文件的“另请参阅”部分来找到 max() 函数。不太理想!。


v·d·e

退出 R

要退出 R,您可以使用 `quit()` 函数或其相同的快捷方式 `q()`,它们不需要任何参数。或者,如果您的 R 版本有菜单栏,您可以用鼠标选择“退出”或“结束”。
q()
无论哪种方式,都会询问您是否要保存工作区镜像。这将保存您迄今为止完成的所有工作,并在下次启动 R 时加载它。虽然这听起来是个好主意,但如果您回答“是”,您很快就会发现每次启动 R 时都会加载大量无关的过去分析。所以,如果您想干净地退出,请回答“否”。


设置维基教科书

[编辑 | 编辑源代码]

在开始阅读正文之前,我们建议您添加一些特定的维基教科书偏好设置。前三行将以更美观的形式显示 R 命令的示例。最后一行以更美观的形式呈现由多个图(称为子图)组成的图形。您可以通过创建用户 CSS 文件来实现这一点,如下所示。

  • 确保您已登录(如果您还没有帐户,请创建一个帐户)。
  • 访问您的个人 CSS 样式表,位于 Special:MyPage/skin.css
  • 单击“编辑此页面”。
  • 将以下几行粘贴到大型编辑框中
pre {padding:0; border: none; margin:0; line-height: 1.5em; }
.code .input ol {list-style: none; font-size: 1.2em; margin-left: 0;}
.code .input ol li div:before {content: "\003E \0020";}
table.subfigures div.thumbinner, table.subfigures tr td, table.subfigures {border: 0;}

[5]

  • 如果您了解任何CSS,请对这个样式表进行任何您喜欢的更改。
  • 最后,通过单击“保存页面”来保存页面。

够了!让我们继续阅读正文。

  1. 这些是拙劣的统计笑话尝试,您很快就会发现。
  2. 根据您如何查看这本书,您可能会看到每个命令前面有一个“>”字符。这不是要键入的命令的一部分:它是 R 本身生成的,提示您键入内容。如果您从本书的在线版本复制和粘贴,此字符应自动省略,但如果您阅读纸质版或 pdf 版本,则在键入 R 时应省略“>”提示。
  3. 如果您熟悉计算机编程语言,您可能习惯于在名称中使用下划线(“_”)字符。在 R 中,通常使用“.”来代替。
  4. 您可以使用单引号(')或双引号(")来分隔文本字符串,只要开始和结束引号匹配即可
  5. (请注意,这是一个临时 hack,直到 GeSHi 支持 R 代码,在这种情况下,统计分析:使用 R 入门/R/语法 可以更改。css 代码实际上应该读作
    .pre {padding:0; border: none; margin:0; line-height: 1.5em; } .source-R ol {list-style: none; font-size: 1.2em; margin-left: 0;} .source_R ol li div:before {content: "\003E \0020";}
下一页: 第 1 章 | 上一页: 封面
首页: 统计分析:使用 R 入门
华夏公益教科书