其實我們在做資料分析的時候經常進行比較分析,但往往以觀察分析法為主,「t檢驗和卡方檢驗」為我們的比較分析提供了很好的科學的定量分析方法,讓比較的結果更有置信度和說服力。但在使用定量分析的比較方法前,還有很多程式設計客棧因素需要考慮,當我們需要精確地分析比較的效果,我們一般都會做比較測試,而其中涉及測試環境的設定,資料的選擇和獲取等,以排除一些非相關因素的干擾,讓比較的結果更加真實可信,所以下面就介紹下如何合理地進行比較測試。
比較測試的型別
比較測試或實驗的型別有很多,但都跳不出抽樣、重複、分組、比較這幾個流程,所以從實驗設計的角度,我們可以簡單地把比較測試分為兩類:基於時間序列的組內比較和基於對照實驗的組間比較。
時間序列的組內比較
基於時間序列的組內比較一般在時間序列上的某個時間點引入實驗變數或者施加實驗刺激,並在實驗刺激的前後進行重複測試,分別叫做「前測」和「後測」,對前測和後測分別進行抽樣比較,從比較的結果反映實驗刺激是否對結果有顯著的影響。詳細的流程見下圖:
舉個有趣的例子,如果公司的員工前4個月在正常的薪資待遇的水平上工作,體現出正常的工作效益和工作滿意度;然後從第5月開始給員工進行加薪(施加實驗刺激),再觀察之後4個月員工的工作效益和工作滿意度,將之前4個月的結果(前測)與後4個月的結果(後測)進行比較,分析員工的工作效益和工作滿意度是否存在顯著性差異,進而證明加薪這個實驗刺激是否對提公升員工的工作效益和滿意度有顯著性影響。這就是簡單的時間序列比較測試的基本流程。
但基於時間序列的比較測試會受很多因素的干擾,比如上面的例子在實驗過程中cpi的增長、公司業績的下滑或者運營環境的惡化都可能導致實驗結果的失效,或者驗證的結果不可信,所以下面會具體說明需要排除的干擾因素。
對照實驗的組間比較
基於時間序列的組內比較只是基於一組樣本,只是樣本在時間序列的某個點上受到了實驗變數的刺激;而對照實驗需要設定兩組樣本,也就是「實驗組」和「控制組」,並對實驗組施加實驗刺激,控制組維持原狀態不變,從而比較實驗組和控制組是否存在顯著www.cppcns.com差異來反映實驗的刺激是否影響了結果。因為對照實驗涉及兩組樣本,所以這裡需要額外注意抽樣的規範性,我們需要保證兩組樣本的特徵具有相似性,可以進行比較。具體的實驗設計見下圖:
還是使用上面的例子,但在對照實驗中設定對照組和實驗組是必需的,比較不再是基於前測和後測。比如我們讓部分員工維持當前的薪資待遇繼續工作,而另外一部分的員工提公升他們的薪資待遇,從而比較為提公升待遇的員工和提公升待遇的員工的工作效益和工作滿意度的差異,如果差異顯著就可以證明提公升薪資待遇這個實驗刺激對結果是有顯著影響的。
對照實驗因為參與比較的兩組樣本都是基於相同的時間序列軸,所以隨著時間變化的影響因素對實驗的比較結果的影響不再重要,因為兩組樣本同時受到了同樣的影響,但因為是組間比較,所以兩組樣本如果存在差異性,那麼對結果就會造成較大影響,比如上例中a組選擇的是基層員工,b組選擇中高層員工的話,比較的結果顯然是缺乏科學性的。下面就具體介紹下比較測試中可能存在的影響因素有哪些?
前提與影響因素
首先看一下從使用者體驗的角度,如果我們進行可用性實驗,需要考慮的影響因素有哪些:
1.外部雜訊和干擾:外部干擾資訊、臨時的**和呼喚等;
2.經驗和熟練:因為可用性實驗一般需要重複過程,所以隨著實驗的程序,使用者漸漸熟悉對**和工具的使用;
3.消耗:隨著實驗程序,使用者可能失去耐心,或者精力無法集中;
4.主觀**:當進行重複實驗時,使用者容易用先前的測試結果來推測之後的測試,同樣會影響實驗結果的可信度。
以上是可用性實驗中需要考慮的影響因素,有些只存在於實驗環境中,如果衍生到web分析中,同樣需要注意一些影響因素,而對於上面介紹的時間序列組內比較和對照實驗組間比較,各自的影響因素又各不相同:
時間序列的組內比較
基於時間序列的組內比較可能存在的干擾因素相對較多,因為外部環境和內部環境都會隨著時間發生變化,所以為了讓基於時間序列的前測和後測兩組資料具有可比性,我們必須規避以下幾類因素的影響:
資料本身存在的自然增長或下降趨勢;
1.規避節假日或者外部事件的影響;
2.規避特殊的營銷推廣其帶來的影響;
規避內部其他可能影響測試結果的因素(實驗刺激必須唯一)。
對照實驗的組間比較
對照實驗因為兩組樣本處在相同的環境和時間序列上,所以需要規避的影響因素比上面要少很多,但相較組內比較,組間比較需要額外考慮兩組樣本是否具有可比性:
1.兩組樣本特徵相似,可比較(抽樣規範性);
2.實驗組跟對照組之間只存在唯一的實驗刺激導致的差異。
無論是基於時間序列的組內比較還是基於對照實驗的組間比較,都要規避外部環境的重大變動,或者特殊的外部事件對**造成的重大影響,或者伺服器故障或資料統計異常造成的資料不完整或不準確,因為這些因素造成的影響已經可能導致用於比較的資料本身就存在巨大誤差,或者不可信,都是無法規避和彌補的。
**應用例項
**環境下最常見的比較測試顯然就是a/b testing,ab測試為**的改版和優化提供了對照實驗的比較測試環境,具體的流程如下:
訪問**的使用者被ab測試的系統自動分成了兩組,一般情況下是按比例對半劃分,當然很多情況下也會根據需要按其他合適的比例,如1:3,1:5等。這裡的a方案和b方案乙個是未做改動的原方案,另乙個是改版後的新方案,如果一次需要測試多個改進方案的效果,那麼就需要設定多個實驗組,而控制組只要乙個就行。
a/b testing屬於對照實驗的組間比較的測試方法,所以同樣需要符合對照實驗的前提,規避對照實驗可能存在的其他影響因素。因為a/b testing遵循了簡單隨機抽樣的方法,所以我們可以認為實驗組和對照組之間的樣本無明顯的差異,具有可比性。同時,對照實驗基於相同的內外部環境和相同的時間序列,所以諸如節假日、資料自然增長或下降、特殊推廣期等的影響可以不用考慮,但某些特別重大的外部事件或者**伺服器故障導致的資料問題還是需要在比較測試之前進行排除。另外對照實驗中必須控制每個實驗組的實驗刺激只能是1個,不然無法區分到底是哪個實驗刺激對實驗結果造成的影響。
在規避上述影響因素後,基於a/b testing的資料比較可以使用我在上篇文章中介紹的「t檢驗和卡方檢驗」的方法直接進行顯著性的檢驗,進而驗證實驗刺激對結果是否存在顯著性影響,這裡不再重複舉例了。
a/b testing有自己的優勢,它比基於時間序列的比較的限制因素要少很多,但a/b testing畢竟需要預先構建相應的自動分流系統,可能在某些特定的環境下或者對某些特殊的**而言沒有相應的環境可以進行ab測試,這個時候我們就不得不選擇時間序列的比較測試。
基於時間序列的組內比較需要規避推廣、節假日和外部營銷事件的影響,這個可以通過選擇合理的測試起止時間,選擇合適的前測和後測樣本進行規避,但如果**本身資料存在明顯的**或下降趨勢,那麼我們必須對資料進行必要的處理:
上表是某電子商務**基於時間序列改版前後的比較測試,前測和後測各選取5天的資料進行比較,以「訂單數」作為比較指標,為了說明改版能不能顯著地提公升每天訂單的資料。如果我們不考慮資料本身的自然增長,直接比較改版前後日均訂單數的差異:
改版前日均訂單數682.4 < 改版後日均訂單數770.4
顯然改版後日均訂單有顯著提公升,說明改版有效?那麼我們將資料的自然增長考慮進去,我們可以將日均使用者數的增長率作為整個**資料的自然增長率:
(改版後日均使用者數 – 改版前日均使用者數) / 改版前日均使用者數 = 13.05%
改版前日均訂單數682.4 * 1.13 = 771.1 > 改版後日均訂單數770.4
比較的結果發生了改變,改版前的日均訂單數在乘上自然增長率後要比改版後的日均訂單數高,但相差不多,從結果看應該是改版對訂單數的提公升無顯著影響。顯然後面考慮**自然增長率後的比較結果更加科學,更加可信和具有說服力。這就是我們在基於時間序列的比較測試中需要考慮的一些問題。當然上面是基於簡單的觀察分析比較,如果需要更具統計學意義的定量比較,同樣可以對資料進行自然增長處理後使用t檢驗或者卡方檢驗。
本文標題: 比較測試的設定和分析
本文位址: /news/exp/40901.html
bash的測試和比較
比較字串 string1 string2 等價於 string1 string2 比較整數 num1 eq num2 等價於 num1 num2 變數值不為空,且變數值中不包含空格的情況下,變數可不加雙引號,當然加了雙引號也可以 變數值為空或變數值中包含空格的情況下,變數一定要加雙引號 或變數沒有申...
Bash 測試和比較函式
您是否為 bash shell 中大量的測試和比較選項而困惑呢?這個技巧可以幫助您解密不同型別的檔案 算術和字串測試,這樣您就能夠知道什麼時候使用test 或if then else了。bash shell 在當今的許多 linux 和 unix 系統上都可使用,是 linux 上常見的預設 she...
SQL Join的測試和分析
join分為三種 inner join,left join,right join 首先,我覺得要知道乙個概念 臨時表或者說虛擬表,join的作用就是生成乙個虛擬表,因為我本身專業並不是計算機,更不是程式設計。所以走了很多彎路,直到用了很多次資料表的關係之後,才明白這個道理。select from t...