R語言時間序列函數大全(收藏!)

2021-02-13 CDA數據分析師

文 | 詹鵬

library(zoo) #時間格式預處理

library(xts) #同上

library(timeSeires) #同上

library(urca) #進行單位根檢驗

library(tseries) #arma模型

library(fUnitRoots) #進行單位根檢驗

library(FinTS) #調用其中的自回歸檢驗函數

library(fGarch) #GARCH模型

library(nlme) #調用其中的gls函數

library(fArma) #進行擬合和檢驗

數學函數

abs,sqrt:絕對值,平方根 log, log10, log2 , exp:對數與指數函數 sin,cos,tan,asin,acos,atan,atan2:三角函數 sinh,cosh,tanh,asinh,acosh,atanh:雙曲函數

簡單統計量

sum, mean, var, sd, min, max, range, median, IQR(四分位間距)等為統計量,sort,order,rank與排序有關,其它還有ave,fivenum,mad,quantile,stem等。

#轉成時間序列類型

x = rnorm(2)

charvec = c(「2010-01-01」,」2010-02-01」)

zoo(x,as.Date(charvec)) #包zoo

xts(x, as.Date(charvec)) #包xts

timeSeries(x,as.Date(charvec)) #包timeSeries

#規則的時間序列,數據在規定的時間間隔內出現

tm = ts(x,start = c(2010,1), frequency=12 ) #12為按月份,4為按季度,1為按年度

zm = zooreg(x,start = c(2010,1), frequency=12 ) #包zoo

xm = as.xts(tm) #包xts

sm = as.timeSeries(tm) #包timeSeries

#判斷是否為規則時間序列

is.regular(x)

#排序

zoo()和xts()會強制變換為正序(按照時間名稱)

timeSeries不會強制排序;其結果可以根據sort函數排序,也可以採用rev()函數進行逆序;參數recordIDs,可以給每個元素(行)標記一個ID,從而可以找回原來的順序

#預設的時間有重複的時間點時

zoo會報錯

xts按照升序排列

timeSeries把重複部分放置在尾部;

#行合併和列合併


#都是按照列名進行合併,列名不同的部分用NA代替

cbind()

rbind()

merge() 列合併

#取子集


xts()默認將向量做成了矩陣;其他與常規向量或者矩陣沒有差別

#缺失值處理


na.omit(x)

x[is.na(x)] = 0

x[is.na(x)] = mean(x,na.rm=TRUE)

x[is.na(x)] = median(x,na.rm=TRUE)

na.approx(x) #對缺失值進行線性插值

na.spline(x) #對缺失值進行樣條插值

na.locf(x) #末次觀測值結轉法

na.trim(x, sides=」left」 ) #去掉最後一個缺失值

#對timeSreies數據

na.omit(x, 「ir」 ) #去掉首末位置的缺失值

na.omit(x, 「iz」 ) #用替換首末位置的缺失值

na.omit(x, 「ie」 ) #對首末位置的缺失值進行插值

na.omit(x, method=「ie」, interp= c(「before」,」linear」,」after」) ) #可以選擇插值方法,before末次觀測值法,after下次觀測結轉法

as.contiguous(x) #返回x中最長的連續無缺失值的序列片段,如果有兩個等長的序列片段,則返回第一個。

#時間序列數據的顯示


#zoo和xts都只能按照原來的格式顯示,timeSeries可以設置顯示格式

print(x, format= 「%m/%d/%y %H:%M」) #%m表示月,%d表示天,%y表示年,%H表示時,%M表示分鐘,%A表示星期,%j表示天的序號

#timeSeries也可以按照ts的格式顯示

print(x, style=」ts」)

print(x, style=」ts」, by=」quarter」)

plot.zoo(x)

plot.xts(x)

plot.zoo(x, plot.type=」single」) #支持多個時間序列數據在一個圖中展示

plot(x, plot.type=」single」) #支持多個時間序列數據在一個圖中展示,僅對xts不行

1、自相關係數、偏自相關係數等

例題2.1

d=scan(「sha.csv」)

sha=ts(d,start=1964,freq=1)

plot.ts(sha) #繪製時序圖

acf(sha,22) #繪製自相關圖,滯後期數22

pacf(sha,22) #繪製偏自相關圖,滯後期數22

corr=acf(sha,22) #保存相關係數

cov=acf(sha,22,type = 「covariance」) #保存協方差

2、同時繪製兩組數據的時序圖

