1. 程式人生 > >R語言筆記完整版

R語言筆記完整版

R語言與資料探勘:公式;資料;方法

R語言特徵

  1. 對大小寫敏感
  2. 通常,數字,字母,. 和 _都是允許的(在一些國家還包括重音字母)。不過,一個命名必須以 . 或者字母開頭,並且如果以 . 開頭,第二個字元不允許是數字。
  3. 基本命令要麼是表示式(expressions)要麼就是 賦值(assignments)。
  4. 命令可以被 (;)隔開,或者另起一行。
  5. 基本命令可以通過大括弧({和}) 放在一起構成一個複合表示式(compound expression)。
  6. 一行中,從井號(#)開始到句子收尾之間的語句就是是註釋。
  7. R是動態型別、強型別的語言。
  8. R的基本資料型別有數值型(numeric)、字元型(character)、複數型(complex)和邏輯型(logical),物件型別有向量、因子、陣列、矩陣、資料框、列表、時間序列。

基礎指令

  • 程式輔助性操作:

執行

q()——退出R程式

tab——自動補全

ctrl+L——清空console

ESC——中斷當前計算

除錯查錯

browser() 和 debug()——設定斷點進行,執行到此可以進行瀏覽檢視(具體除錯看browser()幫助文件(c,n,Q))

stop('your message here.')——輸入引數不正確時,停止程式執行

cat()——檢視變數?

幫助

help(solve) 和 ?solve 等同

??solve——檢索所有與solve相關的資訊

help("[[") 對於特殊含義字元,加上雙引號或者單引號變成字串,也適用於有語法涵義的關鍵字 if,for 和 function

help(package="rpart")——檢視某個包

help.start()——得到html格式幫助

help.search()——允許以任何方式(話題)搜尋幫助文件

example(topic)——檢視某個幫助主題示例

apropos("keyword")——查詢關鍵詞keyword相關的函式

RSiteSearch("onlinekey", restrict=fuction)——用來搜尋郵件列表文件、R手冊和R幫助頁面中的關鍵詞或短語(網際網路)RSiteSearch('neural networks')

  • 準備

檔案目錄設定

setwd(<dir>)——設定工作檔案目錄

getwd()——獲取當前工作檔案目錄

list.files()——檢視當前檔案目錄中的檔案

載入資源

search()——通過search()函式,可以檢視到R啟動時預設載入7個核心包。

基礎函式:數學計算函式,統計計算函式,日期函式,包載入函式,資料處理函式,函式操作函式,圖形裝置函式

     

setRepositpries()——選擇軟體庫(CRAN,Bioconductor,R-Forge),尋找安裝包的方法另看《【R筆記】尋找R的安裝包》

(.packages())——列出當前包

(.packages(all.available=TRUE))——列出有效包

install.packages(“<package>”)——安裝包

library()和require()——載入R包(package)至工作空間

 

data()——列出可以被獲取到的存在的資料集(base包的資料集)

data(<datasets>,package=“nls”)——將nls包的datasets載入到資料庫中

批處理檔案和結果重定向

source("commands.R")——執行commands.R (存放批處理命令的)指令碼檔案。

cat(<Rcommond>,file="")——可以把R命令輸出至外部檔案,然後呼叫source函式進行批處理

 

do.call(<funcname>,<pars>)——呼叫函式,第一個引數<funcnames>指示呼叫函式字串名稱,第二個引數包含呼叫所需引數的一個列表<pars>

sink("record.lis")——把後續的輸出結果從控制檯重定向到外部檔案 record.lis 中

sink()——把後續程式碼輸出重新恢復到終端上展示

 

attach(<datafame>)——將資料框<datafame>中的變數連結到記憶體中,便於資料呼叫

detach()——對應attach(<datafame>),取消變數的連結,detach()裡沒有引數!

注:attach()和detach()均是在預設變數搜尋路徑表中由前向後找到第一個符合變數名稱,因此之前若存在重名變數,有可能會出現問題!!!

 

  • 資料處理

輸入輸出(讀入輸出資料、檔案)

assign("x",c(1,2,3)) 和 x <- c(1,2,3) 和 c(1,2,3)->x ——向量賦值

 

read.table("infantry.txt", sep="\t", header=TRUE)——seq屬性用其它字元分割,比如文字檔案用空格(tab)分隔,header設定為檔案中已經存在表頭名稱

read.csv("targets.csv")——讀入csv(Comma Seperated Values)檔案,屬性被逗號分割

read.csv(url("<link>"))——read.csv() 和 url()的合體,讀存在網上的資料

 

x <- scan(file="")——手動輸入資料,同時scan可以指定輸入變數的資料型別,適合大資料檔案

scan("data.dat", what = list("", 0, 0))——what指定變數型別列表

readLines('http://en.wikipedia.org/wiki/Main_Page',n=10)——讀取文字檔案,將文件轉為以行為單位存放的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")——把原本在計算機記憶體中(工作空間)活動的資料轉存到硬碟中。

load("./RData")——載入目錄中的*.RData,把文件-詞項矩陣從磁碟載入到記憶體中

資料檢視

  • 通用物件

R是一種基於物件(Object)的語言,物件具有很多屬性(Attribute),其中一種重要的屬性就是類(Class),最基本的類包括了數值(numeric)、邏輯(logical)、字元(character)、列表(list),符合類包括矩陣(matrix)、陣列(array)、因子(factor)、資料框(dataframe)。

 

class(<object>) 和 data.class(object)——檢視物件object的類或型別

unclass()——消除物件object的類

  • 基本資料型別

mode()——檢視基本資料型別

length()——檢視長度

as.<資料型別>——改變物件的資料型別

  • 特殊屬性

attributes(<object>)——檢視物件object各種屬性組成的列表

attr(<object>,“name”)——存取物件object的名為name的屬性

  • 混合型別

邏輯型別+數值型別=數值型別

邏輯型別+字元型別=字元型別

數值型別+字元型別=字元型別

 

ls() 和 objects()——檢視當前工作空間中存在的物件(變數)

rm(list=ls())——刪除工作空間的所有物件

methods(x)——檢視x函式的原始碼,有些自帶函式輸入名稱x可以直接看到,有一些需要呼叫methods方法才能檢視函式x的原始碼,出現多重名,輸入對應名稱即可

 

str()——檢視資料(框)中的資料總體資訊(比如樣本個數、變數個數、屬性變數名稱、型別)

nrow(dataframe)——檢視資料集行數

NROW(vector)——查看向量的行數,等於length(x)

head(dataframe)——檢視資料集前6行資料

tail(dataframe)——檢視資料集尾6行資料

  • 向量特徵

邏輯向量運算:

TRUE,FALSE——全部大寫

isTRUE(x)——判斷x為TRUE

*|,&,!——或且非,注意是單個,不是&&!

ANY,ALL——任意,全部

 

陣列和矩陣

train$var

trainvar == NA] <- 1

