R語言與
數據挖掘:公式;數據;方法
R語言特徵
- 對大小寫敏感
- 一般,數字,字母,. 和 _都是容許的(在一些國家還包括重音字母)。不過,一個命名必須以 . 或者字母開頭,而且若是以 . 開頭,第二個字符不容許是數字。
- 基本命令要麼是表達式(expressions)要麼就是 賦值(assignments)。
- 命令能夠被 (;)隔開,或者另起一行。
- 基本命令能夠經過大括弧({和}) 放在一塊兒構成一個複合表達式(compound expression)。
- 一行中,從井號(#)開始到句子收尾之間的語句就是是註釋。
- R是動態類型、強類型的語言。
- 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
train$new[
train$var == 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(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功能相似
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的列轉換成·一個數據框。
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( )——
大小寫轉換函數
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()——排序輸出序號值
結合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,A$values是矩陣的特徵值構成的向量,A$vectors是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]——把數據框轉化爲矩陣後,再去提取列向量
is.na()——判斷na值存在,na是指該數值缺失可是存在。
is.null()——判斷數據是否爲NULL。NULL是指不存在,能夠經過 train$var<-NULL 的方法去掉屬性變量var。
一、將缺失部分剔除
二、用最高頻率值來填補缺失值
三、經過變量的相關關係來填補缺失值
四、經過探索案例之間的類似性來填補缺失值
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是試驗次數的因子
一、迴歸模型
lm(y~.,<data>)——線性迴歸模型,「.」表明數據中全部除y列之外的變量,變量能夠是名義變量(虛擬變量,k個水平因子,生成k-1個輔助變量(值爲0或1))
summary()——給出建模的診斷信息:
一、數據擬合的殘差(
Residual standard error,RSE),殘差應該符合N(0,1)正態的,值越小越好
二、檢驗多元迴歸方程係數(變量)的重要性,
t檢驗法,Pr>|t|, Pr值越小該係數越重要(拒絕原假設)
三、多元R方或者調整
R2方,標識模型與數據的擬合程度,即模型所能解釋的數據變差比例,R方越接近1模型擬合越好,越小,越差。調整R方考慮迴歸模型中參數的數量,更加嚴格
四、檢驗解釋變量x與目標變量y之間存在的依賴關係,
統計量F,用p-value值,p值越小越好
五、繪圖檢驗plot(<lm>)——繪製線性模型,和qq.plot偏差的正態QQ圖
六、精簡線性模型,向後消元法
線性迴歸模型基礎
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)——提取回歸係數
迴歸診斷
一、正態性(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>)——比較兩個模型(檢驗原假設爲不一樣)
二、偏差的獨立性——car包提供Duerbin_Watson檢驗函數
三、線性——car包crPlots()繪製成分殘差圖(偏殘差圖)能夠看因變量與自變量之間是否呈線性
四、同方差性——car包ncvTest()原假設爲偏差方差不變,若拒絕原假設,則說明存在異方差性
五、多重共線性——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就是模型的R
2
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)
二、迴歸樹
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>)——
交互修剪,點擊結點,右擊結束
三、隨機森林
randomForest(
y ~., <data>
)——組合模型,由大量樹模型構成,迴歸任務採用預測結果的平均值。
四、支持向量機
svm(<formula>,<data>,gamma=1/ncol(<data>),<cost>)——e1071包,迴歸任務,<gamma>=0.01,<cost>=100違反邊際所引入的損失?
五、時間序列分析
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()中,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]
——環比增加率,分析週期性變化,避免週期性變化給數據分析帶來的影響,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)$pred進行預測,n.ahead參數用於設置預測新階段的數據量(將來5個月),
predict(...)$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選擇主成分,默認爲第一、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