d=read.csv(「double.csv」,header=F)

double=ts(d,start=1964,freq=1)

plot(double, plot.type = 「multiple」) #兩組數據兩個圖

plot(double, plot.type = 「single」) #兩組數據一個圖

plot(double, plot.type = 「single」,col=c(「red」,」green」),lty=c(1,2)) #設置每組數據圖的顏色、曲線類型)

3、純隨機性檢驗

例題2.3續

d=scan(「temp.csv」)

temp=ts(d,freq=1,start=c(1949))

Box.test(temp, type=」Ljung-Box」,lag=6)

4、差分運算和滯後運算

diff

lag

5、模擬ARIMA模型的結果

arima.sim(n = 100, list(ar = 0.8))

plot.ts(arima.sim(n = 100, list(ar = 0.8))) #會隨機產生一個包含100個隨機數的時序圖

plot.ts(arima.sim(n = 100, list(ar = -1.1))) #非平穩,無法得到時序圖。

plot.ts(arima.sim(n = 100, list(ar = c(1,-0.5))))

plot.ts(arima.sim(n = 100, list(ar = c(1,0.5))))

arima.sim(n = 1000, list(ar = 0.5, ma = -0.8))

acf(arima.sim(n = 1000, list(ar = 0.5, ma = -0.8)),20)

pacf(arima.sim(n = 1000, list(ar = 0.5, ma = -0.8)),20)

#方法1


b=ts(read.csv(「6_1.csv」,header=T))

x=b[,1]

y=b[,1]

summary(ur.df(x,type=」trend」,selectlags=」AIC」))

#方法2:單位根檢驗更好的函數,加了畫圖的功能

library(fUnitRoots)

urdfTest(x)

#方法3:ADF檢驗的一個自編函數

library(urca)

#…

ur.df.01=function(x,lags=8){

#將三種ADF檢驗形式匯總的函數(結果和EVIEWS不一致)

res=matrix(0,5,3)

colnames(res)=c(「無」,」含常數項」,」含常數項和趨勢項」)

rownames(res)=c(「tau統計量」,」1%臨界值」,」5%臨界值」,

「10%臨界值」,」是否穩定(1/0)」)

types=c(「none」,」drift」,」trend」)

for(i in 1:3){

x.adf=ur.df(x,type=types[i],lags=lags,selectlags=」AIC」)

x.adf.1=x.adf@teststat #統計量

x.adf.2=x.adf@cval #臨界值

res[1,i] =x.adf.1[1]

res[2:4,i]=x.adf.2[1,]

res[5,i]=if( abs(res[1,i]) > abs(res[3,i]) ) 1 else 0

}

return(res)

}

#…

ur.df.01(x) #對原序列進行判斷

d=scan(「a1.5.txt」) #導入數據

prop=ts(d,start=1950,freq=1) #轉化為時間序列數據

plot(prop) #作時序圖

acf(prop,12) #作自相關圖,拖尾

pacf(prop,12) #作偏自相關圖,1階截尾

Box.test(prop, type=」Ljung-Box」,lag=6)

#純隨機性檢驗,p值小於5%,序列為非白噪聲

Box.test(prop, type=」Ljung-Box」,lag=12)

( m1=arima(prop, order = c(1,0,0),method=」ML」) ) #用AR(1)模型擬合,如參數method=」CSS」,估計方法為條件最小二乘法,用條件最小二乘法時,不顯示AIC。

( m2=arima(prop, order = c(1,0,0),method=」ML」, include.mean = F) ) #用AR(1)模型擬合,不含截距項。

tsdiag(m1) #對估計進行診斷,判斷殘差是否為白噪聲

summary(m1)

r=m1$residuals #用r來保存殘差

Box.test(r,type=」Ljung-Box」,lag=6, fitdf=1)#對殘差進行純隨機性檢驗,fitdf表示殘差減少的自由度

AutocorTest(m1$resid) #加載FinTS包,進行自相關檢驗

prop.fore = predict(m1, n.ahead =5) #將未來5期預測值保存在prop.fore變量中

U = prop.fore$pred + 1.96* prop.fore$se #會自動產生方差

L = prop.fore$pred – 1.96* prop.fore$se #算出95%置信區間

ts.plot(prop, prop.fore$pred, col=1:2) #作時序圖,含預測。

lines(U, col=」blue」, lty=」dashed」)

lines(L, col=」blue」, lty=」dashed」)#在時序圖中作出95%置信區間

