1. 程式人生 > >R中的幾種統計分佈及常用模型 (整理)

R中的幾種統計分佈及常用模型 (整理)

蒐集自Little_Rookie部落格園,以下部分格式和內容有所修正和補充,歡迎轉載~

李陽  15應用統計學 內蒙古財經大學

統計學上分佈有很多,在R中基本都有描述。因能力有限,我們就挑選幾個常用的、比較重要的簡單介紹一下每種分佈的定義,公式,以及在R中的展示。



統計分佈每一種分佈有四個函式:d――density(密度函式),p――分佈函式,q――quantilie(分位數函式),r――random(隨機數函式)。比如,正態分佈的這四個函式為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) 卡方分佈
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時做資料中心化

相關推薦

R統計分佈常用模型 (整理)

蒐集自Little_Rookie部落格園,以下部分格式和內容有所修正和補充,歡迎轉載~ 李陽  15應用統計學 內蒙古財經大學 統計學上分佈有很多,在R中基本都有描述。因能力有限,我們就挑選幾個常用的、比較重要的簡單介紹一下每種分佈的定義,公式,以及在R中的展示。 統計

web開發常用統計圖使用

最近,筆者結合自己在公司專案使用統計圖的經驗以及自己的研究,對地圖統計、柱形圖統計、餅圖統計以及折線圖統計這幾種常用的統計作以歸納。主要使用到的js框架是highstock.js,一種完全基於javascript的前端框架。接下來,一一進行講解。 一、地圖

java 常用數據結構

初學 ble log app 使用 blog list 好的 sort Java中有幾種常用的數據結構,主要分為Collection和map兩個主要接口(接口只提供方法,並不提供實現),而程序中最終使用的數據結構是繼承自這些接口的數據結構類。 一、幾個常用類的區別 1.

C#常用的集合的用法

col div tex -c 組成 相同 列表 對象 count 集合:將一推數據類型相同的數據放入到一個容器內,該容器就是數組:內存中開辟的一連串空間。 非泛型集合 ArrayList集合: ArrayList是基於數組實現的,是一個動態數組,其容量能自動 增

JAVA常用的RPC框架介紹

github 不同的 target int https love num 分布 有一個 RPC是遠程過程調用的簡稱,廣泛應用在大規模分布式應用中,作用是有助於系統的垂直拆分,使系統更易拓展。Java中的RPC框架比較多,各有特色,廣泛使用的有RMI、Hessian、Du

說出JQuery常見的函數以他們的含義是什麽?

對象 jquery 加載 插入內容 其中 ont expr class exp   jQuery中常見的函數如下:    (1)get()取得所有匹配的DOM元素集合。   (2)get(index)取得其中一個匹配的元素。index表示取得第幾個匹配的元素。   (3

Java 常用的線程池

需要 表示 ali adf data future rate 並發 ng- Java 中幾種常用的線程池 轉載 : https://www.cnblogs.com/sachen/p/7401959.html 原創 2016年04月14日 23:29:01 標簽: j

selenium常用的等待

提起selenium中的等待,最先浮入你腦海的會是什麼呢? time sleep? 顯式等待? 隱式等待? …………   1.time sleep() 可以稱其為暫停等待,當設定為time.sleep(3)時意味著程式在等待3s後才會執行下一步查詢下一位元素,比較適合沒

網際網路常用的傳輸協議

網際網路中幾種常用的網路傳輸協議 網路傳輸協議多種多樣,各有所長,學起來真的很讓人頭大。 對協議的學習需要不斷地使用不斷加深理解。本篇就是我的個人學習筆記。 --一個正在努力學習的碼農新人 協議那麼多,常用的也就那麼幾個 程序/應用程協議 常見協議有:Telnet、FT

java開發過程常用演算法

排序演算法 排序演算法中包括:簡單排序、高階排序   簡單排序  簡單排序常用的有:氣泡排序、選擇排序、插入排序 氣泡排序程式碼如下: 1 private static void bubbleSrot(int[] arr) { 2 3 for (int

java開發過程常用算法

font sea 順序 包括 基數 本機 ade 算法 運行時間 排序算法 排序算法中包括:簡單排序、高級排序 簡單排序 簡單排序常用的有:冒泡排序、選擇排序、插入排序 冒泡排序代碼如下: 1 private static void bubbleSrot(in

ASP.NET MVC常用ActionResult

一、定義 MVC中ActionResult是Action的返回結果。ActionResult 有多個派生類,每個子類功能均不同,並不是所有的子類都需要返回檢視View,有些直接返回流,有些返回字串等。ActionResult是一個抽象類,它定義了唯一的ExecuteResult方法,引數為一個C

R檢驗正態分佈的方式

一、畫出密度函式與正態分佈密度圖比較: library(MASS) mu<- c(0,0,0) Sigma<- matrix(c(1,0.5,0.25,0.5,1,0.5, 0.25,0.5,1),3,3) M<- mvrnorm(1000,

MVC常用ActionResult

一、定義 MVC中ActionResult是Action的返回結果。ActionResult 有多個派生類,每個子類功能均不同,並不是所有的子類都需要返回檢視View,有些直接返回流,有些返回字串等。ActionResult是一個抽象類,它定義了唯一的ExecuteResul

javaMap在什麼情況下使用,並簡單介紹原因原理

一、Map用於儲存具有對映關係的資料,Map裡儲存著兩組資料:key和value,它們都可以使任何引用型別的資料,但key不能重複。所以通過指定的key就可以取出對應的value。Map介面定義瞭如下常用的方法: 1、void clear():刪除Map中所以鍵值對。 2、b

DNS服務常用服務的配置方法

DNS域名解析服務 域名作為替代IP地址的訪問名稱,構成是由頂級域名—代表國家,機構或組織等,二級域名—企業名稱或品牌名稱等,主機名—www或主機所提供的服務名稱等自主命名組成,相較於IP地址,域名更容易被理解和記憶。 鑑於網際網路中的域名和 IP 地址對應關係資料庫太

Mybatis,當插入資料後,返回最新主鍵id的方法,具體用法

                一、前言                                     資料庫操作怎能少了INSERT操作呢?下面記錄MyBatis關於INSERT操作的筆記,以便日後查閱。二、 insert元素 屬性詳解                              其

java常用的資料結構

JAVA中有幾種常用的資料結構,主要分為Collection和map兩個主要介面(介面值提供方法,並不提供實現),而程式中最終使用的資料結構是繼承自這些介面的資料結構類。 Collcation: Map: 一、幾個常用類的區別  1.ArrayList: 元素單個,

Android常用的定時器和延時方法

通過實際專案的練習,掌握了幾種android基本定時器和延時的用法,這裡我想總結一下作為自己的收穫,下面列出的是比較簡潔的模式,方便簡單地在程式中直接呼叫。 一、三種常用的定時器 1.Handler類的postDelayed方法: H

MFC常用的字串分割方法

功能介紹:從iStart位置取出字串中含pszTokens分割符間的內容;istart是開始分割的位置,一般設為0,下面是一段運用例項: 1 2 3 4 5 6 7 8 9 10 11 12