◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎ ◎
R软件是功能强大的统计编程(statistical programming)、统计分析(statistical analysis)和图形(graphics)绘制软件,具有SPSS等其他软件无可比拟的优势。Wilcox(2017a,p.5)比较了几种常见的软件。R软件是研究者的最佳选择。这不仅因为R软件是免费的,而且还在于R软件操作灵活,统计数据包更新快,统计分析、统计编程和制图能力非其他软件可比,尤其体现在现代统计方法(modern statistical methods)的应用上。SAS软件是很好的软件,功能强大,灵活性也很好,但是有许多最新的统计方法还不能通过SAS实现。Minitab是较好的软件,操作简单,且具有一定程度的灵活性。使用现代统计方法时,同SAS一样,Minitab编程比较麻烦。SPSS是令人不太满意的软件。SPSS是“傻瓜式”统计分析软件,用户点击适当的菜单即可完成统计分析任务。虽然这种点击式软件使用方便,但是方便的获得却以牺牲统计分析、编程和制图的灵活性为代价。而且,许多现代统计方法都不能通过SPSS来实现。
下面举两个例子,感受一下R的强大功能。
第一个例子是利用R开展随机分配。我们在实验研究中时常会将招募的被试随机分配到不同的实验条件中。随机分配的目的是使混淆变量(confounding variables)的影响在实验条件组之间实现对等,消除被试组实验前在若干变量方面的差异对实验结果造成的干扰。
假如我们要把40名被试(编号ID为1~40)随机分配到样本量相同的两个实验条件中( n =20)。我们用大写英语字母A和B(R命令为LETTERS[1:2])代表两个实验条件。本例随机分配的R命令和执行结果如下:
>set.seed(2)
>Population<-rep(LETTERS[1:2],20)
>Condition<-sample(Population)
>Condition
[1]' A' ' A' ' B' ' B' ' B' ' B' ' A' ' A' ' B' ' B' ' A' ' A' ' B'' A' ' A' ' A' ' B' ' B'
[19]' B' ' A' ' A' ' A' ' B' ' B' ' A' ' B' ' A' ' A' ' B' ' B' ' A'' A' ' B' ' B' ' A' 'B'
[37]' B' ' A' ' A' ' B'
以上结果中,“>”是R自带的命令提示符(prompt);使用R命令set.seed(2)设随机种子(random seed)为2,使结果可以被重复;使用函数rep使字母A和B均重复出现20次;使用R命令sample(Population)从总体(Population)中不重复随机抽样;R返还的结果以指标[1]、[19]和[37]显示。以上结果显示20个A和20个B,编号为1和2的被试被随机分配到条件A中,编号为3、4、5和6的被试被随机分配到条件B中,以此类推。
第二个例子是利用R计算词汇密度(lexical density,LD)。词汇密度是英语学习者产出文本词汇丰富性(lexical richness)的测量指标之一。词汇密度指文本涵盖实词(content words)的比率,用于测量文本提供信息的量。在测量上,文本词汇密度为排除功能词(function words)后的文本词数占文本总词数的比率。
假如我们要计算以下文本(TEXT1)的词汇密度:
English teachers could design those output tasks which are more word focused and have strong contextual clues for the meanings and grammatical usage of unfamiliar words.In terms of the least task time required,the definition task seems to be the most conducive to vocabulary learning,especially learning word meanings,among the output tasks designed in this study.If the complex grammatical or collocational knowledge of some unknown words needs to be acquired,or some unknown words may present special learning difficulties,English teachers could design writing tasks.Sometimes,English teachers may combine different output tasks,for example,the definition and writing tasks,making most use of the advantages each task potentially has for word retention.
在计算词汇密度之前,我们要对TEXT1(文本格式,存放在当前工作簿里,如' D:/Rpackage' )进行预处理,去除文中的标点符号,将句首的大写字母(包括A和The等功能词)改为小写,以便与功能词表(作为对照词表)中的词匹配。本例使用的英语功能词表是直接从R数据包corpustools中调用的功能词表stopwords_list,包括174个功能词,取R文件名为Stoplist。本例R命令和计算结果如下:
>require(corpustools)
>setwd(' D:/Rpackage')
>TEXT1<-scan(' TEXT1.txt',what='character',sep='',quiet=TRUE)
>TEXT1<-tolower(TEXT1)#lower case version of the text
>require(tm)
>TEXT1<-removePunctuation(TEXT1)#remove punctuation marks
>Stoplist<-stopwords_list
>Stoplist<-stopwords l_ist english
>Content<-removeWords(TEXT1,Stoplist)# content words only
>Content<-data.frame(table(Content))# word frequency list
>colnames(Content)<-c(' Words',' Freq' )
>Content<-Content[order(-Content$Freq),]#in descending order
>LD<-(length(TEXT1)-Content[1,2])/length(TEXT1)
>LD
[1]0.637 931
在以上输入中,“#”后的内容为评注(comments),R对之忽略。统计分析结果中表明,本例的词汇密度约为64%。