——說明:運行命令arima(prop, order = c(1,0,0),method=」ML」)之後,顯示:

Call:

arima(x = prop, order = c(1, 0, 0), method = 「ML」)

Coefficients:

ar1 intercept

0.6914 81.5509

s.e. 0.0989 1.7453

sigma^2 estimated as 15.51: log likelihood = -137.02, aic = 280.05

注意:intercept下面的81.5509是均值,而不是截距!雖然intercept是截距的意思,這裡如果用mean會更好。(the mean and the intercept are the same only when there is no AR term,均值和截距是相同的,只有在沒有AR項的時候)

如果想得到截距,利用公式計算。int=(1-0.6914)*81.5509= 25.16661。

——說明:Box.test(r,type=」Ljung-Box」,lag=6,fitdf=1)

fitdf表示p+q,number of degrees of freedom to be subtracted if x is a series of residuals,當檢驗的序列是殘差到時候,需要加上命令fitdf,表示減去的自由度。

運行Box.test(r,type=」Ljung-Box」,lag=6,fitdf=1)後,顯示的結果:

Box.test(r,type=」Ljung-Box」,lag=6,fitdf=1)

Box-Ljung test

data: r

X-squared = 5.8661, df = 5, p-value = 0.3195

「df = 5」表示自由度為5,由於參數lag=6,所以是滯後6期的檢驗。

#另一個參數估計與檢驗的方法(加載fArma程序包)

ue=ts(scan(「unemployment.txt」),start=1962,f=4) #讀取數據

due=diff(ue)

ddue=diff(due,lag=4)

fit2=armaFit(~arima(4,0,0),include.mean=F,data=ddue,method=」ML」) #另一種擬合函數

summary(fit2)

fit3=armaFit(~arima(4,0,0),data=ddue,transform.pars=F,fixed=c(NA,0,0,NA),include.mean=F,method=」CSS」)

summary(fit3)

#固定某些係數的值

arima(dw,order=c(4,0,0),fixed=c(NA,0,0,NA,0),method=」CSS」)

#乘積季節模型

wue=ts(scan(「wue.txt」),start=1948,f=12)

arima(wue,order=c(1,1,1),seasonal=list(order=c(0,1,1),period=12),include.mean=F,method=」CSS」)

#擬合自回歸模型,因變量關於時間的回歸模型

eg1=ts(scan(「582.txt」))

ts.plot(eg1)

fit.gls=gls(eg1~-1+time(eg1), correlation=corARMA(p=1), method=」ML」) #看nlme包

summary(fit.gls2)

#或

fit=arima(eg1,c(1,0,0),xreg=time(eg1),include.mean=F,method=」ML」)

AutocorTest(fit$resid) #殘差白噪聲檢驗

#延遲因變量回歸模型

leg1=lag(eg1,-1)

y=cbind(eg1,leg1)

fit=arima(y[,1],c(0,0,0),xreg=y[,2],include.mean=F)

#擬合GARCH模型

library(tseries)

library(fGarch)

library(FinTS)

a=ts(scan(「583.txt」))

ts.plot(a)

fit=lm(a~-1+time(a))

r=resid(fit)

summary(fit)

pacf(r^2)

acf(r)

acf(r^2)

AutocorTest(r) #殘差是否存在序列相關

ArchTest(r) #是否存在ARCH效應

fit1=garchFit(~arma(2,0)+garch(1,1), data=r, algorithm=」nlminb+nm」,

trace=F, include.mean=F)

summary(fit1)

#協整檢驗

fit=arima(b[,2],xreg=b[,1],method=」CSS」)

r=resid(fit)

summary(ur.df(r,type=」drift」,lag=1))

Box.test(r,lag=6,fitdf=1)

acf.3(x) #同時繪製3個相關圖,acf函數的擴展

ur.df.01(x) #進行單位根檢驗,得到更加舒服的結果

tsdiag2(x) #返回x的

arma.choose(x,ari=3,mai=3) #選擇合適的AR和MA,基於包tseries的arma函數

#########################附屬自編函數

#…

acf.3=function(x,lag.max=10,…){

ol=par(mfrow=c(3,1),mar=c(2,4,1,1))

acf(x,lag.max=lag.max,type=」correlation」)

acf(x,lag.max= lag.max,type=」covariance」)

acf(x,lag.max= lag.max,type=」partial」)

par(ol)

}

#…