Data[is.na(Data)] <- 0——資料框多維變數中給NA值賦值為0

 

apply(A,Margin,FUN,...)——A為矩陣,Margin設定待處理的維數,為1是橫排(行),為2是豎排(列)做運算,Fun是運算函式

sweep(x,2,apply(x,MARGIN=1,mean),FUN)——對陣列或者矩陣進行運算。 MARGIN=1表示行,2表示列;STATS統計量,如apply(x,MARGIN=1,mean),FUN函式運算預設為減法,“/”除法

y.vector<-with(data,get(yval))——表示在data資料框中讀取列名稱為yval的向量。

with(<data>,<colname|func>)——提取資料框中的某些引數做運算,對於資料框運算很方便

 

繪圖

plot()——繪製圖像

plot(<vecter_horizontal>, <vector_vertical>, pch=as.integer(<factors>),col,xlab,ylab)——用factors區分影象點的型別pch(圓的,三角,叉),col是顏色類別,xlab或者ylab對應橫縱軸標題

legend(<location="topright">,legend=<vector_labelname>,pch=1:3,cex=1,col)——圖例,<location>是位置(比如右上),<vector_labelname>圖例類別標籤名,pch是圖例對應標籤的類別id(向量),<cex>調整字型比例大小,顏色設定,legend("topright", levels(<factors>), pch=1:length(levels(factors)))

text(X,Y,labels=c(1,2,3),adj=1.2)——新增標註,X,Y是對應座標的向量,labels是標記值,adj調整標註位置

abline(h = <int>,lty=2)——低階繪圖新增一條水平線h或者是迴歸模型直線,垂線v;lty為2表示繪製虛線

abline(a,b)——畫一條y=a+bx的直線

points(x,y)————低階繪圖,畫個點,座標為向量x,y

lines(x,y)——低階繪圖,畫一條線,座標為向量x,y

axis(side=1,at=seq(from=0.7,by=1.2,length.out=7),labels=c(...))——繪製座標軸,低階繪圖,side為2是縱座標

 

barchart()——lattice包預先要對資料彙總

barplot(<vector>)——繪製柱狀圖,vector可增加名稱。也可以繪製直方圖,和hist()均分資料不太一樣,需要用table()統計各個子分段下樣本數量後在畫圖。

mosaicplot(x~y,main,color=T,xlab,ylab)——柱形對應關係圖

contour(<matrix>)——建立等高線

persp(<matrix>,expand=0.2)——建立3D圖,expand擴充套件值設定為0.2,否則為全屏擴充套件

image(volcano)——載入柵格(矩陣)影象

 

par(mfrow=c(1,2),oma,mar)——mfrow設定圖形輸出視窗為1行2列,新增car包?oma是所有影象距離邊框的距離(底部,左邊,頂部,右邊),mar是每幅影象對邊框的距離,預設是c(5, 4, 4, 2) + 0.1。

lines(data)——(低階)原圖中畫線,data是由散點(x,y)組成

rug(jitter(<data>),side =2)——檢驗離群點資料,rug()原圖中執行繪圖繪製在橫座標上,side為2是縱座標,jitter(<data>)對繪製值略微調整,增加隨機排序以避免標記值作圖重合。

 

pairs(data)——資料框各個變數的散佈圖

coplot(y~x|a+b)——多個變數時的散點圖,在a,b(向量或是因子)的劃分下的y與x的散點圖

scatterplotMatr()——散點圖矩陣,car包

 

identify(<data>)——互動式點選,單擊圖形中的點,將會輸出對應資料的行號,右擊結束互動

stem(x,scale=1,width=80,atom=1e-08)——莖葉圖,scale控制莖葉圖的長度,為2即是以0~4為一組,5~9為一組將個位分成兩部分,width是繪圖寬度,atom是容差

boxplot()——箱圖,研究變數的中心趨勢,以及變數發散情況和離群值。上體頂部和底部為上下四分位數,中間粗線為中位數,上下伸出的垂直部分為資料的散步範圍,最遠點為1.5倍四分為點,超出後為異常點,用圓圈表示。boxplot(y~f,notch=TRUE,col=1:3,add=TRUE)#y是資料,f是由因子構成,notch是帶有切口的箱型圖,add=T圖疊加到上一幅圖。

plot(f,y)——箱線圖,f是因子,y是與f因子對應的數值

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轉化為因子型別;number設定區間個數,overlap設定兩個區間靠近邊界的重合?每個區間的觀測值相等

stripplot(x1~y|x2)——lattice包的複雜箱圖,存在兩個因子x1,x2控制下的y, x2按照從左到右,從下到上的順序排列,左下方的x2值較小

 

palette()——col取值對應的顏色, "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow"  "gray"  

colors()——列出對應的顏色陣列

 

qcc()——qcc包,監控轉化率型指標的質量監控圖(P控制圖),監控異常點,前提是二項分佈足夠大後趨於正態分佈

mosaic(<tab>,shade=T,legend=T)——繪製三級列聯表,<tab>是三級列聯表或者公式,vcd包

 

curve(sapply(x,<func>),<from>,<to>)——畫曲線圖,from和to設定橫座標取值範圍

編輯

optim(c(0,0),<func>)——優化問題函式,c(0,0)是優化函式引數的初始值,返回值par是引數最優點值,value是引數的最優點時平方誤差值,counts是返回執行輸入函式func的次數以及梯度gradient的次數,convergence值為0表示有把握找到最優點,非0值時對應錯誤,message是一些其它資訊。

curve(sapply(x,<func>),<from>,<to>)——畫曲線圖,from和to設定橫座標取值範圍

 

sample(length(x),<size>,replace=F)——取樣,生成向量x的隨機順序的大小為<size>的新向量;replace為False為不重複抽樣,為True則重複抽樣

Round ——取整。精確

ceiling()——取整,偏向數值小的

floor() ——取整,偏向數值大的

%/% ——整除

 

colnames(Data)[4]="value"——更換某一列名

edit()——編輯資料表格

fix()——

rm(x,y)——移除物件(變數)x和y

na.exclude(<data>)——移除缺失資料整行

na.omit(<data>)——刪除缺失資料

attr(na.omit(<data>),"na.action")——返回向量a中元素為NA的下標

