【R笔记】R语言函数总结
R語言與數(shù)據(jù)挖掘:公式;數(shù)據(jù);方法
R語言特征
對大小寫敏感
通常,數(shù)字,字母,. 和 _都是允許的(在一些國家還包括重音字母)。不過,一個命名必須以 . 或者字母開頭,并且如果以 . 開頭,第二個字符不允許是數(shù)字。
基本命令要么是表達式(expressions)要么就是 賦值(assignments)。
命令可以被 (;)隔開,或者另起一行。
基本命令可以通過大括弧({和}) 放在一起構(gòu)成一個復(fù)合表達式(compound expression)。
一行中,從井號(#)開始到句子收尾之間的語句就是是注釋。R是動態(tài)類型、強類型的語言。R的基本數(shù)據(jù)類型有數(shù)值型(numeric)、字符型(character)、復(fù)數(shù)型(complex)和邏輯型(logical),對象類型有向量、因子、數(shù)組、矩陣、數(shù)據(jù)框、列表、時間序列。
基礎(chǔ)指令
程序輔助性操作:
運行
q()——退出R程序tab——自動補全ctrl+L——清空consoleESC——中斷當前計算
調(diào)試查錯
browser() 和 debug()——設(shè)置斷點進行,運行到此可以進行瀏覽查看(具體調(diào)試看browser()幫助文檔(c,n,Q))stop('your message here.')——輸入?yún)?shù)不正確時,停止程序執(zhí)行
cat()——查看變量?
幫助
help(solve) 和?solve 等同??solve——檢索所有與solve相關(guān)的信息help("[[") 對于特殊含義字符,加上雙引號或者單引號變成字符串,也適用于有語法涵義的關(guān)鍵字 if,for 和 function
help(package="rpart")——查看某個包
help.start()——得到html格式幫助
help.search()——允許以任何方式(話題)搜索幫助文檔
example(topic)——查看某個幫助主題示例apropos("keyword")——查找關(guān)鍵詞keyword相關(guān)的函數(shù)RSiteSearch("onlinekey", restrict=fuction)——用來搜索郵件列表文檔、R手冊和R幫助頁面中的關(guān)鍵詞或短語(互聯(lián)網(wǎng))RSiteSearch('neural networks')
準備
文件目錄設(shè)置
setwd(<dir>)——設(shè)置工作文件目錄getwd()——獲取當前工作文件目錄list.files()——查看當前文件目錄中的文件
加載資源
search()——通過search()函數(shù),可以查看到R啟動時默認加載7個核心包。
基礎(chǔ)函數(shù):數(shù)學(xué)計算函數(shù),統(tǒng)計計算函數(shù),日期函數(shù),包加載函數(shù),數(shù)據(jù)處理函數(shù),函數(shù)操作函數(shù),圖形設(shè)備函數(shù) setRepositpries()——選擇軟件庫(CRAN,Bioconductor,R-Forge),尋找安裝包的方法另看《【R筆記】尋找R的安裝包》(.packages())——列出當前包
(.packages(all.available=TRUE))——列出有效包
install.packages(“<package>”)——安裝包library()和require()——加載R包(package)至工作空間
data()——列出可以被獲取到的存在的數(shù)據(jù)集(base包的數(shù)據(jù)集)data(<datasets>,package=“nls”)——將nls包的datasets加載到數(shù)據(jù)庫中
批處理文件和結(jié)果重定向
source("commands.R")——執(zhí)行commands.R (存放批處理命令的)腳本文件。cat(<Rcommond>,file="")——可以把R命令輸出至外部文件,然后調(diào)用source函數(shù)進行批處理
do.call(<funcname>,<pars>)——調(diào)用函數(shù),第一個參數(shù)<funcnames>指示調(diào)用函數(shù)字符串名稱,第二個參數(shù)包含調(diào)用所需參數(shù)的一個列表<pars>sink("record.lis")——把后續(xù)的輸出結(jié)果從控制臺重定向到外部文件 record.lis 中sink()——把后續(xù)代碼輸出重新恢復(fù)到終端上展示
attach(<datafame>)——將數(shù)據(jù)框<datafame>中的變量鏈接到內(nèi)存中,便于數(shù)據(jù)調(diào)用detach()——對應(yīng)attach(<datafame>),取消變量的鏈接,detach()里沒有參數(shù)!注:attach()和detach()均是在默認變量搜索路徑表中由前向后找到第一個符合變量名稱,因此之前若存在重名變量,有可能會出現(xiàn)問題!!!
數(shù)據(jù)處理
輸入輸出(讀入輸出數(shù)據(jù)、文件)
assign("x",c(1,2,3)) 和 x <- c(1,2,3) 和 c(1,2,3)->x ——向量賦值
read.table("infantry.txt", sep=" ", header=TRUE)——seq屬性用其它字符分割,比如文本文件用空格(tab)分隔,header設(shè)置為文件中已經(jīng)存在表頭名稱
read.csv("targets.csv")——讀入csv(Comma Seperated Values)文件,屬性被逗號分割read.csv(url("<link>"))——read.csv() 和 url()的合體,讀存在網(wǎng)上的數(shù)據(jù)
x <- scan(file="")——手動輸入數(shù)據(jù),同時scan可以指定輸入變量的數(shù)據(jù)類型,適合大數(shù)據(jù)文件
scan("data.dat", what = list("", 0, 0))——what指定變量類型列表readLines('http://en.wikipedia.org/wiki/Main_Page',n=10)——讀取文本文件,將文檔轉(zhuǎn)為以行為單位存放的list格式,比如讀取讀取wikipedia的主頁html文件的前十行
write.table(Data, file="file.txt", row.names = FALSE, quote=FALSE)——輸出,quote為FALSE去掉字符串類型的雙引號,write.table(stasum, "stasum.csv",row.names = FALSE,col.name=FALSE,sep=",",append=TRUE)write.csv(data,file="foo.csv",row.names=FALSE)——寫成csv格式,row.names=FALSE去掉行號
print()——打印
save.image("./data.RData")——把原本在計算機內(nèi)存中(工作空間)活動的數(shù)據(jù)轉(zhuǎn)存到硬盤中。load("./RData")——加載目錄中的*.RData,把文檔-詞項矩陣從磁盤加載到內(nèi)存中
數(shù)據(jù)查看
通用對象
R是一種基于對象(Object)的語言,對象具有很多屬性(Attribute),其中一種重要的屬性就是類(Class),最基本的類包括了數(shù)值(numeric)、邏輯(logical)、字符(character)、列表(list),符合類包括矩陣(matrix)、數(shù)組(array)、因子(factor)、數(shù)據(jù)框(dataframe)。
class(<object>) 和data.class(object)——查看對象object的類或類型unclass()——消除對象object的類
基本數(shù)據(jù)類型
mode()——查看基本數(shù)據(jù)類型length()——查看長度
as.<數(shù)據(jù)類型>——改變對象的數(shù)據(jù)類型
特殊屬性
attributes(<object>)——查看對象object各種屬性組成的列表
attr(<object>,“name”)——存取對象object的名為name的屬性
混合類型
邏輯類型+數(shù)值類型=數(shù)值類型
邏輯類型+字符類型=字符類型數(shù)值類型+字符類型=字符類型
ls()和objects()——查看當前工作空間中存在的對象(變量)rm(list=ls())——刪除工作空間的所有對象methods(x)——查看x函數(shù)的源碼,有些自帶函數(shù)輸入名稱x可以直接看到,有一些需要調(diào)用methods方法才能查看函數(shù)x的源碼,出現(xiàn)多重名,輸入對應(yīng)名稱即可
str()——查看數(shù)據(jù)(框)中的數(shù)據(jù)總體信息(比如樣本個數(shù)、變量個數(shù)、屬性變量名稱、類型)
nrow(dataframe)——查看數(shù)據(jù)集行數(shù)
NROW(vector)——查看向量的行數(shù),等于length(x)head(dataframe)——查看數(shù)據(jù)集前6行數(shù)據(jù)tail(dataframe)——查看數(shù)據(jù)集尾6行數(shù)據(jù)
向量特征
邏輯向量運算:TRUE,F(xiàn)ALSE——全部大寫isTRUE(x)——判斷x為TRUE*|,&,!——或且非,注意是單個,不是&&!
ANY,ALL——任意,全部
數(shù)組和矩陣train$vartrain$new[train$var == NA] <- 1Data[is.na(Data)] <- 0——數(shù)據(jù)框多維變量中給NA值賦值為0
apply(A,Margin,F(xiàn)UN,...)——A為矩陣,Margin設(shè)定待處理的維數(shù),為1是橫排(行),為2是豎排(列)做運算,F(xiàn)un是運算函數(shù)sweep(x,2,apply(x,MARGIN=1,mean),F(xiàn)UN)——對數(shù)組或者矩陣進行運算。MARGIN=1表示行,2表示列;STATS統(tǒng)計量,如apply(x,MARGIN=1,mean),F(xiàn)UN函數(shù)運算默認為減法,“/”除法y.vector<-with(data,get(yval))——表示在data數(shù)據(jù)框中讀取列名稱為yval的向量。with(<data>,<colname|func>)——提取數(shù)據(jù)框中的某些參數(shù)做運算,對于數(shù)據(jù)框運算很方便
繪圖
plot()——繪制圖像plot(<vecter_horizontal>, <vector_vertical>, pch=as.integer(<factors>),col,xlab,ylab)——用factors區(qū)分圖像點的類型pch(圓的,三角,叉),col是顏色類別,xlab或者ylab對應(yīng)橫縱軸標題legend(<location="topright">,legend=<vector_labelname>,pch=1:3,cex=1,col)——圖例,<location>是位置(比如右上),<vector_labelname>圖例類別標簽名,pch是圖例對應(yīng)標簽的類別id(向量),<cex>調(diào)整字體比例大小,顏色設(shè)置,legend("topright", levels(<factors>), pch=1:length(levels(factors)))text(X,Y,labels=c(1,2,3),adj=1.2)——添加標注,X,Y是對應(yīng)坐標的向量,labels是標記值,adj調(diào)整標注位置abline(h = <int>,lty=2)——低級繪圖添加一條水平線h或者是回歸模型直線,垂線v;lty為2表示繪制虛線
abline(a,b)——畫一條y=a+bx的直線points(x,y)————低級繪圖,畫個點,坐標為向量x,ylines(x,y)——低級繪圖,畫一條線,坐標為向量x,y
axis(side=1,at=seq(from=0.7,by=1.2,length.out=7),labels=c(...))——繪制坐標軸,低級繪圖,side為2是縱坐標
barchart()——lattice包預(yù)先要對數(shù)據(jù)匯總barplot(<vector>)——繪制柱狀圖,vector可增加名稱。也可以繪制直方圖,和hist()均分數(shù)據(jù)不太一樣,需要用table()統(tǒng)計各個子分段下樣本數(shù)量后在畫圖。mosaicplot(x~y,main,color=T,xlab,ylab)——柱形對應(yīng)關(guān)系圖
contour(<matrix>)——創(chuàng)建等高線
persp(<matrix>,expand=0.2)——創(chuàng)建3D圖,expand擴展值設(shè)置為0.2,否則為全屏擴展image(volcano)——加載柵格(矩陣)圖像
par(mfrow=c(1,2),oma,mar)——mfrow設(shè)置圖形輸出窗口為1行2列,添加car包?oma是所有圖像距離邊框的距離(底部,左邊,頂部,右邊),mar是每幅圖像對邊框的距離,默認是c(5, 4, 4, 2) + 0.1。lines(data)——(低級)原圖中畫線,data是由散點(x,y)組成rug(jitter(<data>),side =2)——檢驗離群點數(shù)據(jù),rug()原圖中執(zhí)行繪圖繪制在橫坐標上,side為2是縱坐標,jitter(<data>)對繪制值略微調(diào)整,增加隨機排序以避免標記值作圖重合。
pairs(data)——數(shù)據(jù)框各個變量的散布圖
coplot(y~x|a+b)——多個變量時的散點圖,在a,b(向量或是因子)的劃分下的y與x的散點圖scatterplotMatr()——散點圖矩陣,car包
identify(<data>)——交互式點選,單擊圖形中的點,將會輸出對應(yīng)數(shù)據(jù)的行號,右擊結(jié)束交互stem(x,scale=1,width=80,atom=1e-08)——莖葉圖,scale控制莖葉圖的長度,為2即是以0~4為一組,5~9為一組將個位分成兩部分,width是繪圖寬度,atom是容差
boxplot()——箱圖,研究變量的中心趨勢,以及變量發(fā)散情況和離群值。上體頂部和底部為上下四分位數(shù),中間粗線為中位數(shù),上下伸出的垂直部分為數(shù)據(jù)的散步范圍,最遠點為1.5倍四分為點,超出后為異常點,用圓圈表示。boxplot(y~f,notch=TRUE,col=1:3,add=TRUE)#y是數(shù)據(jù),f是由因子構(gòu)成,notch是帶有切口的箱型圖,add=T圖疊加到上一幅圖。plot(f,y)——箱線圖,f是因子,y是與f因子對應(yīng)的數(shù)值bwplot(<factor> ~ <y>,data,ylab)——lattice包的箱圖,繪制不同factor下的y的箱圖(條件繪圖,在某個因子取值集合下的y值變化)
bwplot(size~a1,data,panel=panel.bpplot,prob=seq(.01,.49,by=.01),datadensity=TRUE,ylab='')——Hmisc包的分位箱圖
earth.count(na.omit(x),number=4,overlap=1/5)——連續(xù)變量x的離散化,把x轉(zhuǎn)化為因子類型;number設(shè)置區(qū)間個數(shù),overlap設(shè)置兩個區(qū)間靠近邊界的重合?每個區(qū)間的觀測值相等stripplot(x1~y|x2)——lattice包的復(fù)雜箱圖,存在兩個因子x1,x2控制下的y, x2按照從左到右,從下到上的順序排列,左下方的x2值較小
palette()——col取值對應(yīng)的顏色,"black" "red" "green3" "blue" "cyan" "magenta" "yellow" "gray" colors()——列出對應(yīng)的顏色數(shù)組
qcc()——qcc包,監(jiān)控轉(zhuǎn)化率型指標的質(zhì)量監(jiān)控圖(P控制圖),監(jiān)控異常點,前提是二項分布足夠大后趨于正態(tài)分布mosaic(<tab>,shade=T,legend=T)——繪制三級列聯(lián)表,<tab>是三級列聯(lián)表或者公式,vcd包
curve(sapply(x,<func>),<from>,<to>)——畫曲線圖,from和to設(shè)置橫坐標取值范圍
編輯
optim(c(0,0),<func>)——優(yōu)化問題函數(shù),c(0,0)是優(yōu)化函數(shù)參數(shù)的初始值,返回值par是參數(shù)最優(yōu)點值,value是參數(shù)的最優(yōu)點時平方誤差值,counts是返回執(zhí)行輸入函數(shù)func的次數(shù)以及梯度gradient的次數(shù),convergence值為0表示有把握找到最優(yōu)點,非0值時對應(yīng)錯誤,message是一些其它信息。curve(sapply(x,<func>),<from>,<to>)——畫曲線圖,from和to設(shè)置橫坐標取值范圍
sample(length(x),<size>,replace=F)——采樣,生成向量x的隨機順序的大小為<size>的新向量;replace為False為不重復(fù)抽樣,為True則重復(fù)抽樣Round ——取整。精確
ceiling()——取整,偏向數(shù)值小的floor() ——取整,偏向數(shù)值大的
%/% ——整除
colnames(Data)[4]="value"——更換某一列名
edit()——編輯數(shù)據(jù)表格
fix()——rm(x,y)——移除對象(變量)x和y
na.exclude(<data>)——移除缺失數(shù)據(jù)整行
na.omit(<data>)——刪除缺失數(shù)據(jù)
attr(na.omit(<data>),"na.action")——返回向量a中元素為NA的下標na.fail()——如果向量中至少包括1個NA值,則返回錯誤;如果不包括任何NA,則返回原有向量
merge(x = targets, y = infanty)——合并數(shù)據(jù)框,x和y是待合并數(shù)據(jù)框,相同屬性字段也會合并在一起
merge(x, y, by = intersect(names(x), names(y)),by.x = by, by.y = by, all = FALSE, all.x = all, all.y = all,sort = TRUE, suffixes = c(".x",".y"),incomparables = NULL, ...)merge函數(shù)參數(shù)的說明:
x,y:用于合并的兩個數(shù)據(jù)框 by,by.x,by.y:指定依據(jù)哪些行合并數(shù)據(jù)框,默認值為相同列名的列. all,all.x,all.y:指定x和y的行是否應(yīng)該全在輸出文件. sort:by指定的列是否要排序.
suffixes:指定除by外相同列名的后綴. incomparables:指定by中哪些單元不進行合并.
scale(x, center = TRUE, scale = TRUE)——中心化與標準化,center是中心化,scale是標準化。(全選:減去均值,再除以標準差)
cut(x,breaks=c(0,10,30),labels,ordered_result=F)——連續(xù)數(shù)據(jù)的離散化,將向量依據(jù)breaks區(qū)間分割為因子向量。labels設(shè)置返回因子向量的水平標簽值,ordered_result為False生成的因子向量無大小意義,否則有大小意義
apply族函數(shù)
apply(A,MARGIN,F(xiàn)UN,...)——處理對象A是矩陣或數(shù)組,MARGIN設(shè)定待計算的維數(shù),F(xiàn)UN是某些函數(shù),如mean,sum注:apply與其它函數(shù)不同,它并不能明顯改善計算效率,因為它本身內(nèi)置為循環(huán)運算。按列?lappy(dataframe,F(xiàn)UN,list(median,sd))——處理對象是向量、列表或其它對象,輸出格式為列表listsapply(dataframe$Filed,F(xiàn)UN)——與lapply()相似,輸出格式為矩陣(或數(shù)據(jù)框)
按行?tapply(X, INDEX, FUN, simplify = TRUE)——處理分組數(shù)據(jù), INDEX和X是有同樣長度的因子,simplify是邏輯變(量默認為T)aggregate(x~y+z, data,F(xiàn)UN)和by()——和tapply功能類似
其余參看:apply函數(shù)族
plyr庫
ddply(Data,.(user_id,item_id),summarize,liulan=sum(liulan))——split-apply-combine的一體化函數(shù);.(user_id,item_id)作為每行的一對標識ID(因子),前面的“.”號省略數(shù)據(jù)框名稱;summrize是一個函數(shù)fun;liulan是一個變量,最后生成的數(shù)據(jù)框只有user_id,item_id,liulan三列。詳情參見例子 R語言利器之ddplytransform(x,y)——將x和y的列轉(zhuǎn)換成·一個數(shù)據(jù)框。
reshape庫(reshape2)
melt(data,id.vars)——轉(zhuǎn)換數(shù)據(jù)溶解。修改數(shù)據(jù)組織結(jié)構(gòu),創(chuàng)建一個數(shù)據(jù)矩陣,以id.var作為每行的編號,剩余列數(shù)據(jù)取值僅作為1列數(shù)值,并用原列名作為新數(shù)值的分類標記。cast(data, userid~itemid,value="rattings",fill=0)——統(tǒng)計轉(zhuǎn)換數(shù)據(jù),生成矩陣,公式~左邊的作為行表名,右邊的作為列表名。之后可以用cor()計算每列數(shù)據(jù)之間的相關(guān)系數(shù),并計算距離。acast 和 dcast(data, userid~itemid,value.var="rattings")——同上,reshape2包,acast最后生成數(shù)組,dcase生成數(shù)據(jù)框。參見R語言進階之4:數(shù)據(jù)整形(reshape)
字符串處理
nchar()——獲取字符串長度,它能夠獲取字符串的長度,它也支持字符串向量操作。注意它和length()的結(jié)果是有區(qū)別的?什么區(qū)別paste("a", "b", sep="")——字符串粘合,負責將若干個字符串相連結(jié),返回成單獨的字符串。其優(yōu)點在于,就算有的處理對象不是字符型也能自動轉(zhuǎn)為字符型。strsplit(A,split='[,.]')——字符串分割,負責將字符串按照某種分割形式將其進行劃分,它正是paste()的逆操作。substr(data,start,stop)——字符串截取,能對給定的字符串對象取出子集,其參數(shù)是子集所處的起始和終止位置。子集為從start到stop的下標區(qū)間grep()——字符串匹配,負責搜索給定字符串對象中特定表達式 ,并返回其位置索引。grepl()函數(shù)與之類似,但其后面的"l"則意味著返回的將是邏輯值
regexpr(pattern,text)——從字符串text中提取特定的字符串的下標位置gregexpr()——只查詢匹配的第一個特定字符串的下標位置gsub("a",1,<vector>)——字符串替代,負責搜索字符串的特定表達式,并用新的內(nèi)容加以替代。
sub()函數(shù)——和gsub是類似的,但只替代第一個發(fā)現(xiàn)結(jié)果。chartr( )——字符串替換函數(shù)
toupper( )、tolower( )及casefold( )——大小寫轉(zhuǎn)換函數(shù)其余參見:R語言中的字符串處理函數(shù)
控制流
if—else——分支語句switch(index,case1,case2,casen)——index指示跳到第i個casei中for(i in <vecter>)——循環(huán)語句,通過控制變量iwhile——循環(huán)語句,通過設(shè)定循環(huán)范圍repeat—break——循環(huán)語句,無限循環(huán),由break跳出
特殊數(shù)據(jù)對象
向量特性
向量數(shù)組初始小標序號從1開始向量增加元素可以直接通過“vector[n+1]<-0”方式增加
a<-c()——向量初始化vector <- numeric(<int>)——創(chuàng)建初始向量<int>個數(shù),并賦初值為0
length(vector)<- leg——修改對象長度為legnames(vector) <- c("A","B","C")——給向量起名稱
vector["A"]——通過名稱訪問對應(yīng)元素a == c(1, 99, 3)——比較每一個元素對應(yīng)是否相等
c(0,1)——創(chuàng)建向量,向量內(nèi)元素類型應(yīng)一致!seq(5,9)和 5:9 ——連續(xù)向量,等差數(shù)列seq(5,9,0.5)——以0.5為間隔創(chuàng)建seq(from,to,length,by)
數(shù)據(jù)索引
which(is.na(var) == T)——返回對應(yīng)數(shù)組序號
which.max() 和 which.min()——返回數(shù)值類型中最大和最小元素下標subset(<data>,<condition>,<colname>)——索引,<data>是數(shù)據(jù),<condition>是索引條件,colnames指定索引列名match(x,table,nomatch,incomparables)——匹配函數(shù),返回x對應(yīng)值在table中是否存在,并從1開始編號。x是查詢對象,table是待匹配的向量,nomatch是不匹配項的設(shè)置值(默認為NA值),incomparables設(shè)置table表中不參加匹配的數(shù)值,默認為NULL<x> %n% <y>——判斷x中是否包含y,返回x對應(yīng)的邏輯值
排序
sort(x, decreasing = FALSE, na.last = NA, ...)——排序,單變量排序,輸出排序結(jié)果(不是序號)。na.last為TRUE,缺失值放在數(shù)據(jù)最后,為False 缺失值放在數(shù)據(jù)最前面,為NA,缺失數(shù)據(jù)將被移除sort.list()——排序輸出序號值order()——排序,多個變量數(shù)據(jù)框排序,返回數(shù)據(jù)框序號數(shù)。order例子【結(jié)】結(jié)合ddply和transform函數(shù),降序輸出并,輸出編號:ddply(dfx,.(group,sex),.fun=function(x){transform(x[order(x$age,decreasing=TRUE),c(1:3)],ind=1:length(group))})
rank()——秩排序,有重復(fù)數(shù)字的時候就用這個,根據(jù)數(shù)值之間的遠近輸出序號
rev()——依據(jù)下標從后往前倒排數(shù)據(jù)unique(<dataframe>)——返回無重復(fù)樣本的數(shù)據(jù)集duplicated(x)——查找重復(fù)數(shù)據(jù),重復(fù)序號返回為TRUE
比較大小
pmin(x1,x2,...)——比較向量中的各元素,并把較小的元素組成新向量pmax(x1,x2,...)——
向量間的交、并、補集
union(x, y)——(并集)合并兩組數(shù)據(jù),x和y是沒有重復(fù)的同一類數(shù)據(jù),比如向量集intersect(x, y)——(交集)對兩組數(shù)據(jù)求交集,x和y是沒有重復(fù)的同一類數(shù)據(jù),比如向量集setdiff(x, y)——(補集)x中與y不同的數(shù)據(jù),x和y是沒有重復(fù)的同一類數(shù)據(jù),比如向量集,重復(fù)不同不記setequal(x, y)——判斷x與y相同,返回邏輯變量,True為相同,F(xiàn)alse不同。x和y是沒有重復(fù)的同一類數(shù)據(jù),比如向量集is.element(x, y) 和 %n%——對x中每個元素,判斷是否在y中存在,TRUE為x,y重共有的元素,F(xiàn)asle為y中沒有。x和y是沒有重復(fù)的同一類數(shù)據(jù),比如向量集
Vectorize()——將不能進行向量化預(yù)算的函數(shù)進行轉(zhuǎn)化
矩陣
array(data=NA,dim=length(data),dimnames=null)——數(shù)組、矩陣初始化,dim是數(shù)組各維的長度dimnames是數(shù)組維的名字,默認為空,array(1:20, dim=c(4,5))。數(shù)組是多維的,dim屬性設(shè)置維數(shù)
matrix(0, 3, 4)——0為賦初值,3行,4列,存儲方式是先列后行!矩陣是二維的,用ncol和nrow設(shè)置矩陣的行數(shù)和列數(shù)。byrow設(shè)置存儲方式(默認列優(yōu)先),若為TRUE則以行優(yōu)先
dim(<vector>)<- c(2,3)——設(shè)置矩陣為2行3列dimnames()=list(c(<row>),c(<col>))——設(shè)置參數(shù)行和列的名稱,以列表的形式進行輸入matrix[ ,4]——矩陣第4列as.vector(matrix)——將矩陣轉(zhuǎn)換成向量a["name1","name2"]——矩陣以行和列的名稱來代替行列的下標,name1是行名,name2是列名
rbind()——矩陣合并,按行合并,自變量寬度應(yīng)該相等
cbind()——矩陣合并,安列合并,自變量高度應(yīng)該相等
t()——矩陣轉(zhuǎn)置det()——行列式solve(A,b)——求線性方程組Ax=bsolve(A)——求逆矩陣eigen(A) ——求距陣的特征值與特征向量,Ax=(Lambda)x,A$values是矩陣的特征值構(gòu)成的向量,A$vectors是A的特征向量構(gòu)成的矩陣*——矩陣中每個元素對應(yīng)相乘%*%——矩陣相乘
因子
因子和向量的區(qū)別:向量里面存的元素類型可以是字符型,而因子里面存的是整型數(shù)值對應(yīng)因子的類別(levels)as.integer(<factors>)——因子可以轉(zhuǎn)化為整型levels(<factors>)——查看因子類別gl(n,k,length)——因子,n為水平數(shù),k為重復(fù)的次數(shù),length為結(jié)果的長度factor(x,levels,labels)——因子as.factror()——將向量轉(zhuǎn)化為無序因子,不能比較大小as.order()——將向量轉(zhuǎn)化為有序因子
is.factor()——判斷是否為無序因子is.order()——判斷是否為有序因子
列表和數(shù)據(jù)框
list()——列表unlist()——列表轉(zhuǎn)化為向量
data.frame()——數(shù)據(jù)框names(<dataframe>)——顯示數(shù)據(jù)框的列名稱dataframe[[2]] 和 dataframe[["TheSec.Name"]]和dataframe$TheSec.Name——獲取數(shù)據(jù)框第二列的元素值as.matrix(<dataframe>)[,1]——把數(shù)據(jù)框轉(zhuǎn)化為矩陣后,再去提取列向量
na和NULL的區(qū)別
is.na()——判斷na值存在,na是指該數(shù)值缺失但是存在。is.null()——判斷數(shù)據(jù)是否為NULL。NULL是指不存在,可以通過 train$var<-NULL 的方法去掉屬性變量var。
處理缺失數(shù)據(jù)na
1、將缺失部分剔除2、用最高頻率值來填補缺失值
3、通過變量的相關(guān)關(guān)系來填補缺失值4、通過探索案例之間的相似性來填補缺失值
公式
a:b——a和b的交互效應(yīng)a+b——a和b的相加效應(yīng)a*b——相加和交互效應(yīng)(等價于a+b+a:b)-b——去掉b的影響1——y~1擬合一個沒有因子影響的模型(僅僅是截距)-1——y~x-1表示通過原點的線性回歸(等價于y~x+0或者0+y~x)^n——包含所有知道n階的交互作用(a+b+c)^2==a+b+c+a:b+a:c+b:c
poly(a,n)——a的n階多項式I(x1+x2)——表示模型y=b(x1+x2)+a
數(shù)理統(tǒng)計
基礎(chǔ)知識
統(tǒng)計量
mean(x,trim=0,na,rm=FALSE)——均值,trim去掉x兩端觀測值的便利,默認為0,即包括全部數(shù)據(jù),na.rm=TRUE允許數(shù)據(jù)中有缺失weighted.mean(x,<weigth>)——加權(quán)平均值,weigth表示對應(yīng)權(quán)值median——中值
quantile(x,probs=seq(<start>,<end>,<diff>))——計算百分位數(shù),是五數(shù)總和的擴展,probs設(shè)置分位數(shù)分位點,用seq(0,1,0.2)設(shè)置,表示以樣本值*20%為間隔劃分數(shù)據(jù)。var()——樣本方差(n-1)sd——樣本標準差(n-1)
cov——協(xié)方差cor——相關(guān)矩陣fivenum(x,na.rm=TRUE)——五數(shù)總括:中位數(shù),下上四分位數(shù),最小值,最大值
數(shù)學(xué)函數(shù)
sum(x,y,z,na.rm=FALSE)——x+y+z,na.rm為TURE可以忽略掉na值數(shù)據(jù)sum(x>4)——統(tǒng)計向量x中數(shù)值大于4的個數(shù)rep(“LOVE!”,<times>)——重復(fù)times次,rep(1:3,c(1,2,3))表示1個1,2個2,3個3組成的序列sqrt()——開平方函數(shù)2^2 和 **——“^”冪運算abs()——絕對值函數(shù)
'%%'——表示求余
'%/%'——求商(整數(shù))
exp : 2.71828…expm1 : 當x的絕對值比1小很多的時候,它將能更加正確的計算exp(x)-1log : 對數(shù)函數(shù)(自然對數(shù))log10 : 對數(shù)(底為10)函數(shù)(常用對數(shù))log2 : 對數(shù)(底為2)函數(shù)因為10>e>1,常用對數(shù)比自然對數(shù)更接近橫坐標軸xlog1p()——log(1+p),用來解決對數(shù)變換時自變量p=0的情況。指數(shù)和對數(shù)的變換得出任何值的0次冪都是1特性:對數(shù)螺旋圖。當圖像呈指數(shù)型增長時,常對等式的兩邊同時取對數(shù)已轉(zhuǎn)換成線性關(guān)系。
sin : 正弦函數(shù)cos : 余弦函數(shù)tan : 正切函數(shù)asin : 反正弦函數(shù)acos : 反余弦函數(shù)atan : 反正切函數(shù)sinh : 超越正弦函數(shù)cosh : 超越余弦函數(shù)tanh : 超越正切函數(shù)asinh : 反超越正弦函數(shù)acosh : 反超越余弦函數(shù)atanh : 反超越正切函數(shù)logb : 和log函數(shù)一樣log1px : 當x的絕對值比1小很多的時候,它將能更加正確的計算log(1+x)gamma : Γ函數(shù)(伽瑪函數(shù))lgamma : 等同于log(gamma(x))ceiling : 返回大于或等于所給數(shù)字表達式的最小整數(shù)floor : 返回小于或等于所 給數(shù)字表達式的最大整數(shù)trunc : 截取整數(shù)部分round : 四舍五入signif(x,a) : 數(shù)據(jù)截取函數(shù) x:有效位 a:到a位為止圓周率用 ‘pi’表示
crossprod(A,B)——A %*% t(B) ,內(nèi)積tcrosspeod(A,B)——t(A) %*% B,外積%*%——內(nèi)積,a1b1+a2b2+...+anbn=a*b*cos<a,b>,crossprod(x)表示x與x的內(nèi)積。||x||2,矩陣相乘%o%——外積,a*b*sin<a,b>(矩陣乘法,叉積),tcrossprod(x,y)表示x與y的外積。*表示矩陣中對應(yīng)元素的乘積!向量內(nèi)積(點乘)和向量外積(叉乘)
正態(tài)分布
dnorm(x,mean=0,sd=1,log=FALSE)——正態(tài)分布的概率密度函數(shù)pnorm(x,mean=0,sd=1)——返回正態(tài)分布的分布函數(shù)·rnorm(n,mean=0.sd=1)——生成n個正態(tài)分布隨機數(shù)構(gòu)成的向量qnorm()——下分為點函數(shù)
qqnorm(data)——畫出qq散點圖qqline(data)——低水平作圖,用qq圖的散點畫線qq.plot(<x>,main='')——qq圖檢驗變量是否為正態(tài)分布
簡單分析
summary()——描述統(tǒng)計摘要,和 Hmisc()包的describe()類似,會顯示NA值,四分位距是第1個(25%取值小于該值)和第3個四分位數(shù)(75%取值小于該值)的差值(50%取值的數(shù)值),可以衡量變量與其中心值的偏離程度,值越大則偏離越大。
table(<datafame>$<var>)——統(tǒng)計datafame數(shù)據(jù)中屬性變量var的數(shù)值取值頻數(shù)(NA會自動去掉!),列聯(lián)表
table(<data_var_1>, <data_var_2>)——比較兩個data_var,<data_var_1>為列,<data_var_2>為行,先列后行!
xtabs(formular,data)——列聯(lián)表ftable( table())——三維列聯(lián)表prop.table()——統(tǒng)計所占百分比例prop.table(table(<data_var_1>, <data_var_2>),<int>)——比較兩個data_var所占百分比,<int>填1位按行百分計算,2為列計算
margin.table( table(),<int> )——計算列聯(lián)表的邊際頻數(shù)(邊際求和),<int>=1為按列變量addmargin.table(table(),<int>)——計算列聯(lián)表的邊際頻數(shù)(邊際求和)并求和,<int>=1為按列變量
as.formula(<string>)——轉(zhuǎn)換為一個R公式,<string>是一個字符串循環(huán)時的判斷語句:ifelse(<test>, <yes>, <no>)——if,else的變種,test是判斷語句,其中的判斷變量可以是一個向量!yes是True時的賦值,no是False時的賦值
hist(<data>,prob=T,xlab='橫坐標標題',main='標題',ylim=0:1,freq,breaks=seq(0,550,2))——prob=T表示是頻率直方圖,在直角坐標系中,用橫軸每個小區(qū)間對應(yīng)一個組的組距,縱軸表示頻率與組距的比值,直方圖面積之和為1;prob位FALSE表示頻數(shù)直方圖;ylim設(shè)置縱坐標的取值范圍;freq為TRUE繪出頻率直方圖,counts繪出頻數(shù)直方圖,F(xiàn)ALSE繪出密度直方圖。breaks設(shè)置直方圖橫軸取點間隔,如seq(0,550,2)表示間隔為2,從0到550之間的數(shù)值。
density(<data>,na.rm=T)——概率密度函數(shù)(核密度估計,非參數(shù)估計方法),用已知樣本估計其密度,作圖為lines(density(data),col="blue")ecdf(data)——經(jīng)驗分布函數(shù),作圖plot(ecdf(data),verticasl=FALSE,do.p=FALSE),verticals為TRUE表示畫豎線,默認不畫。do.p=FALSE表示不畫點處的記號
假設(shè)檢驗
分布函數(shù)
shapiro.test(data)——正態(tài)W檢驗方法,當p值大于a為正態(tài)分布ks.test(x,y)——經(jīng)驗分布的K-S檢驗方法,比較x與y的分布是否相同,y是與x比較的數(shù)據(jù)向量或者是某種分布的名稱,ks.test(x, rnorm(length(x), mean(x), sd(x))),或ks.test(x,"pnorm",mean(x),sd(x))
chisq.test(x,y,p)——Pearson擬合優(yōu)度X2(卡方)檢驗,x是各個區(qū)間的頻數(shù),p是原假設(shè)落在小區(qū)間的理論概率,默認值表示均勻分布,要檢驗其它分布,比如正態(tài)分布時先構(gòu)造小區(qū)間,并計算各個區(qū)間的概率值,方法如下:brk<-cut(x,br=c(-6,-4,-2,0,2,4,6,8))#切分區(qū)間A<-table(brk)#統(tǒng)計頻數(shù)p<-pnorm(c(-4,-2,0,2,4,6,8),mean(x),sd(x))#構(gòu)造正態(tài)分布函數(shù)p<-c(p[1],p[2]-p[1],p[3]-p[2],p[4]-p[3],p[5]-p[4],p[6]-p[5],p[7]-p[6])#計算各個區(qū)間概率值chisq.test(A,p=p)
正態(tài)總體的均值方差
t.test(x,y,alternative=c("two.sided","less","greater"),var.equal=FALSE)——單個正態(tài)總體均值μ或者兩個正態(tài)總體均值差μ1-μ2的區(qū)間估計;alternative表示備擇假設(shè):two.side(默認)是雙邊檢驗,less表示H1:μ<μ0,greater表示H1:μ>μ0的單邊檢驗(μ0表示原假設(shè));當var.equal=TRUE時,則是雙樣本方差相同的情況,默認為不同var.test(x,y)——雙樣本方差比的區(qū)間估計
獨立性檢驗(原假設(shè)H0:X與Y獨立)
chisq.test(x,correct=FALSE)——卡方檢驗,x為矩陣,dim(x)=c(2,2),對于大樣本(頻數(shù)大于5)
fisher.test()——單元頻數(shù)小于5,列聯(lián)表為2*2
相關(guān)性檢驗(原假設(shè)H0:X與Y相互獨立)
cor.test(x,y,method=c("pearson","kendall","spearman"))——相關(guān)性檢驗,觀察p-value小于0.05則相關(guān)。method選擇相關(guān)性檢驗方法
秩
rank()——秩統(tǒng)計量cor.test()——秩相關(guān)檢驗:Spearman,Kendallwilcox.test(x,y=NULL,mu,alternative,paired=FALSE,exact=FALSE,correct=FALSE,conf.int=FALSE)——秩顯著性檢驗(一個樣本來源于總體的檢驗,顯著性差異的檢驗),Wilcoxon秩和檢驗(非成對樣本的秩次和檢驗),mu是待檢測參數(shù),比如中值,paired邏輯變量,說明變量x,y是否為成對數(shù)據(jù),exact說民是否精確計算P值,correct是邏輯變量,說明是否對p值采用連續(xù)性修正,conf.int是邏輯變量,給出相應(yīng)的置信區(qū)間。
uniroot(f,interval=c(1,2))——求一元方程根的函數(shù),f是方程,interval是求解根的區(qū)間內(nèi),返回值root為解optimize()或 optimise()——求一維變量函數(shù)的極小點nlm(f,p)——求解無約束問題,求解最小值,f是極小的目標函數(shù),p是所有參數(shù)的初值,采用Newton型算法求極小,函數(shù)返回值是一個列表,包含極小值、極小點的估計值、極小點處的梯度、Hesse矩陣以及求解所需的迭代次數(shù)等。
顯著性差異檢驗(方差分析,原假設(shè):相同,相關(guān)性)
mcnemar.test(x,y,correct=FALSE)——相同個體上的兩次檢驗,檢驗兩元數(shù)據(jù)的兩個相關(guān)分布的頻數(shù)比變化的顯著性,即原假設(shè)是相關(guān)分布是相同的。y是又因子構(gòu)成的對象,當x是矩陣時此值無效。binom.test(x,n,p,alternative=c("two.sided","less","greater"),conf.level=0.95)——二項分布,符號檢驗(一個樣本來源于總體的檢驗,顯著性差異的檢驗)
aov(x~f)——計算方差分析表,x是與(因子)f對應(yīng)因素水平的取值,用summary()函數(shù)查看信息aov(x~A+B+A:B)——雙因素方差,其中X~A+B中A和B是不同因素的水平因子(不考慮交互作用),A:B代表交互作用生成的因子
p.adjust()——P值調(diào)整函數(shù)
pairwise.t.test(x,g,p.adjust.method="holm")——多重t檢驗,p.adjust.method是P值的調(diào)整方法,其方法由p.adjust()給出,默認值按Holm方法(”holm“)調(diào)整,若為”none“,表示P值不做任何調(diào)整。雙因素交互作用時g=A:B
shapiro.test(x)——數(shù)據(jù)的正態(tài)W檢驗bartlett.test(x~f,data)——Bartlett檢驗,方差齊性檢驗
kruskal.test(x~f,data)——Kruskal-Wallis秩和檢驗,非參數(shù)檢驗法,不滿足正態(tài)分布friedman.test(x,f1,f2,data)——Friedman秩和檢驗,不滿足正態(tài)分布和方差齊性,f1是不同水平的因子,f2是試驗次數(shù)的因子
常用模型
1、回歸模型
lm(y~.,<data>)——線性回歸模型,“.”代表數(shù)據(jù)中所有除y列以外的變量,變量可以是名義變量(虛擬變量,k個水平因子,生成k-1個輔助變量(值為0或1))summary()——給出建模的診斷信息:1、數(shù)據(jù)擬合的殘差(Residual standard error,RSE),殘差應(yīng)該符合N(0,1)正態(tài)的,值越小越好2、檢驗多元回歸方程系數(shù)(變量)的重要性,t檢驗法,Pr>|t|, Pr值越小該系數(shù)越重要(拒絕原假設(shè))3、多元R方或者調(diào)整R2方,標識模型與數(shù)據(jù)的擬合程度,即模型所能解釋的數(shù)據(jù)變差比例,R方越接近1模型擬合越好,越小,越差。調(diào)整R方考慮回歸模型中參數(shù)的數(shù)量,更加嚴格4、檢驗解釋變量x與目標變量y之間存在的依賴關(guān)系,統(tǒng)計量F,用p-value值,p值越小越好5、繪圖檢驗plot(<lm>)——繪制線性模型,和qq.plot誤差的正態(tài)QQ圖
6、精簡線性模型,向后消元法
線性回歸模型基礎(chǔ)lm(formula=x~y,data,subset)——回歸分析,x是因變量(響應(yīng)變量),y是自變量(指示變量),formular=y~x是公式,其中若是有x^2項時,應(yīng)把公式改寫為y~I(x^2),subset為可選擇向量,表示觀察值的子集。例:lm(Y ~ X1 + X2 + I(X2^2) + X1:X2, data = data)predict(lm(y~x),new,interval=“prediction”,level=0.95)——預(yù)測,new為待預(yù)測的輸入數(shù)據(jù),其類型必須為數(shù)據(jù)框data.frame,如new<-data.frame(x=7),interval=“prediction”表示同時要給出相應(yīng)的預(yù)測區(qū)間predict(lm(y~x))——直接用用原模型的自變量做預(yù)測,生成估計值
篩選模型自變量lm.new<-update(lm.sol,sqrt(.)~.)——修正原有的回歸模型,將響應(yīng)變量做開方變換update(<lm>, .~. - x1)——移除變量x1后的模型
coef(lm.new)——提取回歸系數(shù)回歸診斷1、正態(tài)性(QQ圖)plot(x,which)——回歸模型殘差圖,which=1~4分別代表畫普通殘差與擬合值的殘差圖,畫正態(tài)QQ的殘差圖,畫標準化殘差的開方與擬合值的殘差圖,畫Cook統(tǒng)norm.test()——正態(tài)性檢驗,p-value>0.05為正態(tài)
計量的殘差圖residuals()和resid()——殘差
rstandard()——標準化殘差rstudent()——學(xué)生化殘差influence.measures(model)——model是由lm或者glm構(gòu)成的對象,對回歸診斷作總括,返回列表中包括,廣義線性模型也可以使用
anova(<lm>)——簡單線性模型擬合的方差分析(確定各個變量的作用)anova(<lm1>,<lm2>)——比較兩個模型(檢驗原假設(shè)為不同)
2、誤差的獨立性——car包提供Duerbin_Watson檢驗函數(shù)3、線性——car包crPlots()繪制成分殘差圖(偏殘差圖)可以看因變量與自變量之間是否呈線性4、同方差性——car包ncvTest()原假設(shè)為誤差方差不變,若拒絕原假設(shè),則說明存在異方差性5、多重共線性——car包中的vif()函數(shù)計算VIF方差膨脹因子,一般vif>2存在多重共線性問題
異常點分析(影響分析)hatvalues()和hat()——帽子矩陣dffits()——DFFITS準則cooks.distance()——Cook統(tǒng)計量,值越大越有可能是異常值點covratio()——COVRATIO準則
kappa(z,exact=FALSE)——多重共線性,計算矩陣的條件數(shù)k,若k<100則認為多重共線性的程度很小;100<=k<=1000則認為存在中等程度或較強的多重共線性;若k>1000則認為存在嚴重的多重共線性。z是自變量矩陣(標準化,中心化的?相關(guān)矩陣),exact是邏輯變量,當其為TRUE時計算精準條件數(shù),否則計算近似條件數(shù)。用eigen(z)計算特征值和特征向量,最小的特征值對應(yīng)的特征向量為共線的系數(shù)。
step()——逐步回歸,觀察AIC和殘差平方和最小,廣義線性模型也可以使用add1()——前進法
drop()——后退法stepAIC(sol,direction="backward")——MASS包,可以實現(xiàn)逐步回歸(向前、向后、向前向后)
預(yù)測predict(<sol>,<newdataframe>,level=0.95,interval="prediction")——回歸預(yù)測,sol是模型,newdataframe是待預(yù)測數(shù)據(jù)框,level設(shè)置置信度,interval="prediction"表示結(jié)果要計算置信區(qū)間
glm(formula,family=binomial(link=logit),data=data.frame)——廣義線性模型,logit默認為二項分布族的鏈接函數(shù),formula有兩種輸入方法,一種方法是輸入成功和失敗的次數(shù),另一種像線性模型的公式輸入方式predict(glm(),data.frame(x=3.5),type="response")——預(yù)測廣義線性回歸模型,type=“response”表示結(jié)果為概率值,否則為預(yù)測值yinv.logit()——預(yù)測值y的反logit,boot包的函數(shù)
glmnet()——正則化glm函數(shù),glmnet包,執(zhí)行結(jié)果的行數(shù)越前正則化越強。其輸出結(jié)果的意義是:
1)DF是指明非0權(quán)重個數(shù),但不包括截距項。可以認為大部分輸入特征的權(quán)重為0時,這個模型就是稀疏的(sparse)。2)%Dev就是模型的R23)超參數(shù)(lambda)是正則化參數(shù)。lambda越大,說明越在意模型的復(fù)雜度,其懲罰越大,使得模型所有權(quán)重趨向于0。
plot(lm(y~x),which=1:4,caption=c(“Residuals vs Fitted”,“Normal Q-Q plot”,“Scale-Location plot”,“Cook's distance plot”))——畫回歸模型殘差圖,which為1表示畫普通殘差與擬合值的殘差圖,2表示畫正態(tài)QQ的殘差圖,3表示畫標準化殘差的開方與擬合值的殘差圖,4表示畫Cook統(tǒng)計量的殘差圖;caption是圖題的內(nèi)容。
avova(sol1,sol2,test="Chisq")——比較模型兩個模型,廣義線性模型可用卡方檢驗(分類變量),不拒絕原假設(shè)說明兩個沒有顯著差異,即用較少自變量模型就可以。
非線性模型
poly(想,degree=1)——計算正交多現(xiàn)實,x是數(shù)值向量,degree是正交多項式的階數(shù),并且degree<length(x)樣本個數(shù),例如建立二次正交式回歸模型:lm(y~1+poly(x,2))
nls(formula,data,start)——求解非線性最小二乘問題,formula是包括變量和非線性擬合的公式,start是初始點,用列表形式給出nlm(f,p)——非線性最小二乘,構(gòu)造最小目標函數(shù),方程移項2為0,f是極小的目標函數(shù),p是所有參數(shù)的初值,采用Newton型算法求極小,函數(shù)返回值是一個列表,minimum的值便是極小值,estimate是參數(shù)的估計值。例如:fn<-function(p,x,y){f<-y-p[1]*exp(p[2]*x)res<-sum(f^2)}nlm.sol<-nlm(fn,p=c(3,-0.1),x,y)
2、回歸樹
rpart( y ~., <data>)——rpart包,回歸樹,葉結(jié)點目標變量的平均值就是樹的預(yù)測值。生成一棵樹,再做修剪(防止過度擬合),內(nèi)部10折交叉驗證
printcp(<rt>)——查看回歸樹結(jié)果,rt是指rpart()函數(shù)的運行結(jié)果模型,plotcp(<rt>)以圖形方式顯示回歸樹的參數(shù)信息參數(shù)如下: cp——當偏差的減少小于某一個給定界限值,默認0.01 minsplit——當結(jié)點中的樣本數(shù)量小于某個給定界限時,默認20 maxdepth——當樹的深度大于一個給定的界限值,默認30
prune(<rt>,cp)——自行設(shè)置cp值的建樹
snip.rpart(<rt>, c(4,7))——修剪,需要修剪的那個地方的是結(jié)點號c(4,7),指出輸出樹對象來需要修剪的樹的結(jié)點號snip.rpart(<rt>)——交互修剪,點擊結(jié)點,右擊結(jié)束
3、隨機森林
randomForest(y ~., <data>)——組合模型,由大量樹模型構(gòu)成,回歸任務(wù)采用預(yù)測結(jié)果的平均值。
4、支持向量機
svm(<formula>,<data>,gamma=1/ncol(<data>),<cost>)——e1071包,回歸任務(wù),<gamma>=0.01,<cost>=100違反邊際所引入的損失?
5、時間序列分析
ts(<data>, frequency=12, start=(2006,1))——把一個向量轉(zhuǎn)化為時間序列對象,<data>向量,frequency表示頻率,start表示時間起始點
decompose(<data>,type)——把時間序列分解成長期趨勢和周期性變化,<data>是設(shè)置了頻率(周期長度)的時間序列數(shù)據(jù),type="additive"為累加形式:長期趨勢+周期性變化+隨機變化;"multiplicative"分解為累乘形式:長期趨勢*周期性變化*隨機變化。默認使用"additive"累加形式。函數(shù)返回值sol<-decompose()中,sol$trend是時間序列趨勢,seasonal是季節(jié)性周期變化,random是隨機誤差。
stl(<data>,"per")——分解時間序列,返回值sol<-stl()中,sol$time.series[, "seasonal"]讀取周期性序列seasonal,sol$time.series[, "trend"]讀取長期趨勢trend。誤差可以使用sol$time.series[,"remainder"]讀取。
增長率:
diff(data,lag=1)——差分,上下做差,lag控制變量上下間隔為1
ring.growth[t]=(data[t]-data[t-1])/data[t-1]——同比增長率,描述指標變化趨勢sam.per.grown[t]=(data[t]-data[t-T])/data[t-T]——環(huán)比增長率,分析周期性變化,避免周期性變化給數(shù)據(jù)分析帶來的影響,T一般以周為單位
移動平均:
filter(x, filter, method=c("convolution", "recursive"), side=2,...)——線性過濾函數(shù),x待轉(zhuǎn)化的向量數(shù)據(jù),method=convolution(卷積方法):使用x內(nèi)部樣本組成線性模型(系數(shù)ai由filter參數(shù)設(shè)置的,side參數(shù)設(shè)置卷積方法是單邊或者雙邊),recursive(遞歸方法):使用y內(nèi)部樣本以及當前階段的x樣本組成線性模型(系數(shù)ai由filter設(shè)置)y遞歸[t]=x[t]+sum(ai*y[t-i])。side為1(單邊卷積)y卷積[t]=a1*x[t]+...+a(k+1)*x[t-k],side為2(雙邊卷積)y卷積[t]=a1*x[t+m]+...+a(m+1)*x[t]
指數(shù)平滑:sol<-HoltWinters(<data>)——實現(xiàn)二次平滑和三次平滑指數(shù)。sol.forst<-forecast.HoltWinters(sol, h=12)——預(yù)測HoltWinters函數(shù)產(chǎn)生的模型的新時間序列,h表示頻率?預(yù)測未來12個月plot.forecast(sol.forst, include=10)——繪制預(yù)測圖,include=10表明繪制預(yù)測前10個月的數(shù)據(jù)和未來12個月的預(yù)測數(shù)據(jù)
ARIMA模型
ymd()——lubridate包,將"年-月-日"格式的字符串轉(zhuǎn)換成日期對象,(可以比較前后時間)
自相關(guān)性cov(data.frame(x,y))——協(xié)方差矩陣Scor(data.frame(x,y))——相關(guān)系數(shù)矩陣Rrnorm(n,<mean>,<sd>)arima.sim(n=100,list(ar=,ma=))——模擬100個樣本的模擬序列l(wèi)ag.plot(data,lag=k,do.line=FALSE)——繪制原始數(shù)據(jù)和k階滯后的散點圖acf(data,lag.max=16,ci.type="ma")——計算并繪制自相關(guān)圖,0階自相關(guān)系數(shù)是rxx,所以恒等于1。ci.type="ma"主要是慨率acf的標準誤的問題,以使acf圖等準確。pacf(data,lag.max=16)——偏自相關(guān)圖,消除Xt-1,...,Xt-k+1的影響后,研究Xt和Xt-k的相關(guān)性。Box.test(data,type="Ljung-Box",lag=16,fitdf=p+q)——自相關(guān)性檢驗,p-value<0.05,標識數(shù)據(jù)data具有自相關(guān),fitdf為自由度參數(shù)p+qarima(data,order=c(p,d,q))——計算模型參數(shù)并建模,TSA包中,order設(shè)置AR過程的階數(shù)p,差分過程的d(用于穩(wěn)定化)和MA過程的階數(shù)q。當p=d=0時,表示只使用MA過程對序列建模。結(jié)果sol<-arima()調(diào)用predict(sol,n.ahead=5)$pred進行預(yù)測,n.ahead參數(shù)用于設(shè)置預(yù)測新階段的數(shù)據(jù)量(未來5個月),predict(...)$se標準誤差SE,用于計算預(yù)測范圍(預(yù)測范圍=預(yù)測值+-置信度(alpha)*標準誤差SE。
eacf(data)——根據(jù)凸顯中三角區(qū)域頂點的行坐標和列坐標分別確定ARMA的p和qnorm.test()——正態(tài)性檢驗,p-value>0.05為正態(tài)tsdiag(sol)——繪制模型殘差的散點圖、自相關(guān)圖和不同階數(shù)下的Box.test體檢驗p-value值
模型評估RMSE(lm,<which>)——qpcR包中計算均方根誤差,計算子集subset
聚類分析
dist(x,method=”euclidean“)——計算距離”euclidean“Euclid距離;”maximum“——Chebyshev距離;”manhattan“絕對值(馬氏)距離;“canberra”Lance距離;“minkowski”Minkowski閔式距離;“binary”定性變量的距離
scale(x, center = TRUE, scale = TRUE)——中心化與標準化,center是中心化,scale是標準化。(全選:減去均值,再除以標準差)
hclust(d,method=“complete”)——系統(tǒng)聚類,d是又dist構(gòu)成的距離結(jié)構(gòu),method是系統(tǒng)聚類的方法(默認為最長距離法)“single”最短距離法“;”complete“最長距離法;”median“中間距離法;”mcquitty“Mcquitty相似法;”average“類平均法”centroid“重心法”ward“離差平法和法
plot(hclist(),hang=0.1)——譜系圖,hang表示譜系圖中各類所在的位置,hang取負值時,表示譜系圖從底部畫起。
as.dendrogram(hclust(),hang=-1)——將hclust得到的對象強制轉(zhuǎn)換為譜系圖plot(x,type=c(”rectangle“,”triangle“),horiz=FALSE)——譜系圖,x為as.dendrogram返回的對象,type是指是矩形或是三角形,horiz是邏輯變量,當horiz為TRUE時,表示譜系圖水平放置。
as.dist()——將普通矩陣轉(zhuǎn)化為聚類分析用的距離結(jié)構(gòu)
plclust(x,hang=0.1)——譜系圖,舊版停用,已被plot替換
rect.hclust(x,k,h,border)——在譜系圖(plclust())中標注聚類情況,確定聚類個數(shù)的函數(shù),x是由hclust生成的對象,k是類個數(shù);h是譜系圖中的閾值,要求分成的各類的距離大于h;border是數(shù)或向量,標明矩形框的顏色;例如:rec.hclust(hclust(),k=3)
kmeans(x,centers,iter.max,nstart=1,algorithm)——K均值方法,centers是聚類的個數(shù)或者是初始類的中心,iter.max為最大迭代次數(shù)(默認為10),nstart是隨機集合的個數(shù)(當centers為聚類的個數(shù)時),algorithm為動態(tài)聚類算法,例如:km<-kmeans(scale(data),4,nstart=20),返回值中,size表示各類的個數(shù),means表示各類均值,Clustering表示聚類后分類情況?,可以用sort(kmeans()$cluser)對分類情況排序
主成分分析
princomp() 和 prcomp()——主成分分析,結(jié)果的標準差顯示每一個主成分的貢獻率(成分方差占總方差的比例),返回值loadings每一列代表每一個成分的載荷因子summary(x,loadings=FALSE)——提取主成分的信息,x是princomp()得到的對象,loadings是邏輯變量,為TRUE表示顯示主成分分析原始變量的系數(shù),F(xiàn)alse則不顯示。返回表中,Standard deviation是標準差,即方差或lambda的開方,Proportion of Variance表示方差的貢獻率,Cumulative Proportion表示累積貢獻率。
loadings(x)——顯示主成分或因子分析中l(wèi)oadings載荷的內(nèi)容,主成分是對應(yīng)割裂,即正交矩陣Q;因子分析中是載荷因子矩陣。x是princomp()或者factanal()得到的對象。predict(x,newdata)——預(yù)測主成分的值,x是由princomp()得到的對象,newdata是由預(yù)測值構(gòu)成的數(shù)據(jù)框,當newdata為默認值時預(yù)測已有數(shù)據(jù)的主成分值。例如predict(<pca>)[,1]——用主成分的第一列作為原有數(shù)據(jù)的預(yù)測結(jié)果screeplot(x,type=c("barplot",”lines“))——主成分的碎石圖,確定主成分維數(shù)的選擇,x是由princomp()得到的對象,type是描述畫出的碎石圖的類型,”barplot“是直方圖,”lines“是直線圖。biplot(x,choices=1:2,scale=1)——畫關(guān)于主成分的散點圖和原坐標在主成分下的方向,x是由princomp()得到的對象,choices選擇主成分,默認為第1、2主成分
factanal(x,factor,covmat=NULL,scores=c("none","regression","Bartlett"),rotation=”varimax“)——因子分析,factors是公因子的個數(shù),covmat是樣本協(xié)方差和相關(guān)矩陣,scores因子得分方法,rotation表示旋轉(zhuǎn),默認為方差最大旋轉(zhuǎn)cancor(x,y,xcenter=TRUE,ycenter=TRUE)——典型相關(guān)分析,xcenter,ycenter是邏輯變量,為TRUE時做數(shù)據(jù)中心化
R包
rpart——決策樹算法my_tree <- rpart(<formula>,<data>,<method>)——rpart(Survived ~ Sex + Age, data=train, method="class")rattlerpart.plotRColorBrewerfancyRpartPlot(my_tree)——繪制更好看的決策樹
ggplot2——繪圖包qplot(<vecter_horizontal>, <vector_vertical>, color = <factor> )——繪圖類似plot
dplyr——輸出處理包tbl_df()——將數(shù)據(jù)轉(zhuǎn)換為一種特殊的數(shù)據(jù)框類型tbl,類似(as.data.frame()),僅是改變了顯示,數(shù)據(jù)結(jié)構(gòu)沒有變化
glimpse(<tbl>)——類似str()
hflights——飛行數(shù)據(jù)
數(shù)據(jù)集
data()——查看R自帶數(shù)據(jù)列表
iris——鳶尾花數(shù)據(jù)集總共150行3種類別iris3[1:50, 1:4, 1:3]——每50行一組,分3個類別分別volcano——87x61 matrix with elevation value
模型函數(shù)
神經(jīng)網(wǎng)絡(luò)nnet()——在nnet包中BP神經(jīng)網(wǎng)絡(luò),存在一層的隱藏層。參數(shù):size=0,設(shè)置隱藏層中神經(jīng)元數(shù),設(shè)置為0時,表示建立一層神經(jīng)網(wǎng)絡(luò)?沒有隱藏層Wts:初始系數(shù),不設(shè)定則使用隨機數(shù)設(shè)定linout:為TRUE時,模型輸出(目標變量)為連續(xù)型實數(shù),一般用于回歸分析;如果為FALSE(默認取值)則輸出為邏輯數(shù)據(jù),一般用于(目標變量為分類型)分類分析,也可以把linout設(shè)為TRUE再添加一個階躍函數(shù)轉(zhuǎn)為邏輯型輸出。maxit:最大迭代次數(shù)iterations,默認為100次,一般盡量將maxit設(shè)置大于觀測結(jié)果final value上顯示的迭代次數(shù)。skip:是否跳過隱藏層,如果為FALSE(默認),則不跳過decay:加權(quán)系數(shù)的衰減隱藏層中神經(jīng)單元數(shù)目的確定
支持向量機svm()——e1071包中回歸非線性ksvm()——kernlab包中分類,分類時用的默認參數(shù)樹徑向基核函數(shù)
多元自適應(yīng)回歸樣條mars()——mda包earth()——earth包,具有更多優(yōu)勢
決策樹RWeka包:C4.5(分類,輸入變量是分類型或連續(xù)型,輸出變量是分類型)J48()rpart包:分類回歸樹(CART)算法(輸入、輸出分類或連續(xù)變量)rpart()——擬合樹模型,參數(shù)xval設(shè)置k折交叉驗證prune()——剪枝
party包:條件推理決策樹(CHAID)算法(輸入、輸出分類或連續(xù)變量)ctree()
隨機森林randomForest包:分類與回歸樹的隨機森林randomForest()——隨機森林,預(yù)測,分類,估計變量的重要性(通過計算每個變量被移除后隨機森林誤差的增加(選擇變量需要用到模型的信息,但用其它模型來做預(yù)測)
party包:條件推理決策樹的隨機森林cforest()
時間序列ts——在stats包中創(chuàng)建一個時間序列xts包——時間序列
xts(<data>,<label>)——時間數(shù)列,可以是單元的也可以是多元的。<data>時間序列數(shù)據(jù),<label>時間標簽。as.xts(read.zoo("abc.csv", header = T))seq.POSIXct() 和 Date——標識時間信息的規(guī)格的類
index() 和 time()——獲取對象的時間標簽coredata()——獲取時間序列的數(shù)值
貝葉斯分類e1071包:nativeBayes()——樸素貝葉斯分類器,可以處理分類型和連續(xù)型自變量
knnknn()——class包
TTR包——技術(shù)指標集合quantmod包——分析金融數(shù)據(jù)tserise包
特殊字符
formula=y~.——"."是除y以外數(shù)據(jù)中的所有變量function(fromula, train, test,...)——特殊參數(shù)“...",允許特定函數(shù)具有可變參數(shù),這個參數(shù)結(jié)構(gòu)是一個列表,用來獲取傳遞給前三個命名參數(shù)之后的所有參數(shù)。這個結(jié)構(gòu)用于給實際模型傳遞所需要的額外參數(shù)。<model.object>@pars——(模型)對象的屬性用操作符“@”訪問,比如對象object的屬性是pars
來自為知筆記(Wiz)
總結(jié)
以上是生活随笔為你收集整理的【R笔记】R语言函数总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乡镇快递站20万入股50%,每天派件60
- 下一篇: 我与阿里云的日常-DavaV开发教程