#…類似於tsgiag函數的擴展

tsdiag2=function(xx.model,fitdf=0,testlag=10){

t1=xx.arma$residuals

t2=acf(na.omit(t1),plot=F)

t3=sapply(1:testlag,

function(x,r,fitdf){

Box.test(r,type=」Ljung-Box」,lag=x, fitdf=fitdf)

},

r=t1,fitdf=fitdf)

par(mfrow=c(3,1))

plot(t1,type=」b」,ylab=」」,main=」殘差走勢」)

lines(c(0,length(t1)*2),c(0,0),col=2,lty=2)

plot(t2,type=」h」,ylab=」ACF」,main=」殘差的自相關係數」)

plot(do.call(「c」,t3[3,]),type=」p」,ylab=」P-value」,pch=16,col=4,

ylim=c(0,1),main=」殘差的Ljung-Box檢驗」)

lines(c(0,attr(t1,」tsp」)[2]),c(0.05,0.05),lty=2,col=2)

}

#…

ur.df.01=function(x,lags=8){

#將三種ADF檢驗形式匯總的函數(結果和EVIEWS不一致)

res=matrix(0,5,3)

colnames(res)=c(「無」,」含常數項」,」含常數項和趨勢項」)

rownames(res)=c(「tau統計量」,」1%臨界值」,」5%臨界值」,

「10%臨界值」,」是否穩定(1/0)」)

types=c(「none」,」drift」,」trend」)

for(i in 1:3){

x.adf=ur.df(x,type=types[i],lags=lags,selectlags=」AIC」)

x.adf.1=x.adf@teststat #統計量

x.adf.2=x.adf@cval #臨界值

res[1,i] =x.adf.1[1]

res[2:4,i]=x.adf.2[1,]

res[5,i]=if( !is.nan(res[1,i]) & abs(res[1,i]) > abs(res[3,i]) ) 1 else 0

}

return(res)

}

#…

#…

arma.choose.02=function(x){

#二進位進位運算,以矩陣形式,x=c(0,1,0,1,…)

n=length(x)

if( all(!as.logical(x-rep(1,n))) ) stop(「已不能再加1!」)

x[1]=x[1]+1

for(i in 1:(n-1)) if(x[i]>1){ x[i]=0;x[i+1]=x[i+1]+1 }

return(x)

}

arma.choose.01=function(ti){

#把ti變換成所有可能的ti個0或1的組合

if(ti<0) stop(「ti要大於0!」)

if(ti==0) return(0)

if(ti%%1!=0) stop(「ti要整數!」)

res=matrix(0,2^ti,ti)

for(i in 2:2^ti) res[i,]=arma.choose.02(res[i-1,])

return(res)

}

arma.choose.03=function(t0){

gsub(「, 「,」.」,toString(t0,sep=」」))

}

arma.choose.04=function(i,ari,tti){

#ari是最大滯後期,tti由ari生成

ar.lag=((1:ari)*tti[i,])

ar.lag=ar.lag[ar.lag!=0]

ar.lag

}

arma.choose=function(x,ari=3,mai=3,…){

tti=arma.choose.01(ari)

ttj=arma.choose.01(mai)

ti=2^ari;tj=2^mai

res.aic=matrix(Inf,ti,tj) #保存所有組合的AIC

rownames(res.aic)=paste(「AR」,apply(tti,1,arma.choose.03),sep=」.」)

colnames(res.aic)=paste(「MA」,apply(ttj,1,arma.choose.03),sep=」.」)

res.rss=matrix(Inf,ti,tj) #保存所有組合的RSS

rownames(res.rss)=paste(「AR」,apply(tti,1,arma.choose.03),sep=」.」)

colnames(res.rss)=paste(「MA」,apply(ttj,1,arma.choose.03),sep=」.」)

for(i in 2:ti){

j=1

ar.lag=arma.choose.04(i,ari,tti)

x.arma=arma(x,lag=list(ar=ar.lag),…)

ss=summary(x.arma)

res.aic[i,j]=ss$aic

res.rss[i,j]=sum(ss$residuals^2)

}

for(j in 2:tj){

i=1

ma.lag=arma.choose.04(j,mai,ttj)

x.arma=arma(x,lag=list(ma=ma.lag),…)

ss=summary(x.arma)

res.aic[i,j]=ss$aic

res.rss[i,j]=sum(ss$residuals^2)

}

for(i in 2:ti){for(j in 2:tj){

ar.lag=arma.choose.04(i,ari,tti)

ma.lag=arma.choose.04(j,mai,ttj)

x.arma=arma(x,lag=list(ar=ar.lag,ma=ma.lag),…)

ss=summary(x.arma)

res.aic[i,j]=ss$aic

res.rss[i,j]=sum(ss$residuals^2)

}}

res=list()

res[[「tt.ar」]]=tti

res[[「tt.ma」]]=ttj

temp1=which.min(res.aic) #找到最小的位置,把res.aic當做按列排的向量

temp2=temp1 %% ti #ti是行數,取餘以後就是(temp2)行號

#AR可以直接被arma調用,MA同理

res[[「AR」]]=if(temp2==0) arma.choose.04(ti,ari,tti) else arma.choose.04(temp2,ari,tti)

res[[「MA」]]=arma.choose.04( ceiling( temp1 / ti ), mai,ttj)

res[[「aic」]]=res.aic

res[[「rss」]]=res.rss

res

}