na.fail()——如果向量中至少包括1個NA值,則返回錯誤;如果不包括任何NA,則返回原有向量

 

merge(x = targets, y = infanty)——合併資料框,x和y是待合併資料框,相同屬性欄位也會合並在一起

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函式引數的說明:

    x,y:用於合併的兩個資料框

    by,by.x,by.y:指定依據哪些行合併資料框,預設值為相同列名的列.

    all,all.x,all.y:指定x和y的行是否應該全在輸出檔案.

    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)——連續資料的離散化,將向量依據breaks區間分割為因子向量。labels設定返回因子向量的水平標籤值,ordered_result為False生成的因子向量無大小意義,否則有大小意義

  • apply族函式

apply(A,MARGIN,FUN,...)——處理物件A是矩陣或陣列,MARGIN設定待計算的維數,FUN是某些函式,如mean,sum

注:apply與其它函式不同,它並不能明顯改善計算效率,因為它本身內建為迴圈運算。

按列?

lappy(dataframe,FUN,list(median,sd))——處理物件是向量、列表或其它物件,輸出格式為列表list

sapply(dataframe$Filed,FUN)——與lapply()相似,輸出格式為矩陣(或資料框)

按行?

tapply(X, INDEX, FUN, simplify = TRUE) ——處理分組資料, INDEX和X是有同樣長度的因子,simplify是邏輯變(量預設為T)

aggregate(x~y+z, data,FUN)和by()——和tapply功能類似

 

其餘參看:apply函式族

  • plyr庫

ddply(Data,.(user_id,item_id),summarize,liulan=sum(liulan))——split-apply-combine的一體化函式;.(user_id,item_id)作為每行的一對標識ID(因子),前面的“.”號省略資料框名稱;summrize是一個函式fun;liulan是一個變數,最後生成的資料框只有user_id,item_id,liulan三列。詳情參見例子  R語言利器之ddply

transform(x,y)——將x和y的列轉換成·一個數據框。

  • reshape庫(reshape2)

melt(data,id.vars)——轉換資料溶解。修改資料組織結構,建立一個數據矩陣,以id.var作為每行的編號,剩餘列資料取值僅作為1列數值,並用原列名作為新數值的分類標記。

cast(data, userid~itemid,value="rattings",fill=0)——統計轉換資料,生成矩陣,公式~左邊的作為行表名,右邊的作為列表名。之後可以用cor()計算每列資料之間的相關係數,並計算距離。

acast 和 dcast(data, userid~itemid,value.var="rattings")——同上,reshape2包,acast最後生成陣列,dcase生成資料框。參見 R語言進階之4:資料整形(reshape)

  • 字串處理

nchar()——獲取字串長度,它能夠獲取字串的長度,它也支援字串向量操作。注意它和length()的結果是有區別的?什麼區別

paste("a", "b", sep="")——字串粘合,負責將若干個字串相連結,返回成單獨的字串。其優點在於,就算有的處理物件不是字元型也能自動轉為字元型。

strsplit(A,split='[,.]') ——字串分割,負責將字串按照某種分割形式將其進行劃分,它正是paste()的逆操作。

substr(data,start,stop)——字串擷取,能對給定的字串物件取出子集,其引數是子集所處的起始和終止位置。子集為從start到stop的下標區間

grep()——字串匹配,負責搜尋給定字串物件中特定表示式 ,並返回其位置索引。grepl()函式與之類似,但其後面的"l"則意味著返回的將是邏輯值

regexpr(pattern,text)——從字串text中提取特定的字串的下標位置

gregexpr()——只查詢匹配的第一個特定字串的下標位置

gsub("a",1,<vector>)——字串替代,負責搜尋字串的特定表示式,並用新的內容加以替代。

sub()函式——和gsub是類似的,但只替代第一個發現結果。

chartr( )——字串替換函式

toupper( )、tolower( )及casefold( )——大小寫轉換函式

其餘參見:R語言中的字串處理函式

  • 控制流

if—else——分支語句

switch(index,case1,case2,casen)——index指示跳到第i個casei中

for(i in <vecter>)——迴圈語句,通過控制變數i

while——迴圈語句,通過設定迴圈範圍

repeat—break——迴圈語句,無限迴圈,由break跳出

特殊資料物件

  • 向量特性

向量陣列初始小標序號從1開始

向量增加元素可以直接通過“vector[n+1]<-0”方式增加

 

a<-c()——向量初始化

vector <- numeric(<int>)——建立初始向量<int>個數,並賦初值為0

length(vector)<- leg——修改物件長度為leg

names(vector) <- c("A","B","C")——給向量起名稱

 

vector["A"]——通過名稱訪問對應元素

 a == c(1, 99, 3)——比較每一個元素對應是否相等

c(0,1)——建立向量,向量內元素型別應一致!

seq(5,9)和 5:9 ——連續向量,等差數列

seq(5,9,0.5)——以0.5為間隔建立

seq(from,to,length,by)

資料索引

which(is.na(var) == T)——返回對應陣列序號

which.max() 和 which.min()——返回數值型別中最大和最小元素下標

subset(<data>,<condition>,<colname>)——索引,<data>是資料,<condition>是索引條件,colnames指定索引列名

match(x,table,nomatch,incomparables)——匹配函式,返回x對應值在table中是否存在,並從1開始編號。x是查詢物件,table是待匹配的向量,nomatch是不匹配項的設定值(預設為NA值),incomparables設定table表中不參加匹配的數值,預設為NULL

<x> %n% <y>——判斷x中是否包含y,返回x對應的邏輯值

排序

sort(x, decreasing = FALSE, na.last = NA, ...)——排序,單變數排序,輸出排序結果(不是序號)。na.last為TRUE,缺失值放在資料最後,為False    缺失值放在資料最前面,為NA,缺失資料將被移除

sort.list()——排序輸出序號值

order()——排序,多個變數資料框排序,返回資料框序號數。order例子【結】

結合ddply和transform函式,降序輸出並,輸出編號:ddply(dfx,.(group,sex),.fun=function(x){transform(x[order(x$age,decreasing=TRUE),c(1:3)],ind=1:length(group))})

 

 

rank()——秩排序,有重複數字的時候就用這個,根據數值之間的遠近輸出序號

 

rev()——依據下標從後往前倒排資料

unique(<dataframe>)——返回無重複樣本的資料集

duplicated(x)——查詢重複資料,重複序號返回為TRUE

比較大小

pmin(x1,x2,...)——比較向量中的各元素,並把較小的元素組成新向量

pmax(x1,x2,...)——

