统计分析:使用 R 的入门 / R 基础
R 是一款命令驱动的统计软件包。乍一看,这可能会让它看起来难以使用。然而,有许多理由让你选择使用这款计算机程序来学习统计学。其中最重要的两个原因是
- R 是免费的;你可以从 https://r-project.org.cn 下载并将其安装到几乎任何你喜欢的计算机上。
- 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] 一定程度的自由度和能力,这是使用更“用户友好”的软件包无法实现的。
R 作为计算器
100+2/3
[1] 100.6667
#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
> (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
- 如果你不了解复数,别担心:它们在这里并不重要。
- 请注意,你不能使用花括号 {} 或方括号 [] 来对操作进行分组
存储对象
<-
和 ->
来分配名称,如下面的练习所示。您使用哪个符号取决于您是否更喜欢将名称放在前面或后面(将 ->
视为“放入”,将 <-
视为“设置为”可能会有所帮助)。与许多统计软件包不同,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
> 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
函数
citation()
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
指的是一个函数,而
"citation"
是一个文本“字符串”。这在提供绘图标题等时很有用。
您可能会发现,了解 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!
which.max()
帮助文件的“另请参阅”部分来找到 max()
函数。不太理想!。
退出 R
q()
在开始阅读正文之前,我们建议您添加一些特定的维基教科书偏好设置。前三行将以更美观的形式显示 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;}
- 如果您了解任何CSS,请对这个样式表进行任何您喜欢的更改。
- 最后,通过单击“保存页面”来保存页面。
够了!让我们继续阅读正文。
- ↑ 这些是拙劣的统计笑话尝试,您很快就会发现。
- ↑ 根据您如何查看这本书,您可能会看到每个命令前面有一个“>”字符。这不是要键入的命令的一部分:它是 R 本身生成的,提示您键入内容。如果您从本书的在线版本复制和粘贴,此字符应自动省略,但如果您阅读纸质版或 pdf 版本,则在键入 R 时应省略“>”提示。
- ↑ 如果您熟悉计算机编程语言,您可能习惯于在名称中使用下划线(“_”)字符。在 R 中,通常使用“.”来代替。
- ↑ 您可以使用单引号(')或双引号(")来分隔文本字符串,只要开始和结束引号匹配即可
- ↑ (请注意,这是一个临时 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";}