#

來自笑玩學

點擊文章底部「閱讀原文」,或者進入公眾號回復關鍵詞「白皮書」,獲取《中國數據分析職業發展白皮書》

回復關鍵字 看往期精彩~

1001 ☛ 一分鐘讀懂2015中國數據分析師行業峰會!

1002 ☛ 吳喜之:數據分析和數據挖掘是最大的求職法寶

1003 ☛ 33道Hadoop面試題,看看你能答對多少?(答案在後面)

1004 ☛ 成為首席數據官是一種什麼樣的體驗?

1005 ☛ 超能教程 十分鐘學會 Python!

點擊下方閱讀原文獲取《中國數據分析職業發展白皮書》

相關焦點

  • 【R函數學習】R語言時間序列函數整理
    , log10, log2 , exp:對數與指數函數 sin,cos,tan,asin,acos,atan,atan2:三角函數 sinh,cosh,tanh,asinh,acosh,atanh:雙曲函數 簡單統計量sum, mean, var, sd, min, max, range, median, IQR(四分位間距)等為統計量,sort,order,rank與排序有關,其它還有
  • R語言時間序列分析
    - 趨勢:是時間序列在長時期內呈現出來的持續向上或持續向下的變動;- 季節變動:是時間序列在一年內重複出現的周期性波動。它是諸如氣候條件、生產條件、節假日或人們的風俗習慣等各種因素影響的結果;- 循環波動:是時間序列呈現出的非固定長度的周期性變動。
  • R語言常用函數匯總
    median(x)中位數sd(x)標準差var(x)方差quantile(x, probs)求分位數,x為待求分位數的數值型向量,probs是一個由[0,1]的概率值組成的數值型向量range(x)求值域sum(x)求和min
  • python時間序列分析之_用pandas中的rolling函數計算時間窗口數據
    如下面的示意圖所示,其中時間序列數據代表的是15日每日的溫度,現在我們以3天為一個窗口,將這個窗口從左至右依次滑動,統計出3天的平均值作為這個點的值,比如3號的溫度就是1號、2號、3號的平均溫度,通過示意圖我們已經理解了滑動窗口,下面我們就看看pandas中使用的函數及各參數的含義。
  • 全棧數據之R語言常用包和函數
    計量經濟學中很大一部分是關於時間序列分析的,這一塊內容在下面的地方說。時間序列書籍的書籍分兩類,一種是比較普適的書籍,典型的代表是:《Time Series Analysis and Its Applications :with R examples》。該書介紹了各種時間序列分析的經典方法及實現各種經典方法的R代碼,該書有中文版。
  • R語言 控制流:for、while、ifelse和自定義函數function
    ,多次調用,一勞永逸)3.1 自定義函數編寫3.2 source()文件間調用自定義函數分支和循環是通用程式語言中常見的兩大控制流。接下來分別從分支控制和循環控制,對R語言中的控制流做簡單講述。(t,r='re',g='gr',b='bl',"error")[1] "re"#如果不匹配任何參數名,switch函數不返回任何值,可以添加一個匿名的參數,#當表達式(exp)匹配不上任意一個命名參數時,switch函數將返回匿名參數的值:> t = "xs"> switch(t,r='re',g='gr',b='bl',"error")[1] "error"
  • R學習用R語言做分析(12)——時間序列分析簡介
    繪圖     接下來我們用plot函數繪製時間序列圖:plot.ts(birthstimeseries)  可以看到這個時間序列在一定月份存在的季節性變動:在每年的夏天都有一個出生峰值,在冬季的時候進入波谷。
  • MySQL常用函數大全,趕快收藏
    MySQL常用函數大全,趕快收藏,今後一定能用著MySQL 數值型函數函數名稱作 用ABS
  • 用R語言做時間序列分析(附數據集和源碼)
    時間序列(time series)是一系列有序的數據。通常是等時間間隔的採樣數據。
  • R語言:Newton法、似然函數
    hello,大家好,上一篇分享了如何用R語言實現蒙特卡洛模擬,並用蒙特卡洛模擬計算了分布的均值和方差,今天給大家分享如何用R語言來進行矩估計和似然函數的求解。因為在求解矩估計和似然函數時,可能會遇到非線性方程組,所以先給大家介紹一下如何用Newton法來求解非線性方程組。
  • R語言從入門到精通:Day10-R語言統計入門代碼大全
    到目前為止,R語言的數據操作和基礎繪圖部分已經講解完畢,換句話說,大家應該已經能將數據導入R中,並運用各種函數處理數據使其成為可用的格式,然後將數據用各種基礎圖形展示
  • R時間序列分析(6)時間序列分解(下)
    季節變化的概念在本質上是有些模稜兩可的:時間變化是否應被視為季節性、趨勢性或殘差,在某種程度上是一個「觀念」問題,要由模型和模型參數的選擇決定。這就為時間序列分解問題帶來了複雜性。1、X11X11方法針對季度和月度時間序列數據進行季節性調整。X11方法由美國人口普查局開發,最早可以追溯到1950年代。
  • r語言 tseries - CSDN
    (x,as.Date(charvec)) #包timeSeries#規則的時間序列,數據在規定的時間間隔內出現tm = ts(x,start = c(2010,1), frequency=12 ) #12為按月份,4為按季度,1為按年度zm = zooreg(x,start = c(2010,1), frequency=12 ) #包zooxm
  • 乾貨收藏 R語言之正則表達式
    R中的grep、grepl、sub、gsub、regexpr、gregexpr等函數都使用正則表達式的規則進行匹配。replacement如果查找到之後,進行替換,若沒有找到,則返回x,text值接下來我們對這幾個函數談談他們的不同點。
  • 【R知識】R語言apply函數族筆記
    為什麼用apply因為我是一個程式設計師,所以在最初學習R的時候,當成「又一門程式語言」來學習,但是怎麼學都覺得彆扭。
  • 乾貨 掌握R語言中的apply函數族
    原因在於R的循環操作for和while,都是基於R語言本身來實現的,而向量操作是基於底層的C語言函數實現的,從性能上來看,就會有比較明顯的差距了。那麼如何使用C的函數來實現向量計算呢,就是要用到apply的家族函數,包括apply, sapply, tapply, mapply, lapply, rapply, vapply, eapply等。
  • 迅速上手的時間序列分析教程
    時間序列是指以固定時間為間隔的、由所觀察的值組成的序列。根據觀測值的不同頻率,可將時間序列分成小時、天、星期、月份、季度和年等時間形式的序列。有時候,你也可以將秒鐘和分鐘作為時間序列的間隔,如每分鐘的點擊次數和訪客數等等。 為什麼我們要對時間序列進行分析呢?因為當你想對一個序列進行預測時,首先要完成分析這個步驟。
  • BFAST分析MODIS時間序列數據
    BFAST分析MODIS時間序列數據前面分享了一篇論文,打算復現研究一下,查了查用到的方法,在這裡分享Jan Verbeselt寫的教程。教程原文請大家點擊文末 閱讀原文 跳轉。經過測試代碼能夠運行通過。
  • R語言可視化(二十七):序列logo圖繪製
    序列logo圖繪製清除當前環境中的變量rm(list=ls())設置工作目錄setwd("C:/Users/Dell/Desktop/R_Plots/27seqlogo/")使用seqLogo包繪製序列logo圖
  • [STATA] 時間序列模型 - ARIMA檢驗
    一、背景介紹時間序列模型是將一個或一組變量按照時間次序排列,用於解釋變量和相互關係的數學表達式,所得到的離散數字組成的序列集合。時間序列模型,可分為平穩時間序列和非平穩時間序列。平穩時間序列可以用來擬合回歸方程進行未來的預測,而非平穩的時間序列不能直接做回歸,會產生沒有實際意義的偽回歸。