少女Q的量化交易轉型之路 #week 1 之三
continued…
第四章 棧與佇列
4.1 棧的定義
很多電腦軟體,比如word, phtoshop, 都有撤銷操作,其實都是棧的方式來實現的。
棧(stack)是限定僅在表尾進行插入和刪除操作的線性表。允許插入和刪除的一段稱為棧定(top),另一段稱為棧底(bottom),不含任何資料元素的棧稱為空棧。棧又稱為後進先出(last in first out)的線性表,簡稱LIFO結構。
棧首先是個線性表,是具有線性關係的,但僅僅在表尾進行插入和刪除操作。
4.2 棧的抽象物件
插入:push 刪除:pop
4.3 棧的順序儲存結構及實現
4.3.1 棧的順序儲存結構
定義一個top變數來指示棧頂元素在陣列中的位置,意味著棧頂的top可以變大變小,但必須小於stacksize.當棧只有一個元素時top為0.找空棧條件為top=-1。
4.3.2 棧的順序儲存結構
進棧操作:
//插入元素e為新的棧頂元素//
Status Push(aqStack *S, SElemType e)
{
if (S->top == MAXSIZE - 1) //棧滿
{
return ERROR;
}
S->top++; //棧頂指標加一
S->data[S->top] = e; //將新插入的元素複製給棧頂空間
return OK;
}
出棧操作:
/*若棧不空,則刪除S的棧頂元素,用e返回其值,並返回OK;否則返回ERROR*/
Status Pop(SqStack *S, SElemType * e)
{
if(S->top == -1)
return ERROR;
*e=S->data[S->top]; /*將要刪除的棧頂元素賦值給e*/
S->top--; /*棧頂指標減一*/
return OK;
}
4.4 兩棧共享空間
有兩個相同型別的棧,為他們各自開闢了陣列空間,極有可能第一個棧已經滿了,再進棧就移除了,而另一個棧還有很多的儲存空間。所以完全可以用一個數組來儲存兩個棧。 讓一個棧的棧底為陣列的始端,另一個棧棧底在陣列長度n-1處,兩個棧相對著。極端的情況:若棧2空棧,棧1的top1等於n-1,滿了。棧1為空,top2等於0,棧2滿。若兩個棧相遇,top+1 == top2為棧滿。
4.5 棧的鏈式儲存結構及實現
4.5.1 棧的鏈式儲存結構
鏈棧,只是在棧定來做插入和刪除操作,單鏈表有頭之爭,而棧頂指標也是必須的,就讓他們合二為一,比較好的辦法是把棧頂放在單鏈表的頭部。這樣頭結點也失去了意義,通常對於鏈棧,不需要頭結點。對於鏈棧來說,基本不存在棧滿情況,除非記憶體炸了
4.5.2 進棧出棧
進棧操作push 假設元素為e的新結點是s,top為棧頂指標。 出棧操作pop: 三句話,假設變數p用來儲存要刪除的給定結點,將棧頂指標下移一位,最後釋放p。 順序棧,鏈棧:時間複雜度一樣o(1)。 但是空間性,順序棧要事前確定長度,可能會浪費記憶體,鏈棧每個元素都有指標域,也浪費。如果使用過程中,元素變化不可預料,用鏈棧。反之,順序鏈。
4.6 棧的應用
字尾(逆波蘭)表示法:非常有意思 9+(3-1)x3+10/2 對於高階語言可以直接輸入,因為已經將所有運算處理打包好,但是直接輸入邏輯塊裡面是不被認識的。 931-3*+10 2/+ 這樣的式子稱為字尾表示式,所有的符號都是在要運算的符號後面出現,用棧解決美滋滋。
4.7 佇列的定義
用電腦時候,有時候會宕機,然後突然把剛才點選的操作全部做了一遍。這是因為作業系統中的多個程式因需要一個通道輸出,而按先後次序排隊造成的。 佇列(Queue)是隻允許在一段進行操作,另一段進行刪除操作的線性表。佇列是一種先進先出(First In First Out)的線性表,簡稱fifo。允許插入的一段稱為隊尾,允許刪除的一段稱為隊頭。假設佇列是q=(a1,a2,……,an),那麼a1就是隊頭元素,an是隊尾元素。
4.7.1 迴圈佇列
線性表有順序儲存和鏈式儲存,棧是線性表,所以有兩種儲存方式。同樣佇列也是一種特殊的線性表。 佇列順序儲存的不足:
- 順序結構儲存時,入列時直接插入隊尾,時間複雜度為o(1),沒什麼問題。出列時,隊頭的元素被刪除然後全體都要往前移動,時間複雜度為O(n).
- 進行改正,隊頭出列時,整個隊伍不動,隊頭的指標進行改變。但是問題是,陣列長度有限,總有情況會裝不下。溢位情況。
4.7.2 迴圈佇列的需要
解決溢位情況辦法就是,後面滿了,就從頭再來,頭尾相接。 新的問題:前面分析道當Front = Rear適合,佇列為空,現在佇列滿了(首尾相接)也是Front = Rear,怎麼辦? 辦法1:設定一個Flag 辦法2: 當佇列滿了,修改其條件,保留一個空間元素即可。由於Rear比Front大,也可能比Front小。若佇列的最大尺寸為queuesize,那麼佇列滿的條件是(rear + 1) % Queuesize == Front
4.8 佇列的鏈式儲存結構以及實現
佇列的鏈式結構就是線性表的單鏈表,只不過尾進頭出,簡稱為鏈佇列。將隊頭指標指向鏈佇列的頭結點,隊尾指標指向終端結點。
空佇列時,Front和Rear都指向頭結點。 入隊出列操作和前面差不多,略過。
Statistics Part!!! 前三章內容比較通識,講述的是一些統計實驗方法,就不贅述。
Statistics
第四章 資料的概括性度量
資料分佈的特鎮從三個方面進行測度描述:
- 分佈的集中趨勢,反映各資料向其中心值靠攏或聚集的程度
- 分佈的離散程度,反映各資料遠離其中心值的趨勢。
- 分佈的形狀,反映資料分佈的偏態和峰態。
4.1 集中趨勢的度量
集中趨勢是指一組資料向某一中心值靠攏的程度,反映一組資料中心點位置。
4.1.1 分類資料:眾數
眾數(mode)是一株資料中出現次數最多的變數值,用表示。眾數主要用於測度分類資料的集中趨勢,也適用於作為順序資料以及數值型資料集中趨勢的測度值。一般情況下,在資料量較大情況下,眾數才有意義。
4.1.2 順序資料:中位數和分位數
一組資料中,可以找出某個位置上的資料。
- 中位數 中位數(median)是一組資料排序後處於中間位置上的變數值,用來表示。中位數主要用於測度順序資料的集中趨勢,但不適用於分類資料。
- 四分位數 四分位數(quartile)也稱為四分位點,它是一組資料排序後處於25%和75%位置上的值。
4.1.3 數值型資料:平均數
均值(mean),它是一組資料相加後除以資料個數得到的結果。是集中趨勢的最主要測度值,主要適用於數值型資料,不適合分類資料和順序資料。
- 幾何平均數(集中趨勢):是n個變數值乘積的n次方根,用G表示為L: 主要是適用於特殊資料的一種平均數,用於計算平均比率。當所掌握的變數值 本身是比率的形式時,採用幾何平均法計算平均比率更為合理。在實際應用中,主要用於計算現象的平均增長率。 (股票每年都有收益率,計算4年內平均收益率)
4.2 離散程度的度量
資料的離散程度是資料分佈的另一個重要特徵,它反映的是各個變數遠離中心值的程度。資料的離散程度越大,集中趨勢的測量值對該組資料的代表性就越差;離散程度越小,其代表性越好。
4.2.1 分類資料:異眾比率
異眾比率(variation ratio):指非眾陣列的頻數(出現的次數)佔總頻數的比例,用表示。 式中,為變數值的總頻數,為眾陣列的頻數。
異眾比率主要用於衡量眾數對一組資料的代表程度。異眾比率越大,說明非眾陣列的頻數佔總頻數的比重越大,眾數的代表性越差。異眾比率越小,說明非眾數的頻數佔總頻數比重越小,眾數代表性越好。異眾比率主要適合測量分類資料的離散程度。
4.2.2 順序資料:四分位差
四分位差(quartile deviation: 也稱為內距或四分間距(inter-quartile range),它是上四分位與下四分位數之差,用表示。 計算公式為: 四分位數反映了中間百分之五十資料的離散程度,其數值越小,說明中間的資料越集中;資料越大,說明中間資料越分散。不受極值影響。
4.2.3 數值型資料:方差和標準差
測量數值型資料離散程度主要有極差,平均差,方差和標準差。
-
極差(range):一組資料最大值與最小值之差,也稱為全距, 表示。
-
平均差 (mean deviation)也稱為平均絕對離差(mean absolute deviation),是各變數與其平均數離差絕對值的平均數,用表示。 平均差以平均數為中心,反映了每個資料與平均數的平均差以程度,它能全面準確地反映一組資料的離散狀況。但是因為要保證離差為正取了絕對值所以不方便。
-
方差和標準差 方差(variance):是各變數值與其平均數離差平方的平均數。方差的平方根稱為標準差(standard deviation)。方差可以很好的反映資料的離散程度。 樣本方差的公式如上,用樣本資料減1稱為自由度(degree of freedom)。全體方差的話就是正常的。 方差開方後得到標準差,是有量綱的。
-
相對位置的度量 有了平均數和標準差之後,可以計算一組資料中各個數值的標準分數,以測度每個資料在該組資料中的相對位置,並且可以判斷一組資料時候有離群資料。 (1)標準分數 變數值與其平均數的離差除以標準差後的值稱為標準分數(Standard score) ,也稱為標準化或分數。 標準分數給出了一組資料中各數值的相對位置。 Eg.某數值標準分數為-1.5,就知道該數值低於平均數1.5倍標準差。事實上,分數只是將原始資料進行了線性變換,並沒有改變一個數據在這組資料中的位置。
4.2.4 相對離散程度:離散係數
離散係數也稱為變異係數(Coefficient Of Variation),它是一組資料的標準差與其相應的平均數值之比。
計算公式為:
離散係數是測量資料離散程度的相對統計量,主要用於比較不同樣本資料的離散程度。離散係數越大,資料的離散程度也越大;離散係數越小,說明資料的離散程度也小。 例題:
4.3 偏態與峰態的度量
4.3.1 偏態及其測度
偏態(skewness),它是對分佈對稱性的測度。測度偏態統計量是偏態係數。(coefficient of skewness),記作。 偏態係數的計算方法有很多。再根據未分組的原始資料計算偏態係數時,通常用以下公式:
若一組資料分佈是對稱的, 偏態係數等於0; 係數>1或<-1,稱為高偏態分佈; 係數在0.51或-1-0.5,稱為中等偏態分佈;
如果是分組資料計算偏態係數,可採用以下公式: 可以看出是離差的三次方的平均數再除以標準差的三次方。 分佈對稱時,離差三次方後正負離差可以相互抵消,分子為0。 >0,正離差值較大,判斷為正偏或者右偏,數值越大表示傾斜程度。
4.3.2 峰態及其測度
峰態(kurtosis): 是對資料分佈平峰或尖峰程度的測量。測度峰態的統計量是峰態係數(coefficient of kurtosis), 記作.
>0為尖鋒分,資料分佈更集中;<0時為扁平分佈,資料分佈越散。公式也可以不-3。
第五章 概率與概率分佈
前一章節主要是對停機資料的整理和描述,對一些客觀事物的概貌有一些瞭解。然而,簡單的描述方法只能實現對統計資料粗淺的利用,它與統計資料中挖掘出的規律性東西相去甚遠。需要用推斷統計的方法,在蒐集,整理觀測樣本資料基礎上,對有關總體做出推斷。
5.1 隨機事件的幾個基本概念
同一組條件下, 對某事物或者現象所進行的觀察叫做實驗, 把觀察或者實驗的結果叫做事件。 Eg. 擲骰子實驗中, 投到1, 2, 3/奇數點/偶數點都是一個事件, 當事件不能再分解為兩個或者更多, 稱為基本事件(elementary event).
- 隨機事件(random event): 同一組條件下, 每次事件可能出現也可能不出現。
- 必然事件(certain event):同一組條件下, 每次實驗一定出現。
- 不可能事件(impossible event):同條,一定不出現。 隨機事件用大寫字母ABC表示;必然事件用Ω來表示,不可能事件用∅表示。
5.1.1 事件的概率
事件A的概率是描述事件A在實驗中出現的可能性大小的一種度量, 即事件A出現可能性大小的數值P(A), 稱為事件A的概率。
-
古典定義:求一個隨機事件發生的可能性的大小:(1)結果有限,即基本空間只含有限個元素2)各個結果出現的可能性被認為是相同的。 因為其侷限在隨機試驗只有有限個個數,使應用受到了很大限制。因此,又提出了一個根據某一事件在重複實驗中發生的頻率來確定概率的方法,概率的統計定義。(一天發生好幾次,和一天發生一次算了一個月的區別)
-
統計定義: 在相同條件下隨機試驗n次,某事件A出現m次(m<=n),則幣值m/n稱為事件發生的頻率。隨著n的增大,該頻率圍繞某一常數p上下波動,且波動的幅度逐漸減小,趨於穩定,這個穩定值即為事件的概率:在相同條件下隨機試驗n次,某事件A出現m次(m<=n),則幣值m/n稱為事件發生的頻率。隨著n的增大,該頻率圍繞某一常數p上下波動,且波動的幅度逐漸減小,趨於穩定,這個穩定值即為事件的概率:
-
主觀概率定義 概率的統計定義也有很多侷限性。在實際應用中要求在相同條件下進行大量重複實驗。主觀概率:指對一些無法重複的實驗,根據以往經驗,人未確定事件的概率。
5.2 條件概率與獨立事件
1.條件概率 當某一事件B已經發生時,事件A發生的概率,稱為這種概率為事件B發生條件下事件A發生的條件概率(conditional probability),記為P(A|B)。
2.乘法公式 條件概率, ,此式對於任何古典概型都成立。
3.獨立性 當使用概率的乘法公式時,一般先要計算條件概率,但是在事件獨立的情況下,乘法公式就變得簡單了。
,