時(shí)間序列分析(一) 如何判斷序列是否平穩(wěn)
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),雷州網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)10年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:雷州等地區(qū)。雷州做網(wǎng)站價(jià)格咨詢:028-86922220
序列平穩(wěn)不平穩(wěn),一般采用兩種方法:
第一種:看圖法
圖是指時(shí)序圖,例如(eviews畫滴):
分析:什么樣的圖不平穩(wěn),先說下什么是平穩(wěn),平穩(wěn)就是圍繞著一個(gè)常數(shù)上下波動(dòng)。
看看上面這個(gè)圖,很明顯的增長趨勢,不平穩(wěn)。
第二種:自相關(guān)系數(shù)和偏相關(guān)系數(shù)
還以上面的序列為例:用eviews得到自相關(guān)和偏相關(guān)圖,Q統(tǒng)計(jì)量和伴隨概率。
分析:判斷平穩(wěn)與否的話,用自相關(guān)圖和偏相關(guān)圖就可以了。
平穩(wěn)的序列的自相關(guān)圖和偏相關(guān)圖不是拖尾就是截尾。截尾就是在某階之后,系數(shù)都為 0 ,怎么理解呢,看上面偏相關(guān)的圖,當(dāng)階數(shù)為 1 的時(shí)候,系數(shù)值還是很大, 0.914. 二階長的時(shí)候突然就變成了 0.050. 后面的值都很小,認(rèn)為是趨于 0 ,這種狀況就是截尾。再就是拖尾,拖尾就是有一個(gè)衰減的趨勢,但是不都為 0 。
自相關(guān)圖既不是拖尾也不是截尾。以上的圖的自相關(guān)是一個(gè)三角對稱的形式,這種趨勢是單調(diào)趨勢的典型圖形。
下面是通過自相關(guān)的其他功能
如果自相關(guān)是拖尾,偏相關(guān)截尾,則用 AR 算法
如果自相關(guān)截尾,偏相關(guān)拖尾,則用 MA 算法
如果自相關(guān)和偏相關(guān)都是拖尾,則用 ARMA 算法, ARIMA 是 ARMA 算法的擴(kuò)展版,用法類似 。
不平穩(wěn),怎么辦?
答案是差分
還是上面那個(gè)序列,兩種方法都證明他是不靠譜的,不平穩(wěn)的。確定不平穩(wěn)后,依次進(jìn)行1階、2階、3階...差分,直到平穩(wěn)位置。先來個(gè)一階差分,上圖。
從圖上看,一階差分的效果不錯(cuò),看著是平穩(wěn)的。
學(xué)習(xí)目標(biāo):
OpenCV 中有 150 多種色彩空間轉(zhuǎn)化的方法,這里只討論兩種:
HSV的色相范圍為[0,179],飽和度范圍為[0,255],值范圍為[0,255]。不同的軟件使用不同的規(guī)模。如果要比較 OpenCV 值和它們,你需要標(biāo)準(zhǔn)化這些范圍。
HSV 和 HLV 解釋
運(yùn)行結(jié)果:該段程序的作用是檢測藍(lán)色目標(biāo),同理可以檢測其他顏色的目標(biāo)
結(jié)果中存在一定的噪音,之后的章節(jié)將會(huì)去掉它
這是物體跟蹤中最簡單的方法。一旦你學(xué)會(huì)了等高線的函數(shù),你可以做很多事情,比如找到這個(gè)物體的質(zhì)心,用它來跟蹤這個(gè)物體,僅僅通過在相機(jī)前移動(dòng)你的手來畫圖表,還有很多其他有趣的事情。
菜鳥教程 在線 HSV- BGR 轉(zhuǎn)換
比如要找出綠色的 HSV 值,可以使用上面的程序,得到的值取一個(gè)上下界。如上面的取下界 [H-10, 100, 100],上界 [H+10, 255, 255]
或者使用其他工具如 GIMP
學(xué)習(xí)目標(biāo):
對圖像進(jìn)行閾值處理,算是一種最簡單的圖像分割方法,基于圖像與背景之間的灰度差異,此項(xiàng)分割是基于像素級(jí)的分割
threshold(src, thresh, maxval, type[, dst]) - retval, dst
計(jì)算圖像小區(qū)域的閾值。所以我們對同一幅圖像的不同區(qū)域得到不同的閾值,這給我們在不同光照下的圖像提供了更好的結(jié)果。
三個(gè)特殊的輸入?yún)?shù)和一個(gè)輸出參數(shù)
adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst]) - dst
opencv-threshold-python
OpenCV 圖片集
本節(jié)原文
學(xué)習(xí)目標(biāo):
OpenCV 提供兩種變換函數(shù): cv2.warpAffine 和 cv2.warpPerspective
cv2.resize() 完成縮放
文檔說明
運(yùn)行結(jié)果
說明 : cv2.INTER_LINEAR 方法比 cv2.INTER_CUBIC 還慢,好像與官方文檔說的不一致? 有待驗(yàn)證。
速度比較: INTER_CUBIC INTER_NEAREST INTER_LINEAR INTER_AREA INTER_LANCZOS4
改變圖像的位置,創(chuàng)建一個(gè) np.float32 類型的變換矩陣,
warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) - dst
運(yùn)行結(jié)果:
旋轉(zhuǎn)角度( )是通過一個(gè)變換矩陣變換的:
OpenCV 提供的是可調(diào)旋轉(zhuǎn)中心的縮放旋轉(zhuǎn),這樣你可以在任何你喜歡的位置旋轉(zhuǎn)。修正后的變換矩陣為
這里
OpenCV 提供了 cv2.getRotationMatrix2D 控制
cv2.getRotationMatrix2D(center, angle, scale) → retval
運(yùn)行結(jié)果
cv2.getAffineTransform(src, dst) → retval
函數(shù)關(guān)系:
\begin{bmatrix} x'_i \ y'_i \end{bmatrix}\begin{bmatrix} x'_i \ y'_i \end{bmatrix} =
其中
運(yùn)行結(jié)果:圖上的點(diǎn)便于觀察,兩圖中的紅點(diǎn)是相互對應(yīng)的
透視變換需要一個(gè) 3x3 變換矩陣。轉(zhuǎn)換之后直線仍然保持筆直,要找到這個(gè)變換矩陣,需要輸入圖像上的 4 個(gè)點(diǎn)和輸出圖像上的對應(yīng)點(diǎn)。在這 4 個(gè)點(diǎn)中,有 3 個(gè)不應(yīng)該共線。通過 cv2.getPerspectiveTransform 計(jì)算得到變換矩陣,得到的矩陣 cv2.warpPerspective 變換得到最終結(jié)果。
本節(jié)原文
平滑處理(smoothing)也稱模糊處理(bluring),是一種簡單且使用頻率很高的圖像處理方法。平滑處理的用途:常見是用來 減少圖像上的噪點(diǎn)或失真 。在涉及到降低圖像分辨率時(shí),平滑處理是很好用的方法。
圖像濾波:盡量保留圖像細(xì)節(jié)特征的條件下對目標(biāo)圖像的噪聲進(jìn)行抑制,其處理效果的好壞將直接影響到后續(xù)圖像處理和分析的有效性和可靠性。
消除圖像中的噪聲成分叫做圖像的平滑化或?yàn)V波操作。信號(hào)或圖像的能量大部分集中在幅度譜的低頻和中頻段,在高頻段,有用的信息會(huì)被噪聲淹沒。因此一個(gè)能降低高頻成分幅度的濾波器就能夠減弱噪聲的影響。
濾波的目的:抽出對象的特征作為圖像識(shí)別的特征模式;為適應(yīng)圖像處理的要求,消除圖像數(shù)字化時(shí)混入的噪聲。
濾波處理的要求:不能損壞圖像的輪廓及邊緣等重要信息;圖像清晰視覺效果好。
平滑濾波是低頻增強(qiáng)的空間濾波技術(shù),目的:模糊和消除噪音。
空間域的平滑濾波一般采用簡單平均法,即求鄰近像元點(diǎn)的平均亮度值。鄰域的大小與平滑的效果直接相關(guān),鄰域越大平滑效果越好,但是鄰域過大,平滑也會(huì)使邊緣信息的損失的越大,從而使輸出圖像變得模糊。因此需要選擇合適的鄰域。
濾波器:一個(gè)包含加權(quán)系數(shù)的窗口,利用濾波器平滑處理圖像時(shí),把這個(gè)窗口放在圖像上,透過這個(gè)窗口來看我們得到的圖像。
線性濾波器:用于剔除輸入信號(hào)中不想要的頻率或者從許多頻率中選擇一個(gè)想要的頻率。
低通濾波器、高通濾波器、帶通濾波器、帶阻濾波器、全通濾波器、陷波濾波器
boxFilter(src, ddepth, ksize[, dst[, anchor[, normalize[, borderType]]]]) - dst
均值濾波是方框?yàn)V波歸一化后的特殊情況。歸一化就是要把處理的量縮放到一個(gè)范圍內(nèi)如 (0,1),以便統(tǒng)一處理和直觀量化。非歸一化的方框?yàn)V波用于計(jì)算每個(gè)像素鄰近內(nèi)的積分特性,比如密集光流算法中用到的圖像倒數(shù)的協(xié)方差矩陣。
運(yùn)行結(jié)果:
均值濾波是典型的線性濾波算法,主要方法為鄰域平均法,即用一片圖像區(qū)域的各個(gè)像素的均值來代替原圖像中的各個(gè)像素值。一般需要在圖像上對目標(biāo)像素給出一個(gè)模板(內(nèi)核),該模板包括了其周圍的臨近像素(比如以目標(biāo)像素為中心的周圍8(3x3-1)個(gè)像素,構(gòu)成一個(gè)濾波模板,即 去掉目標(biāo)像素本身 )。再用模板中的全體像素的平均值來代替原來像素值。即對待處理的當(dāng)前像素點(diǎn)(x,y),選擇一個(gè)模板,該模板由其近鄰的若干像素組成,求模板中所有像素的均值,再把該均值賦予當(dāng)前像素點(diǎn)(x,y),作為處理后圖像在該點(diǎn)上的灰度個(gè)g(x,y),即個(gè)g(x,y)=1/m ∑f(x,y) ,其中m為該模板中包含當(dāng)前像素在內(nèi)的像素總個(gè)數(shù)。
均值濾波本身存在著固有的缺陷,即它不能很好地保護(hù)圖像細(xì)節(jié),在圖像去噪的同時(shí)也破壞了圖像的細(xì)節(jié)部分,從而使圖像變得模糊,不能很好地去除噪聲點(diǎn)。
cv2.blur(src, ksize[, dst[, anchor[, borderType]]]) → dst
結(jié)果:
高斯濾波:線性濾波,可以消除高斯噪聲,廣泛應(yīng)用于圖像處理的減噪過程。高斯濾波就是對整幅圖像進(jìn)行加權(quán)平均的過程,每一個(gè)像素點(diǎn)的值,都由其本身和鄰域內(nèi)的其他像素值經(jīng)過 加權(quán)平均 后得到。高斯濾波的具體操作是:用一個(gè)模板(或稱卷積、掩模)掃描圖像中的每一個(gè)像素,用模板確定的鄰域內(nèi)像素的加權(quán)平均灰度值去替代模板中心像素點(diǎn)的值。
高斯濾波有用但是效率不高。
高斯模糊技術(shù)生成的圖像,其視覺效果就像是經(jīng)過一個(gè)半透明屏幕在觀察圖像,這與鏡頭焦外成像效果散景以及普通照明陰影中的效果都明顯不同。高斯平滑也用于計(jì)算機(jī)視覺算法中的預(yù)先處理階段,以增強(qiáng)圖像在不同比例大小下的圖像效果(參見尺度空間表示以及尺度空間實(shí)現(xiàn))。從數(shù)學(xué)的角度來看,圖像的高斯模糊過程就是圖像與正態(tài)分布做卷積。由于正態(tài)分布又叫作高斯分布,所以這項(xiàng)技術(shù)就叫作高斯模糊。
高斯濾波器是一類根據(jù)高斯函數(shù)的形狀來選擇權(quán)值的線性平滑濾波器。 高斯平滑濾波器對于抑制服從正態(tài)分布的噪聲非常有效。
一維零均值高斯函數(shù)為: 高斯分布參數(shù) 決定了高斯函數(shù)的寬度。
高斯噪聲的產(chǎn)生
GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) - dst
線性濾波容易構(gòu)造,并且易于從頻率響應(yīng)的角度來進(jìn)行分析。
許多情況,使用近鄰像素的非線性濾波會(huì)得到更好的結(jié)果。比如在噪聲是散粒噪聲而不是高斯噪聲,即圖像偶爾會(huì)出現(xiàn)很大值的時(shí)候,用高斯濾波器進(jìn)行圖像模糊時(shí),噪聲像素不會(huì)被消除,而是轉(zhuǎn)化為更為柔和但仍然可見的散粒。
中值濾波(Median filter)是一種典型的非線性濾波技術(shù),基本思想是用像素點(diǎn)鄰域灰度值的中值來代替該像素點(diǎn)的灰度值,該方法在去除脈沖噪聲、椒鹽噪聲『椒鹽噪聲又稱脈沖噪聲,它隨機(jī)改變一些像素值,是由圖像傳感器,傳輸信道,解碼處理等產(chǎn)生的黑白相間的亮暗點(diǎn)噪聲。椒鹽噪聲往往由圖像切割引起?!坏耐瑫r(shí)又能保留圖像邊緣細(xì)節(jié),
中值濾波是基于排序統(tǒng)計(jì)理論的一種能有效抑制噪聲的非線性信號(hào)處理技術(shù),其基本原理是把數(shù)字圖像或數(shù)字序列中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域中各點(diǎn)值的中值代替,讓周圍的像素值接近的真實(shí)值,從而消除孤立的噪聲點(diǎn),對于 斑點(diǎn)噪聲(speckle noise)和椒鹽噪聲(salt-and-pepper noise) 來說尤其有用,因?yàn)樗灰蕾囉卩徲騼?nèi)那些與典型值差別很大的值。中值濾波器在處理連續(xù)圖像窗函數(shù)時(shí)與線性濾波器的工作方式類似,但濾波過程卻不再是加權(quán)運(yùn)算。
中值濾波在一定的條件下可以克服常見線性濾波器如最小均方濾波、方框?yàn)V波器、均值濾波等帶來的圖像細(xì)節(jié)模糊,而且對濾除脈沖干擾及圖像掃描噪聲非常有效,也常用于保護(hù)邊緣信息, 保存邊緣的特性使它在不希望出現(xiàn)邊緣模糊的場合也很有用,是非常經(jīng)典的平滑噪聲處理方法。
與均值濾波比較:
說明:中值濾波在一定條件下,可以克服線性濾波器(如均值濾波等)所帶來的圖像細(xì)節(jié)模糊,而且對濾除脈沖干擾即圖像掃描噪聲最為有效。在實(shí)際運(yùn)算過程中并不需要圖像的統(tǒng)計(jì)特性,也給計(jì)算帶來不少方便。 但是對一些細(xì)節(jié)多,特別是線、尖頂?shù)燃?xì)節(jié)多的圖像不宜采用中值濾波。
雙邊濾波(Bilateral filter)是一種非線性的濾波方法,是結(jié)合 圖像的空間鄰近度和像素值相似度 的一種折衷處理,同時(shí)考慮空域信息和灰度相似性,達(dá)到保邊去噪的目的。具有簡單、非迭代、局部的特點(diǎn)。
雙邊濾波器的好處是可以做邊緣保存(edge preserving),一般過去用的維納濾波或者高斯濾波去降噪,都會(huì)較明顯地模糊邊緣,對于高頻細(xì)節(jié)的保護(hù)效果并不明顯。雙邊濾波器顧名思義比高斯濾波多了一個(gè)高斯方差 sigma-d ,它是基于空間分布的高斯濾波函數(shù),所以在邊緣附近,離的較遠(yuǎn)的像素不會(huì)太多影響到邊緣上的像素值,這樣就保證了邊緣附近像素值的保存。 但是由于保存了過多的高頻信息,對于彩色圖像里的高頻噪聲,雙邊濾波器不能夠干凈的濾掉,只能夠?qū)τ诘皖l信息進(jìn)行較好的濾波。
運(yùn)行結(jié)果
學(xué)習(xí)目標(biāo):
形態(tài)變換是基于圖像形狀的一些簡單操作。它通常在二進(jìn)制圖像上執(zhí)行。
膨脹與腐蝕實(shí)現(xiàn)的功能
侵蝕的基本思想就像土壤侵蝕一樣,它會(huì)侵蝕前景物體的邊界(總是試圖保持前景為白色)。那它是做什么的?內(nèi)核在圖像中滑動(dòng)(如在2D卷積中)。只有當(dāng)內(nèi)核下的所有像素都是 1 時(shí),原始圖像中的像素( 1 或 0 )才會(huì)被視為 1 ,否則它將被侵蝕(變?yōu)榱悖?/p>
erode(src, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) - dst
與腐蝕的操作相反。如果內(nèi)核下的至少一個(gè)像素為“1”,則像素元素為“1”。因此它增加了圖像中的白色區(qū)域或前景對象的大小增加。通常,在去除噪音的情況下,侵蝕之后是擴(kuò)張。因?yàn)?,侵蝕會(huì)消除白噪聲,但它也會(huì)縮小我們的物體。所以我們擴(kuò)大它。由于噪音消失了,它們不會(huì)再回來,但我們的物體區(qū)域會(huì)增加。它也可用于連接對象的破碎部分
滑動(dòng)平均法把前后時(shí)刻的一共2n+1個(gè)觀測值做平均,得到當(dāng)前時(shí)刻的濾波結(jié)果。
滑動(dòng)平均法還有一個(gè)升級(jí)版本,也就是加權(quán)滑動(dòng)平均法。實(shí)際場景中,每個(gè)觀測值的重要程度不同,忽略每個(gè)觀測值的置信度直接平均不能得到精確的結(jié)果,所以就需要給觀測值加權(quán)。
滑動(dòng)平均法使用的前提是,噪聲的均值為0,真實(shí)值變化不大或線性變化的場景。如果真實(shí)值有較高頻率的非線性突變的話,滑動(dòng)平均法的效果就不夠好了。同時(shí),滑動(dòng)平均法的窗口選取很重要,需要根據(jù)具體數(shù)據(jù)來選擇。
方法/步驟 1 首先,打開數(shù)據(jù),以A2列數(shù)據(jù)為例做曲線。 2 點(diǎn)擊“ Analyze -ROC curve ”。 3 彈出界面后,導(dǎo)入A2列數(shù)據(jù),調(diào)節(jié)其它參數(shù)。 4 點(diǎn)擊“OK”,出現(xiàn)結(jié)果。 5 雙擊ROC曲線,進(jìn)入調(diào)節(jié)界面。 6 可以調(diào)節(jié)很多參數(shù),也可以把曲線調(diào)成平滑的。
指數(shù)平滑(Exponential smoothing)是除了 ARIMA 之外的另一種被廣泛使用的時(shí)間序列預(yù)測方法(關(guān)于 ARIMA,請參考 時(shí)間序列模型簡介 )。 指數(shù)平滑即指數(shù)移動(dòng)平均(exponential moving average),是以指數(shù)式遞減加權(quán)的移動(dòng)平均。各數(shù)值的權(quán)重隨時(shí)間指數(shù)式遞減,越近期的數(shù)據(jù)權(quán)重越高。常用的指數(shù)平滑方法有一次指數(shù)平滑、二次指數(shù)平滑和三次指數(shù)平滑。
一次指數(shù)平滑又叫簡單指數(shù)平滑(simple exponential smoothing, SES),適合用來預(yù)測沒有明顯趨勢和季節(jié)性的時(shí)間序列。其預(yù)測結(jié)果是一條水平的直線。模型形如:
其中 是真實(shí)值, 為預(yù)測值, 為平滑值, 。
定義殘差 ,其中 ,則可以通過優(yōu)化方法得到 和 。
使用 python 的 statsmodels 可以方便地應(yīng)用該模型:
效果如圖:
Holt 擴(kuò)展了簡單指數(shù)平滑,使其可以用來預(yù)測帶有趨勢的時(shí)間序列。直觀地看,就是對平滑值的一階差分(可以理解為斜率)也作一次平滑。模型的預(yù)測結(jié)果是一條斜率不為0的直線。模型形如:
其中 , 。
效果如圖:
Holt's linear trend method 得到的預(yù)測結(jié)果是一條直線,即認(rèn)為未來的趨勢是固定的。對于短期有趨勢、長期趨于穩(wěn)定的序列,可以引入一個(gè)阻尼系數(shù) ,將模型改寫為
為了描述時(shí)間序列的季節(jié)性,Holt 和 Winters 進(jìn)一步擴(kuò)展了 Holt's linear trend method,得到了三次指數(shù)平滑模型,也就是通常說的 Holt-Winters’ 模型。我們用 表示“季節(jié)”的周期。根據(jù)季節(jié)部分和非季節(jié)部分的組合方式不同,Holt-Winters’ 又可以分為加法模型和乘法模型。
加法模型形如:
其中 , , 。 是 的整數(shù)部分。
效果如圖:
乘法模型形如:
效果如圖:
Holt-Winters’ 模型的趨勢部分同樣可以引入阻尼系數(shù) ,這里不再贅述。
參數(shù)優(yōu)化的方法是最小化誤差平方和或最大化似然函數(shù)。模型選擇可以根據(jù)信息量準(zhǔn)則,常用的有 AIC 和 BIC等。
AIC 即 Akaike information criterion, 定義為
其中 是似然函數(shù), 是參數(shù)數(shù)量。用 AIC 選擇模型時(shí)要求似然函數(shù)大,同時(shí)對參數(shù)數(shù)量作了懲罰,在似然函數(shù)相近的情況下選擇復(fù)雜度低的模型。
BIC 即 Bayesian information criterion,定義為
其中 是樣本數(shù)量。當(dāng) 時(shí), ,因此當(dāng)樣本量較大時(shí) BIC 對模型復(fù)雜度的懲罰比 AIC 更嚴(yán)厲。
線性的指數(shù)平滑方法可以看作是 ARIMA 的特例。例如簡單指數(shù)平滑等價(jià)于 ARIMA(0, 1, 1),Holt's linear trend method 等價(jià)于 ARIMA(0, 2, 2),而 Damped trend methods 等價(jià)于 ARIMA(1, 1, 2) 等。
我們不妨來驗(yàn)證一下。
可以改寫為
亦即
兩邊同時(shí)加上 ,得
而 ARIMA(p, d, q) 可以表示為
其中 是滯后算子(Lag operator), 。
考慮 ARIMA(0, 1, 1)
即
亦即
令 ,則兩者等價(jià)。
非線性的指數(shù)平滑方法則沒有對應(yīng)的 ARIMA 表示。
[1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles and practice. OTexts, 2014.
[2] Exponential smoothing - Wikipedia
[3] Introduction to ARIMA models - Duke
樓主的問題是否是“怎樣描繪出沒有數(shù)據(jù)點(diǎn)的位置的曲線”,或者是“x在某個(gè)位置時(shí),即使沒有數(shù)據(jù),我也想知道他的y值是多少,好繪制曲線”。這就是個(gè)預(yù)測未知數(shù)據(jù)的問題。
傳統(tǒng)的方法就是回歸,python的scipy可以做。流行一點(diǎn)的就是機(jī)器學(xué)習(xí),python的scikit-learn可以做。
但問題在于,僅由光強(qiáng)能預(yù)測出開路電壓嗎(當(dāng)然,有可能可以預(yù)測。)?就是你的圖1和圖2的曲線都不能說是不可能發(fā)生的情況吧,所以想預(yù)測開路電壓值還需引入其他影響因子。這樣你才能知道平滑曲線到底應(yīng)該像圖1還是圖2還是其他樣子。
如果是單因子的話,從散點(diǎn)圖觀察,有點(diǎn)像 y = Alnx + B,用線性回歸模型確定A,B的值就可以通過x預(yù)測y的值,從而繪制平滑的曲線了。