向量間的交、並、補集

union(x, y)——(並集)合併兩組資料,x和y是沒有重複的同一類資料,比如向量集

intersect(x, y)——(交集)對兩組資料求交集,x和y是沒有重複的同一類資料,比如向量集

setdiff(x, y)——(補集)x中與y不同的資料,x和y是沒有重複的同一類資料,比如向量集,重複不同不記

setequal(x, y)——判斷x與y相同,返回邏輯變數,True為相同,False不同。x和y是沒有重複的同一類資料,比如向量集

is.element(x, y) 和 %n%——對x中每個元素,判斷是否在y中存在,TRUE為x,y重共有的元素,Fasle為y中沒有。x和y是沒有重複的同一類資料,比如向量集

 

Vectorize()——將不能進行向量化預算的函式進行轉化

  • 矩陣

array(data=NA,dim=length(data),dimnames=null)——陣列、矩陣初始化,dim是陣列各維的長度dimnames是陣列維的名字,預設為空,array(1:20, dim=c(4,5))。陣列是多維的,dim屬性設定維數
matrix(0, 3, 4)——0為賦初值,3行,4列,儲存方式是先列後行!矩陣是二維的,用ncol和nrow設定矩陣的行數和列數。byrow設定儲存方式(預設列優先),若為TRUE則以行優先

dim(<vector>)<- c(2,3)——設定矩陣為2行3列

dimnames()=list(c(<row>),c(<col>))——設定引數行和列的名稱,以列表的形式進行輸入

matrix[ ,4]——矩陣第4列

as.vector(matrix)——將矩陣轉換成向量

a["name1","name2"]——矩陣以行和列的名稱來代替行列的下標,name1是行名,name2是列名

 

rbind()——矩陣合併,按行合併,自變數寬度應該相等

cbind()——矩陣合併,安列合併,自變數高度應該相等

 

t()——矩陣轉置

det()——行列式

solve(A,b)——求線性方程組Ax=b

solve(A)——求逆矩陣

eigen(A) ——求距陣的特徵值與特徵向量,Ax=(Lambda)x,Avectors是A的特徵向量構成的矩陣

*——矩陣中每個元素對應相乘

%*%——矩陣相乘

  • 因子

因子和向量的區別:

向量裡面存的元素型別可以是字元型,而因子裡面存的是整型數值對應因子的類別(levels)

as.integer(<factors>)——因子可以轉化為整型

levels(<factors>)——檢視因子類別

gl(n,k,length)——因子,n為水平數,k為重複的次數,length為結果的長度

factor(x,levels,labels)——因子

as.factror()——將向量轉化為無序因子,不能比較大小

as.order()——將向量轉化為有序因子

is.factor()——判斷是否為無序因子

is.order()——判斷是否為有序因子

  • 列表和資料框

list()——列表

unlist()——列表轉化為向量

data.frame()——資料框

names(<dataframe>)——顯示資料框的列名稱

dataframe[[2]] 和 dataframe[["TheSec.Name"]] 和  dataframe$TheSec.Name——獲取資料框第二列的元素值

as.matrix(<dataframe>)[,1]——把資料框轉化為矩陣後,再去提取列向量

  • na和NULL的區別

is.na()——判斷na值存在,na是指該數值缺失但是存在。

is.null()——判斷資料是否為NULL。NULL是指不存在,可以通過 train$var<-NULL 的方法去掉屬性變數var。

  • 處理缺失資料na

1、將缺失部分剔除

2、用最高頻率值來填補缺失值

3、通過變數的相關關係來填補缺失值

4、通過探索案例之間的相似性來填補缺失值

  • 公式

a:b——a和b的互動效應

a+b——a和b的相加效應

