統計學上分布有很多,在R中基本都有描述。因能力有限,我們就挑選幾個常用的、比較重要的簡單介紹一下每種分布的定義,公式,以及在R中的展示。
統計分布每一種分布有四個函數:d――density(密度函數),p――分布函數,q――分位數函數,r――隨機數函數。比如,正態分布的這四個函數為dnorm,pnorm,qnorm,rnorm。下面我們列出各分布后綴,前面加前綴d、p、q或r就構成函數名:norm:正態,t:t分布,f:F分布,chisq:卡方(包括非中心) unif:均勻,exp:指數,weibull:威布爾,gamma:伽瑪,beta:貝塔 lnorm:對數正態,logis:邏輯分布,cauchy:柯西, binom:二項分布,geom:幾何分布,hyper:超幾何,nbinom:負二項,pois:泊松 signrank:符號秩,wilcox:秩和,tukey:學生化極差
下面先列舉各種分布:
rnorm(n, mean=0, sd=1) 高斯(正態)分布
rexp(n, rate=1) 指數分布
rgamma(n, shape, scale=1) γ分布
rpois(n, lambda) Poisson分布
rweibull(n, shape, scale=1) Weibull分布
rcauchy(n, location=0, scale=1) Cauchy分布
rbeta(n, shape1, shape2) β分布
rt(n, df) t分布
rf(n, df1, df2) F分布
rchisq(n, df) χ 2 分布
rbinom(n, size, prob)二項分布
rgeom(n, prob)幾何分布
rhyper(nn, m, n, k) 超幾何分布
rlogis(n, location=0, scale=1) logistic分布
rlnorm(n, meanlog=0, sdlog=1)對數正態
rnbinom(n, size, prob)負二項分布
runif(n, min=0, max=1)均勻分布
rwilcox(nn, m, n), rsignrank(nn, n) Wilcoxon分布
注意了,上面的分布都有一個規律,就是所有的函數前面都有r開始,所以呢,如果想獲得概率密度,就用d替換r
如果想獲取累計概率密度,就用p替換r
如果想獲取分位數,就用q替換r
二項分布:
即重復n次獨立的伯努利試驗。在每次試驗中只有兩種可能的結果,兩種結果發生與否互相對立,並且相互獨立,與其它各次試驗結果無關,事件發生與否的概率在每一次獨立試驗中都保持不變,則這一系列試驗總稱為n重伯努利實驗,當試驗次數為1時,二項分布服從0-1分布。
公式:P(ξ=K)= C(n,k) * p^k * (1-p)^(n-k)
其中,P是成功的概率,n是n次獨立重復實驗,k是n次實驗k次發生的概率
期望:Eξ=np
方差:Dξ=np(1-p)
二項分布在R中展現:
p=.4
K=200
n=10000
x=rbinom(n,k,p)
hist(x)
進行標准化處理:
mean=k*p
var=k*p*(1-p)
z=(x-mean)/sqrt(var)
hist(z)
繪制密度圖
mean=k*p
var=k*p*(1-p)
z=(x-mean)/sqrt(var)
hist(z)
正態分布:
正態曲線呈鍾型,兩頭低,中間高,左右對稱因其曲線呈鍾形,因此人們又經常稱之為鍾形曲線。
若隨機變量X服從一個數學期望為μ、方差為σ^2的正態分布,記為N(μ,σ^2)
當μ = 0,σ = 1時的正態分布是標准正態分布。
正態分布在R中的展現:
x=rnorm(k, mean=mean,sd=sqrt(var))
hist(x)
泊松分布:
是一種統計與概率學里常見到的離散概率分布,由法國數學家西莫恩·德尼·泊松(Siméon-Denis Poisson)在1838年時發表。
泊松分布的概率函數:
泊松分布的參數λ是單位時間(或單位面積)內隨機事件的平均發生率。 泊松分布適合於描述單位時間內隨機事件發生的次數。
泊松分布在R中的展現:
par(mfrow=c(2,2),mar = c(3,4,1,1))
lambda=.5
x=rpois(k, lambda)
hist(x)
lambda=1
x=rpois(k, lambda)
hist(x)
lambda=5
x=rpois(k, lambda)
hist(x)
lambda=10
x=rpois(k, lambda)
hist(x)
二項分布與泊松分布:
當二項分布的n很大而p很小時,泊松分布可作為二項分布的近似,其中λ為np。通常當n≧10,p≦0.1時,就可以用泊松公式近似得計算。
par(mfrow=c(3,3),mar = c(3,4,1,1))
k=10000
p=c(.5, .05, .005)
n=c(10,100,1000)
for (i in p){
for (j in n){
x=rbinom(k,j,i)
hist(x)
}}
卡方分布:
若n個相互獨立的隨機變量ξ₁、ξ₂、……、ξn ,均服從標准正態分布(也稱獨立同分布於標准正態分布),則這n個服從標准正態分布的隨機變量的平方和構成一新的隨機變量,其分布規律稱為卡方分布(chi-square distribution)。
卡方分布是由正態分布構造而成的一個新的分布,當自由度n很大時,
分布近似為正態分布。
卡方分布在R中的展示:
k=10000
par(mfrow=c(2,2),mar = c(3,4,1,1))
x=rchisq(k,2)
d=density(x)
plot(d)
x=rchisq(k,5)
d=density(x)
plot(d)
x=rchisq(k,100)
d=density(x)
plot(d)
x=rchisq(k,1000)
d=density(x)
plot(d)
F分布:
F分布定義為:設X、Y為兩個獨立的隨機變量,X服從自由度為k1的卡方分布,Y服從自由度為k2的卡方分布,這2 個獨立的卡方分布被各自的自由度除以后的比率這一統計量的分布。即: F分布是服從第一自由度為k1,第二自由度為k2的分布。
k=10000
par(mfrow=c(2,2),mar = c(3,4,1,1))
x=rf(k,1, 100)
hist(x)
x=rf(k,1, 10000)
hist(x)
x=rf(k,10, 10000)
hist(x)
x=rf(k,10000, 10000)
hist(x)
t分布:
t分布曲線形態與n(確切地說與自由度v)大小有關。與標准正態分布曲線相比,自由度v越小,t分布曲線愈平坦,曲線中間愈低,曲線雙側尾部翹得愈高;自由度v愈大,t分布曲線愈接近正態分布曲線,當自由度v=∞時,t分布曲線為標准正態分布曲線。
k=10000
par(mfrow=c(2,2),mar = c(3,4,1,1))
x=rt(k,2)
hist(x)
x=rt(k,5)
hist(x)
x=rt(k,10)
hist(x)
x=rt(k,100)
hist(x)
幾種分布關系圖示:
i2mean=function(x,n=10){
k=length(x)
nobs=k/n
xm=matrix(x,nobs,n)
y=rowMeans(xm)
return (y)
}
par(mfrow=c(5,1),mar = c(3,4,1,1))
#Binomia
p=.05
n=100
k=10000
x=i2mean(rbinom(k, n,p))
d=density(x)
plot(d,main="Binomial")
#Poisson
lambda=10
x=i2mean(rpois(k, lambda))
d=density(x)
plot(d,main="Poisson")
#Chi-Square
x=i2mean(rchisq(k,5))
d=density(x)
plot(d,main="Chi-square")
#F
x=i2mean(rf(k,10, 10000))
d=density(x)
plot(d,main="F dist")
#t
x=i2mean(rt(k,5))
d=density(x)
plot(d,main="t dist")
數理統計
基礎知識
統計量
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()中,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選擇主成分,默認為第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時做數據中心化
來源於:砍柴問樵夫