R 语言生物统计学/有序数组
示例 2.2.1 详细说明了排序数组的步骤。该数组是一系列接受两种戒烟计划的受试者的年龄。假设您已经使用以下命令导入数据集
> SmokeCProg <- read.csv("/EXA_C01_S04_01.csv", header=T, na.strings=NA)
最好使用描述性名称(例如 SmokeCProg 代表戒烟计划)而不是常用的占位符名称,例如 x、y。我们可以使用以下命令获得年龄的排序数组
> sort(SmokeCProg$AGE)
如表 2.3.1 所示,年龄的频率分布可以使用以下方法获得
> table(cut(SmokeCProg$AGE, b=c(0,39,49,59,69,79,89))) (0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 11 46 70 45 16 1
cut 命令根据提供的断点(0,39,49,59,69,79,89)划分 AGE 变量。在表 2.3.2 中,提供了年龄的频数表。正如 Venables 等人在“R 语言入门”一书中所建议的那样,统计分析通常作为一系列步骤进行,中间结果存储在对象中。与其他统计软件包相比,R 语言仅提供最少的输出。我们将在此示例中演示此重要特性。在前面的示例中,我们使用 table() 和 cut() 命令计算了年龄的频率分布。我们可以使用以下方法将结果存储在名为“AgeFreqTable”的对象中
> AgeFreqTable <- table(cut(SmokeCProg$AGE, b=c(0,39,49,59,69,79,89)))
您将不会获得任何输出。直到您调用对象“AgeFreqTable”
> AgeFreqTable (0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 11 46 70 45 16 1
为了获得累积频率,我们可以使用 cumsum() 命令处理对象“AgeFreqTable”
> cumsum(AgeFreqTable) (0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 11 57 127 172 188 189
在我们跳到相对频率的计算之前,我们可以使用 length() 函数获得变量中的观测总数
> length(SmokeCProg$AGE) [1] 189
我们可以通过将对象“AgeFreqTable”中的每个项目除以观测总数来计算相对频率
> AgeFreqTable/length(SmokeCProg$AGE) (0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 0.058201058 0.243386243 0.370370370 0.238095238 0.084656085 0.005291005
同样,可以使用以下方法计算累积相对频率
> cumsum(AgeFreqTable)/length(SmokeCProg$AGE) (0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 0.05820106 0.30158730 0.67195767 0.91005291 0.99470899 1.00000000
如果您想将相对频率的结果四舍五入到 4 位数,可以使用 round() 函数
> round (AgeFreqTable/length(SmokeCProg$AGE),digits=4) (0,39] (39,49] (49,59] (59,69] (69,79] (79,89] 0.0582 0.3016 0.6720 0.9101 0.9947 1.0000
或者,您可以将相对频率的结果存储在一个新对象中,然后使用 round() 函数处理该对象
> AgeRelFreqTable <- AgeFreqTable/length(SmokeCProg$AGE) > round (AgeRelFreqTable, digits=4)
练习:尝试使用 R 命令将累积相对频率的结果四舍五入到 4 位数。要绘制直方图,可以使用 hist() 函数,例如
> hist(SmokeCProg$AGE)
您可以通过添加一些参数(即选项)来自定义直方图,您可以在输入 ?hist 以了解更多关于 hist() 函数参数的信息。例如,如果您想绘制仅包含五个条形图的直方图(类似于图 2.3.2)
> hist(SmokeCProg$AGE, breaks=5)
您可以向 hist() 函数添加更多参数,例如
> hist(SmokeCProg$AGE, breaks=5, ylim=c(0,70), main="Histogram of Ages of 189 subjects", col="red", xlab="Age")
请记住,当您有疑问时,请始终参考文档(例如 ?hist 或 help.search("histogram"))。在 95% 的情况下,您可以在帮助文档中找到答案。例如,您不知道如何绘制茎叶图来显示您的数据。您甚至不知道函数的名称。您可以使用 help.search() 搜索关键字“stem”,即
> help.search("stem")
结果中应该有一个名为 stem() 的函数。然后我们尝试使用此函数来可视化我们的数据
> stem(SmokeCProg$AGE) The decimal point is 1 digit(s) to the right of the | 3 | 04 3 | 577888899 4 | 00223333334444444 4 | 55566666677777788888889999999 5 | 0000000011112222223333333333333333344444444444 5 | 555666666777777788999999 6 | 000011111111111222222233444444 6 | 556666667888999 7 | 0111111123 7 | 567888 8 | 2
与 MINITAB 不一样,茎单位由 scale 参数调整。上面的绘图使用默认的 scale 为 1,相当于茎单位 =5。要将茎单位更改为 10,scale 参数的值应更改为 0.5
> stem(SmokeCProg$AGE, scale=0.5) The decimal point is 1 digit(s) to the right of the | 3 | 04577888899 4 | 0022333333444444455566666677777788888889999999 5 | 00000000111122222233333333333333333444444444445556666667777777889999 6 | 000011111111111222222233444444556666667888999 7 | 0111111123567888 8 | 2