a*b——相加和互動效應(等價於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

數理統計

  • 基礎知識

統計量

mean(x,trim=0,na,rm=FALSE)——均值,trim去掉x兩端觀測值的便利,預設為0,即包括全部資料,na.rm=TRUE允許資料中有缺失

weighted.mean(x,<weigth>)——加權平均值,weigth表示對應權值

median——中值

quantile(x,probs=seq(<start>,<end>,<diff>))——計算百分位數,是五數總和的擴充套件,probs設定分位數分位點,用seq(0,1,0.2)設定,表示以樣本值*20%為間隔劃分資料。

var()——樣本方差(n-1)

sd——樣本標準差(n-1)

cov——協方差

cor——相關矩陣

fivenum(x,na.rm=TRUE)——五數總括:中位數,下上四分位數,最小值,最大值

數學函式

sum(x,y,z,na.rm=FALSE)——x+y+z,na.rm為TURE可以忽略掉na值資料

sum(x>4)——統計向量x中數值大於4的個數

rep(“LOVE!”,<times>)——重複times次,rep(1:3,c(1,2,3))表示1個1,2個2,3個3組成的序列

sqrt()——開平方函式

2^2 和 **——“^”冪運算

abs()——絕對值函式

'%%'——表示求餘 

'%/%'——求商(整數)

 

exp  : 2.71828…

expm1  : 當x的絕對值比1小很多的時候,它將能更加正確的計算exp(x)-1

log  : 對數函式(自然對數)

log10  : 對數(底為10)函式(常用對數)

log2  : 對數(底為2)函式

因為10>e>1,常用對數比自然對數更接近橫座標軸x

log1p()——log(1+p),用來解決對數變換時自變數p=0的情況。指數和對數的變換得出任何值的0次冪都是1

特性:對數螺旋圖。當影象呈指數型增長時,常對等式的兩邊同時取對數已轉換成線性關係。

 

sin  : 正弦函式

cos  : 餘弦函式

tan  :  正切函式

asin  :  反正弦函式

acos  :  反餘弦函式

atan  :  反正切函式

sinh  :  超越正弦函式

cosh  :  超越餘弦函式

tanh  :  超越正切函式

asinh  :  反超越正弦函式

acosh  :  反超越餘弦函式

atanh  :  反超越正切函式

logb  :  和log函式一樣

log1px  :  當x的絕對值比1小很多的時候,它將能更加正確的計算log(1+x)

gamma  :  Γ函式(伽瑪函式)

lgamma  :  等同於log(gamma(x))

ceiling  :  返回大於或等於所給數字表達式的最小整數

floor  :  返回小於或等於所 給數字表達式的最大整數

trunc  :  擷取整數部分

round  :  四捨五入

signif(x,a)  :  資料擷取函式 x:有效位 a:到a位為止

圓周率用 ‘pi’表示

 

 

crossprod(A,B)——A %*% t(B) ,內積

tcrosspeod(A,B)——t(A) %*% B,外積

%*%——內積,a1b1+a2b2+...+anbn=a*b*cos<a,b>,crossprod(x)表示x與x的內積。||x||2,矩陣相乘

%o%——外積,a*b*sin<a,b>(矩陣乘法,叉積),tcrossprod(x,y)表示x與y的外積。*表示矩陣中對應元素的乘積!

向量內積(點乘)和向量外積(叉乘)

正態分佈

dnorm(x,mean=0,sd=1,log=FALSE)——正態分佈的概率密度函式

pnorm(x,mean=0,sd=1)——返回正態分佈的分佈函式·

rnorm(n,mean=0.sd=1)——生成n個正態分佈隨機數構成的向量

qnorm()——下分為點函式

 

qqnorm(data)——畫出qq散點圖

qqline(data)——低水平作圖,用qq圖的散點畫線

qq.plot(<x>,main='')——qq圖檢驗變數是否為正態分佈

簡單分析

summary()——描述統計摘要,和 Hmisc()包的describe()類似,會顯示NA值,四分位距是第1個(25%取值小於該值)和第3個四分位數(75%取值小於該值)的差值(50%取值的數值),可以衡量變數與其中心值的偏離程度,值越大則偏離越大。

 

table(<datafame>$<var>)——統計datafame資料中屬性變數var的數值取值頻數(NA會自動去掉!),列聯表

table(<data_var_1>, <data_var_2>)——比較兩個data_var,<data_var_1>為列,<data_var_2>為行,先列後行!

xtabs(formular,data)——列聯表

ftable( table())——三維列聯表

prop.table()——統計所佔百分比例

prop.table(table(<data_var_1>, <data_var_2>),<int>)——比較兩個data_var所佔百分比,<int>填1位按行百分計算,2為列計算

margin.table( table(),<int> )——計算列聯表的邊際頻數(邊際求和),<int>=1為按列變數

addmargin.table(table(),<int> )——計算列聯表的邊際頻數(邊際求和)並求和,<int>=1為按列變數

 

as.formula(<string>)——轉換為一個R公式,<string>是一個字串

迴圈時的判斷語句:

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表示是頻率直方圖,在直角座標系中,用橫軸每個小區間對應一個組的組距,縱軸表示頻率與組距的比值,直方圖面積之和為1;prob位FALSE表示頻數直方圖;ylim設定縱座標的取值範圍;freq為TRUE繪出頻率直方圖,counts繪出頻數直方圖,FALSE繪出密度直方圖。breaks設定直方圖橫軸取點間隔,如seq(0,550,2)表示間隔為2,從0到550之間的數值。

 

density(<data>,na.rm=T)——概率密度函式(核密度估計,非引數估計方法),用已知樣本估計其密度,作圖為lines(density(data),col="blue")

ecdf(data)——經驗分佈函式,作圖plot(ecdf(data),verticasl=FALSE,do.p=FALSE),verticals為TRUE表示畫豎線,預設不畫。do.p=FALSE表示不畫點處的記號

  • 假設檢驗

分佈函式

shapiro.test(data)——正態W檢驗方法,當p值大於a為正態分佈

ks.test(x,y)——經驗分佈的K-S檢驗方法,比較x與y的分佈是否相同,y是與x比較的資料向量或者是某種分佈的名稱,ks.test(x, rnorm(length(x), mean(x), sd(x))),或ks.test(x,"pnorm",mean(x),sd(x))

 

chisq.test(x,y,p)——Pearson擬合優度X2(卡方)檢驗,x是各個區間的頻數,p是原假設落在小區間的理論概率,預設值表示均勻分佈,要檢驗其它分佈,比如正態分佈時先構造小區間,並計算各個區間的概率值,方法如下:

brk<-cut(x,br=c(-6,-4,-2,0,2,4,6,8))#切分割槽間

A<-table(brk)#統計頻數

 p<-pnorm(c(-4,-2,0,2,4,6,8),mean(x),sd(x))#構造正態分佈函式

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])#計算各個區間概率值

 chisq.test(A,p=p)

正態總體的均值方差

t.test(x,y,alternative=c("two.sided","less","greater"),var.equal=FALSE)——單個正態總體均值μ或者兩個正態總體均值差μ1-μ2的區間估計;alternative表示備擇假設:two.side(預設)是雙邊檢驗,less表示H1:μ<μ0,greater表示H1:μ>μ0的單邊檢驗(μ0表示原假設);當var.equal=TRUE時,則是雙樣本方差相同的情況,預設為不同

var.test(x,y)——雙樣本方差比的區間估計

獨立性檢驗(原假設H0:X與Y獨立)

chisq.test(x,correct=FALSE)——卡方檢驗,x為矩陣,dim(x)=c(2,2),對於大樣本(頻數大於5)

fisher.test()——單元頻數小於5,列聯表為2*2

相關性檢驗(原假設H0:X與Y相互獨立)

cor.test(x,y,method=c("pearson","kendall","spearman"))——相關性檢驗,觀察p-value小於0.05則相關。method選擇相關性檢驗方法

rank()——秩統計量

cor.test()——秩相關檢驗:Spearman,Kendall

wilcox.test(x,y=NULL,mu,alternative,paired=FALSE,exact=FALSE,correct=FALSE,conf.int=FALSE)——秩顯著性檢驗(一個樣本來源於總體的檢驗,顯著性差異的檢驗),Wilcoxon秩和檢驗(非成對樣本的秩次和檢驗),mu是待檢測引數,比如中值,paired邏輯變數,說明變數x,y是否為成對資料,exact說民是否精確計算P值,correct是邏輯變數,說明是否對p值採用連續性修正,conf.int是邏輯變數,給出相應的置信區間。

 

uniroot(f,interval=c(1,2))——求一元方程根的函式,f是方程,interval是求解根的區間內,返回值root為解

optimize()或 optimise()——求一維變數函式的極小點

nlm(f,p)——求解無約束問題,求解最小值,f是極小的目標函式,p是所有引數的初值,採用Newton型演算法求極小,函式返回值是一個列表,包含極小值、極小點的估計值、極小點處的梯度、Hesse矩陣以及求解所需的迭代次數等。

顯著性差異檢驗(方差分析,原假設:相同,相關性)

mcnemar.test(x,y,correct=FALSE)——相同個體上的兩次檢驗,檢驗兩元資料的兩個相關分佈的頻數比變化的顯著性,即原假設是相關分佈是相同的。y是又因子構成的物件,當x是矩陣時此值無效。

binom.test(x,n,p,alternative=c("two.sided","less","greater"),conf.level=0.95)——二項分佈,符號檢驗(一個樣本來源於總體的檢驗,顯著性差異的檢驗)

 

aov(x~f)——計算方差分析表,x是與(因子)f對應因素水平的取值,用summary()函式檢視資訊

aov(x~A+B+A:B)——雙因素方差,其中X~A+B中A和B是不同因素的水平因子(不考慮互動作用),A:B代表互動作用生成的因子

p.adjust()——P值調整函式

pairwise.t.test(x,g,p.adjust.method="holm")——多重t檢驗,p.adjust.method是P值的調整方法,其方法由p.adjust()給出,預設值按Holm方法(”holm“)調整,若為”none“,表示P值不做任何調整。雙因素互動作用時g=A:B

shapiro.test(x)——資料的正態W檢驗

bartlett.test(x~f,data)——Bartlett檢驗,方差齊性檢驗

kruskal.test(x~f,data)——Kruskal-Wallis秩和檢驗,非引數檢驗法,不滿足正態分佈

friedman.test(x,f1,f2,data)——Friedman秩和檢驗,不滿足正態分佈和方差齊性,f1是不同水平的因子,f2是試驗次數的因子

  • 常用模型

1、迴歸模型

lm(y~.,<data>)——線性迴歸模型,“.”代表資料中所有除y列以外的變數,變數可以是名義變數(虛擬變數,k個水平因子,生成k-1個輔助變數(值為0或1))

summary()——給出建模的診斷資訊:

1、資料擬合的殘差(Residual standard error,RSE),殘差應該符合N(0,1)正態的,值越小越好

2、檢驗多元迴歸方程係數(變數)的重要性,t檢驗法,Pr>|t|, Pr值越小該係數越重要(拒絕原假設)

3、多元R方或者調整R2方,標識模型與資料的擬合程度,即模型所能解釋的資料變差比例,R方越接近1模型擬合越好,越小,越差。調整R方考慮迴歸模型中引數的數量,更加嚴格

4、檢驗解釋變數x與目標變數y之間存在的依賴關係,統計量F,用p-value值,p值越小越好

5、繪圖檢驗plot(<lm>)——繪製線性模型,和qq.plot誤差的正態QQ圖

6、精簡線性模型,向後消元法

 

線性迴歸模型基礎

lm(formula=x~y,data,subset)——迴歸分析,x是因變數(響應變數),y是自變數(指示變數),formular=y~x是公式,其中若是有x^2項時,應把公式改寫為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)——預測,new為待預測的輸入資料,其型別必須為資料框data.frame,如new<-data.frame(x=7),interval=“prediction”表示同時要給出相應的預測區間

predict(lm(y~x))——直接用用原模型的自變數做預測,生成估計值

 

篩選模型自變數

lm.new<-update(lm.sol,sqrt(.)~.)——修正原有的迴歸模型,將響應變數做開方變換

update(<lm>, .~. - x1)——移除變數x1後的模型

coef(lm.new)——提取回歸係數

迴歸診斷

1、正態性(QQ圖)

plot(x,which)——迴歸模型殘差圖,which=1~4分別代表畫普通殘差與擬合值的殘差圖,畫正態QQ的殘差圖,畫標準化殘差的開方與擬合值的殘差圖,畫Cook統

norm.test()——正態性檢驗,p-value>0.05為正態

計量的殘差圖

residuals()和resid()——殘差

rstandard()——標準化殘差

rstudent()——學生化殘差

influence.measures(model)——model是由lm或者glm構成的物件,對迴歸診斷作總括,返回列表中包括,廣義線性模型也可以使用

 

anova(<lm>)——簡單線性模型擬合的方差分析(確定各個變數的作用)

anova(<lm1>,<lm2>)——比較兩個模型(檢驗原假設為不同)

 

2、誤差的獨立性——car包提供Duerbin_Watson檢驗函式

3、線性——car包crPlots()繪製成分殘差圖(偏殘差圖)可以看因變數與自變數之間是否呈線性

4、同方差性——car包ncvTest()原假設為誤差方差不變,若拒絕原假設,則說明存在異方差性

5、多重共線性——car包中的vif()函式計算VIF方差膨脹因子,一般vif>2存在多重共線性問題

 

異常點分析(影響分析)

hatvalues()和hat()——帽子矩陣

dffits()——DFFITS準則

cooks.distance()——Cook統計量,值越大越有可能是異常值點

covratio()——COVRATIO準則

 

kappa(z,exact=FALSE)——多重共線性,計算矩陣的條件數k,若k<100則認為多重共線性的程度很小;100<=k<=1000則認為存在中等程度或較強的多重共線性;若k>1000則認為存在嚴重的多重共線性。z是自變數矩陣(標準化,中心化的?相關矩陣),exact是邏輯變數,當其為TRUE時計算精準條件數,否則計算近似條件數。用eigen(z)計算特徵值和特徵向量,最小的特徵值對應的特徵向量為共線的係數。

 

step()——逐步迴歸,觀察AIC和殘差平方和最小,廣義線性模型也可以使用

add1()——前進法

drop()——後退法

stepAIC(sol,direction="backward")——MASS包,可以實現逐步迴歸(向前、向後、向前向後)

 

預測

predict(<sol>,<newdataframe>,level=0.95,interval="prediction")——迴歸預測,sol是模型,newdataframe是待預測資料框,level設定置信度,interval="prediction"表示結果要計算置信區間

 

glm(formula,family=binomial(link=logit),data=data.frame)——廣義線性模型,logit預設為二項分佈族的連結函式,formula有兩種輸入方法,一種方法是輸入成功和失敗的次數,另一種像線性模型的公式輸入方式

predict(glm(),data.frame(x=3.5),type="response")——預測廣義線性迴歸模型,type=“response”表示結果為概率值,否則為預測值y

inv.logit()——預測值y的反logit,boot包的函式

glmnet()——正則化glm函式,glmnet包,執行結果的行數越前正則化越強。其輸出結果的意義是:

1)DF是指明非0權重個數,但不包括截距項。可以認為大部分輸入特徵的權重為0時,這個模型就是稀疏的(sparse)。

2)%Dev就是模型的R2

3)超引數(lambda)是正則化引數。lambda越大,說明越在意模型的複雜度,其懲罰越大,使得模型所有權重趨向於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表示畫正態QQ的殘差圖,3表示畫標準化殘差的開方與擬合值的殘差圖,4表示畫Cook統計量的殘差圖;caption是圖題的內容。

 

avova(sol1,sol2,test="Chisq")——比較模型兩個模型,廣義線性模型可用卡方檢驗(分類變數),不拒絕原假設說明兩個沒有顯著差異,即用較少自變數模型就可以。

非線性模型

poly(想,degree=1)——計算正交多現實,x是數值向量,degree是正交多項式的階數,並且degree<length(x)樣本個數,例如建立二次正交式迴歸模型:lm(y~1+poly(x,2))

 

nls(formula,data,start)——求解非線性最小二乘問題,formula是包括變數和非線性擬合的公式,start是初始點,用列表形式給出

nlm(f,p)——非線性最小二乘,構造最小目標函式,方程移項2為0,f是極小的目標函式,p是所有引數的初值,採用Newton型演算法求極小,函式返回值是一個列表,minimum的值便是極小值,estimate是引數的估計值。例如:

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包,迴歸樹,葉結點目標變數的平均值就是樹的預測值。生成一棵樹,再做修剪(防止過度擬合),內部10折交叉驗證

 

printcp(<rt>)——查看回歸樹結果,rt是指rpart()函式的執行結果模型,plotcp(<rt>)以圖形方式顯示迴歸樹的引數資訊

引數如下:

    cp——當偏差的減少小於某一個給定界限值,預設0.01

    minsplit——當結點中的樣本數量小於某個給定界限時,預設20

    maxdepth——當樹的深度大於一個給定的界限值,預設30

 

prune(<rt>,cp)——自行設定cp值的建樹

 

snip.rpart(<rt>, c(4,7))——修剪,需要修剪的那個地方的是結點號c(4,7),指出輸出樹物件來需要修剪的樹的結點號

snip.rpart(<rt>)——互動修剪,點選結點,右擊結束

3、隨機森林

randomForest(y ~., <data>)——組合模型,由大量樹模型構成,迴歸任務採用預測結果的平均值。

4、支援向量機

svm(<formula>,<data>,gamma=1/ncol(<data>),<cost>)——e1071包,迴歸任務,<gamma>=0.01,<cost>=100違反邊際所引入的損失?

5、時間序列分析

ts(<data>, frequency=12, start=(2006,1))——把一個向量轉化為時間序列物件,<data>向量,frequency表示頻率,start表示時間起始點

 

decompose(<data>,type)——把時間序列分解成長期趨勢和週期性變化,<data>是設定了頻率(週期長度)的時間序列資料,type="additive"為累加形式:長期趨勢+週期性變化+隨機變化;"multiplicative"分解為累乘形式:長期趨勢*週期性變化*隨機變化。預設使用"additive"累加形式。函式返回值sol<-decompose()中,sol$trend是時間序列趨勢,seasonal是季節性週期變化,random是隨機誤差。

 

stl(<data>,"per")——分解時間序列,返回值sol<-stl()中,soltime.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]——環比增長率,分析週期性變化,避免週期性變化給資料分析帶來的影響,T一般以周為單位

 

移動平均:

filter(x, filter, method=c("convolution", "recursive"), side=2,...)——線性過濾函式,x待轉化的向量資料,method=convolution(卷積方法):使用x內部樣本組成線性模型(係數ai由filter引數設定的,side引數設定卷積方法是單邊或者雙邊),recursive(遞迴方法):使用y內部樣本以及當前階段的x樣本組成線性模型(係數ai由filter設定)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]

 

指數平滑:

sol<-HoltWinters(<data>)——實現二次平滑和三次平滑指數。

sol.forst<-forecast.HoltWinters(sol, h=12)——預測HoltWinters函式產生的模型的新時間序列,h表示頻率?預測未來12個月

plot.forecast(sol.forst, include=10)——繪製預測圖,include=10表明繪製預測前10個月的資料和未來12個月的預測資料

ARIMA模型

ymd()——lubridate包,將"年-月-日"格式的字串轉換成日期物件,(可以比較前後時間)

自相關性

cov(data.frame(x,y))——協方差矩陣S

cor(data.frame(x,y))——相關係數矩陣R

rnorm(n,<mean>,<sd>)

arima.sim(n=100,list(ar=,ma=))——模擬100個樣本的模擬序列

lag.plot(data,lag=k,do.line=FALSE)——繪製原始資料和k階滯後的散點圖

acf(data,lag.max=16,ci.type="ma")——計算並繪製自相關圖,0階自相關係數是rxx,所以恆等於1。ci.type="ma"主要是慨率acf的標準誤的問題,以使acf圖等準確。

pacf(data,lag.max=16)——偏自相關圖,消除Xt-1,...,Xt-k+1的影響後,研究Xt和Xt-k的相關性。

Box.test(data,type="Ljung-Box",lag=16,fitdf=p+q)——自相關性檢驗,p-value<0.05,標識資料data具有自相關,fitdf為自由度引數p+q

arima(data,order=c(p,d,q))——計算模型引數並建模,TSA包中,order設定AR過程的階數p,差分過程的d(用於穩定化)和MA過程的階數q。當p=d=0時,表示只使用MA過程對序列建模。結果sol<-arima()呼叫predict(sol,n.ahead=5)se標準誤差SE,用於計算預測範圍(預測範圍=預測值+-置信度(alpha)*標準誤差SE。

eacf(data)——根據凸顯中三角區域頂點的行座標和列座標分別確定ARMA的p和q

norm.test()——正態性檢驗,p-value>0.05為正態

tsdiag(sol)——繪製模型殘差的散點圖、自相關圖和不同階數下的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”)——系統聚類,d是又dist構成的距離結構,method是系統聚類的方法(預設為最長距離法)

“single”最短距離法“;

”complete“最長距離法;

”median“中間距離法;

”mcquitty“Mcquitty相似法;

”average“類平均法

”centroid“重心法

”ward“離差平法和法

 

plot(hclist(),hang=0.1)——譜系圖,hang表示譜系圖中各類所在的位置,hang取負值時,表示譜系圖從底部畫起。

 

as.dendrogram(hclust(),hang=-1)——將hclust得到的物件強制轉換為譜系圖

plot(x,type=c(”rectangle“,”triangle“),horiz=FALSE)——譜系圖,x為as.dendrogram返回的物件,type是指是矩形或是三角形,horiz是邏輯變數,當horiz為TRUE時,表示譜系圖水平放置。

 

as.dist()——將普通矩陣轉化為聚類分析用的距離結構

 

plclust(x,hang=0.1)——譜系圖,舊版停用,已被plot替換

rect.hclust(x,k,h,border)——在譜系圖(plclust())中標註聚類情況,確定聚類個數的函式,x是由hclust生成的物件,k是類個數;h是譜系圖中的閾值,要求分成的各類的距離大於h;border是數或向量,標明矩形框的顏色;例如:rec.hclust(hclust(),k=3)

 

kmeans(x,centers,iter.max,nstart=1,algorithm)——K均值方法,centers是聚類的個數或者是初始類的中心,iter.max為最大迭代次數(預設為10),nstart是隨機集合的個數(當centers為聚類的個數時),algorithm為動態聚類演算法,例如:km<-kmeans(scale(data),4,nstart=20),返回值中,size表示各類的個數,means表示各類均值,Clustering表示聚類後分類情況?,可以用sort(kmeans()$cluser)對分類情況排序

  • 主成分分析

princomp() 和 prcomp()——主成分分析,結果的標準差顯示每一個主成分的貢獻率(成分方差佔總方差的比例),返回值loadings每一列代表每一個成分的載荷因子

summary(x,loadings=FALSE)——提取主成分的資訊,x是princomp()得到的物件,loadings是邏輯變數,為TRUE表示顯示主成分分析原始變數的係數,False則不顯示。返回表中,Standard deviation是標準差,即方差或lambda的開方,Proportion of Variance表示方差的貢獻率,Cumulative Proportion表示累積貢獻率。

loadings(x)——顯示主成分或因子分析中loadings載荷的內容,主成分是對應割裂,即正交矩陣Q;因子分析中是載荷因子矩陣。x是princomp()或者factanal()得到的物件。

predict(x,newdata)——預測主成分的值,x是由princomp()得到的物件,newdata是由預測值構成的資料框,當newdata為預設值時預測已有資料的主成分值。例如predict(<pca>)[,1]——用主成分的第一列作為原有資料的預測結果

screeplot(x,type=c("barplot",”lines“))——主成分的碎石圖,確定主成分維數的選擇,x是由princomp()得到的物件,type是描述畫出的碎石圖的型別,”barplot“是直方圖,”lines“是直線圖。

biplot(x,choices=1:2,scale=1)——畫關於主成分的散點圖和原座標在主成分下的方向,x是由princomp()得到的物件,choices選擇主成分,預設為第1、2主成分

 

factanal(x,factor,covmat=NULL,scores=c("none","regression","Bartlett"),rotation=”varimax“)——因子分析,factors是公因子的個數,covmat是樣本協方差和相關矩陣,scores因子得分方法,rotation表示旋轉,預設為方差最大旋轉

cancor(x,y,xcenter=TRUE,ycenter=TRUE)——典型相關分析,xcenter,ycenter是邏輯變數,為TRUE時做資料中心化

 

R包

rpart——決策樹演算法

my_tree <- rpart(<formula>,<data>,<method>)——rpart(Survived ~ Sex + Age,

                 data=train, method="class")

rattle

rpart.plot

RColorBrewer

fancyRpartPlot(my_tree)——繪製更好看的決策樹

 

ggplot2—— 繪圖包

qplot(<vecter_horizontal>, <vector_vertical>, color = <factor> )——繪圖類似plot

 

dplyr——輸出處理包

tbl_df()——將資料轉換為一種特殊的資料框型別tbl,類似(as.data.frame()),僅是改變了顯示,資料結構沒有變化

glimpse(<tbl>)——類似str()

 

hflights——飛行資料

資料集

 

data()——檢視R自帶資料列表

 

iris——鳶尾花資料集總共150行3種類別

iris3[1:50, 1:4, 1:3]——每50行一組,分3個類別分別

volcano——87x61 matrix with elevation value

 

模型函式

 

神經網路

nnet()——在nnet包中BP神經網路,存在一層的隱藏層。

引數:

size=0,設定隱藏層中神經元數,設定為0時,表示建立一層神經網路?沒有隱藏層

Wts:初始係數,不設定則使用隨機數設定

linout:為TRUE時,模型輸出(目標變數)為連續型實數,一般用於迴歸分析;如果為FALSE(預設取值)則輸出為邏輯資料,一般用於(目標變數為分型別)分類分析,也可以把linout設為TRUE再新增一個階躍函式轉為邏輯型輸出。

maxit:最大迭代次數iterations,預設為100次,一般儘量將maxit設定大於觀測結果final value上顯示的迭代次數。

skip:是否跳過隱藏層,如果為FALSE(預設),則不跳過

decay:加權係數的衰減

隱藏層中神經單元數目的確定

 

支援向量機

svm()——e1071包中迴歸非線性

ksvm()——kernlab包中分類,分類時用的預設引數樹徑向基核函式

 

多元自適應迴歸樣條

mars()——mda包

earth()——earth包,具有更多優勢

 

決策樹

RWeka包:C4.5(分類,輸入變數是分型別或連續型,輸出變數是分型別)

J48()

rpart包:分類迴歸樹(CART)演算法(輸入、輸出分類或連續變數)

rpart()——擬合樹模型,引數xval設定k折交叉驗證

prune()——剪枝

 

party包:條件推理決策樹(CHAID)演算法(輸入、輸出分類或連續變數)

ctree()

 

隨機森林

randomForest包:分類與迴歸樹的隨機森林

randomForest()——隨機森林,預測,分類,估計變數的重要性(通過計算每個變數被移除後隨機森林誤差的增加(選擇變數需要用到模型的資訊,但用其它模型來做預測)

 

party包:條件推理決策樹的隨機森林

cforest()

 

時間序列

ts——在stats包中建立一個時間序列

xts包——時間序列

xts(<data>,<label>)——時間數列,可以是單元的也可以是多元的。<data>時間序列資料,<label>時間標籤。as.xts(read.zoo("abc.csv", header = T))

seq.POSIXct() 和 Date——標識時間資訊的規格的類

 

index() 和 time()——獲取物件的時間標籤

coredata()——獲取時間序列的數值

 

貝葉斯分類

e1071包:

nativeBayes()——樸素貝葉斯分類器,可以處理分型別和連續型自變數

 

knn

knn()——class包

 

TTR包——技術指標集合

quantmod包——分析金融資料

tserise包

 

特殊字元

formula=y~.——"."是除y以外資料中的所有變數

function(fromula, train, test,...)——特殊引數“...",允許特定函式具有可變引數,這個引數結構是一個列表,用來獲取傳遞給前三個命名引數之後的所有引數。這個結構用於給實際模型傳遞所需要的額外引數。

<model.object>@pars——(模型)物件的屬性用操作符“@”訪問,比如物件object的屬性是pars

轉載自:http://www.cnblogs.com/think-and-do/p/6549422.html