用PHP使Web資料分析進入更高境界_PHP
最後更新:2016-06-01
來源:互聯網
上載者:User
關鍵字
境界
進入
分布
資料
平方
Web
測驗
民意
結果
統
計您的資料分析,做比簡單原始計數更多的事
對 Web 資料進行有效和多層次的分析是許多面向 Web 企業能夠生存的關鍵因素,資料分析檢驗的設計(和決策)通常是系統管理員和內部應用程式設計人員的工作,而他們可能除了能夠把原始計數製成表格之外,對統計學沒有更多的瞭解。在本文中,Paul Meagher 向 Web 開發人員傳授了將推論統計學應用到 Web 資料流所需的技能和概念。
動態網站不斷產生大量的資料 — 訪問日誌、民意測驗和調查結果、客戶概要資訊、訂單及其它,Web 開發人員的工作不僅是建立產生這些資料的應用程式,而且還要開發使這些資料流有意義的應用程式和方法。
通常,對於由管理網站所產生的不斷增長的資料分析需求,Web 開發人員的應對是不夠的。一般而言,除了報告各種描述性統計資訊之外,Web 開發人員並沒有其它更好的方法來反映資料流特徵。有許多推論統計步驟(根據樣本資料估計母體參數的方法)可以被充分利用,但目前卻沒有應用它們。
例如,Web 存取統計資訊(按當前所編輯的)只不過是以各種方式進行分組的頻率計數。以原始計數和百分比表示民意測驗和調查結果的情況比比皆是。
開發人員用比較淺顯的方法處理資料流的統計分析或許已經足夠了,我們不應期望太多。畢竟,有從事較複雜的資料流分析的專業人士;他們是統計師和受過訓練的分析師。當組織需要的不僅僅是描述性統計時,可以請他們加入。
但另一種應對是承認對推論統計學日益加深的瞭解正成為 Web 開發人員工作描述的一部分。動態網站正在產生越來越多的資料,事實表明,設法將這些資料變成有用的知識正是 Web 開發人員和系統管理員的責任。
我提倡採取後一種應對;本文旨在協助 Web 開發人員和系統管理員學習(或重溫,如果知識已遺忘的話)將推論統計學應用到 Web 資料流所需的設計和分析技能。
使 Web 資料與實驗設計相關
將推論統計學應用到 Web 資料流需要的不僅僅是學習作為各種統計檢驗基礎的數學知識。將資料收集過程與實驗設計中的關鍵差別關聯起來的能力同樣很重要:測量尺度是什嗎?樣本的代表性如何?總體是什嗎?正在檢驗的假設是什嗎?
要將推論統計學應用到 Web 資料流,需要先把結果看作是由實驗設計產生的;然後選擇適用於該實驗設計的分析過程。即使您可能認為將 Web 民意測驗和訪問日誌資料看作實驗的結果是多此一舉,但這樣做確實很重要。為什嗎?
1.這將協助您選擇適當的統計檢驗方法。
2.這將協助您從收集的資料中得出適當的結論。
在確定要使用哪些適當的統計檢驗時,實驗設計的一個重要方面是選擇資料收集的衡量尺度。
衡量標準的樣本
測量尺度只是指定了一個對所感興趣的現象分配符號、字母或數位步驟。例如,千克尺度允許您給一個物體分配數字,根據測量儀器的標準化的位移量指示該物體的重量。
有四種重要的衡量標準:
定比尺度(ratio)— 千克尺度是定比尺度的一個樣本 ? 分配給物體屬性的符號具有數字意義。您可以對這些符號執行各種運算(如計算比率),而對於通過使用功能不那麼強大的衡量標準獲得的數值,您不能使用這些運算。
定距尺度(interval)— 在定距尺度中,任意兩個相鄰測量單位之間的距離(也稱為間距)是相等的,但零點是任意的。定距尺度的樣本包括對經度和潮汐高度的度量,以及不同年份始末的度量。定距尺度的值可以加減,但乘除則沒有意義。
定序尺度(rank)— 定序尺度可應用於一組有順序的資料,有順序指的是屬於該尺度的值和觀察值可以按順序排列或附帶有評級尺度。常見的樣本包括“好惡”民意測驗,其中將數字分配給各個屬性(從 1 = 非常厭惡到 5 = 非常喜歡)。通常,一組有序資料的類別有自然的順序,但尺度上相鄰點之間的差距不必總是相同的。對於有順序的資料,您可以計數和排序,但不能測量。
定類尺度(nominal)— 衡量標準的定類尺度是衡量標準中最弱的一種形式,主要指將項目分配給組或類別。這種測量不帶數量資訊,並且不表示對項目進行排序。對定類尺度資料執行的主要數值運算是每一類別中項目的頻率計數。
下表對比了每種衡量標準的特徵:
衡量標準尺度 屬性具有絕對的數字含義嗎? 能執行大多數數學運算嗎?
定比尺度 是。 是。
定距尺度 對於定距尺度是這樣;零點是任意的。 加和減。
定序尺度 不是。 計數和排序。
定類尺度 不是。 只能計數。
在本文中,我將主要討論通過使用測量的定類尺度收集的資料,以及適用於定類資料的推論技術。
使用定類尺度
幾乎所有 Web 使用者 — 設計人員、客戶和系統管理員 — 都熟悉定類尺度。Web 民意測驗和訪問日誌類似,因為它們常常使用定類尺度作為衡量標準。在 Web 民意測驗中,使用者常常通過請求人們選擇回答選項(如“您偏愛品牌 A、品牌 B,還是品牌 C?”)來衡量人們的偏好。通過對各類回答的頻率進行計數來摘要資料。
類似的,測量網站流量的常用方法是對一個星期內一天之中的每次點擊或訪問都劃分給這一天,然後對每一天出現的點擊或訪問的數目計數。另外,您可以(也確實可以)通過瀏覽器類型、作業系統類型和訪問者所在的國家或地區 — 以及任何您想得到的分類尺度 — 對點擊計數。
因為 Web 民意測驗和訪問統計資訊都需要對資料歸入某一特定性質類別的次數進行計數,所以可以用相似的無參數統計檢驗(允許您根據分布形狀而不是母體參數作出推論的檢驗)來分析它們。
David Sheskin 在他的 Handbook of Parametric and Non-Parametric Statistical Procedures 一書(第 19 頁, 1997)中,是這樣區分參數檢驗和非參數檢驗的:
本書中將過程分類為參數檢驗和非參數檢驗所使用的區別主要基於被分析資料所代表的測量層級。作為通用規則,評估類別/定類尺度資料和順序/等級-順序資料的推論統計檢驗被歸類為非參數檢驗,而那些評估定距尺度資料或定比尺度資料的檢驗則被歸類為參數檢驗。
當作為參數檢驗基礎的某些假設值得懷疑時,非參數檢驗也很有用;當不滿足參數假設時,非參數檢驗在檢測總體差異時有很大的作用。對於 Web 民意測驗的樣本,我使用了非參數分析過程,因為 Web 民意測驗通常使用定類尺度來記錄投票者的偏好。
我並不是在建議 Web 民意測驗和 Web 存取統計資訊應該始終使用定類尺度衡量標準,或者說非參數統計檢驗是唯一可用於分析這類資料的方法。不難設想有(譬如)這樣的民意測驗和調查,它們要求使用者對每個選項提供數值評分(從 1 到 100),對此,參數性的統計檢驗就比較合適。
儘管如此,許多 Web 資料流包括編輯類別計數資料,而且通過定義定距尺度(譬如從 17 到 21)並將每個資料點分配給一個定距尺度(如“年輕人”),可以將這些資料(通過使用功能更強大的衡量標準測量)變成定類尺度資料。頻率資料的普遍存在(已經是 Web 開發人員經驗的一部分),使得專註於非參數統計學成為學習如何將推論技術應用到資料流的良好起點。
為了使本文保持合理的篇幅,我將把對 Web 資料流分析的討論局限於 Web 民意測驗。但是請記住,許多 Web 資料流都可以用定類計數資料表示,而我討論的推論技術將使您能做比報告簡單的計數資料更多的事情。
從抽樣開始
假設您在您的網站 www.NovaScotiaBeerDrinkers.com 上進行每周一次的民意測驗,詢問成員對各種主題的意見。您已經建立了一個民意測驗,詢問成員喜愛的啤酒品牌(在加拿大新斯科舍省(Nova Scotia)有三種知名的啤酒品牌:Keiths、Olands 和 Schooner)。為了使調查儘可能範圍廣泛,您在回答中包括“其它”。
您收到 1,000 條回答,請觀察到表 1 中的結果。(本文顯示的結果只作為示範之用,並不基於任何實際調查。)
表 1. 啤酒民意測驗Keiths Olands Schooner 其它
285(28.50%) 250(25.00%) 215(21.50%) 250(25.00%)
這些資料看上去支援這樣的結論:Keiths 是最受新斯科舍省居民歡迎的品牌。根據這些數字,您能得出這一結論嗎?換句話說,您能根據從樣本獲得的結果對新斯科舍省的啤酒消費者總體作出推論嗎?
許多與樣本收集方式有關的因素會使相對受歡迎程度的推論不正確。可能樣本中包含了過多 Keiths 釀酒廠的僱員;可能您沒有完全預防一個人投多次票的情況,而這個人可能使結果出現偏差;或許被挑選出來投票的人與沒有被挑選出來投票的人不同;或許上網的投票人與不上網的投票人不同。
大多數 Web 民意測驗都存在這些解釋上的困難。當您試圖從樣本統計資料得出有關母體參數的結論時,就會出現這些解釋上的困難。從實驗設計觀點看,在收集資料之前首先要問的一個問題是:能否採取步驟協助確保樣本能夠代表所研究的總體。
如果對所研究的總體得出結論是您做 Web 民意測驗的動機(而不是為網站訪問者提供的消遣),那麼您應該實現一些技術,以確保一人一票(所以,他們必須用唯一的標識登入才能投票),並確保隨機播放投票者樣本(例如,隨機播放成員的子集,然後給他們發電子郵件,鼓勵他們投票)。
最終,目標是消除(至少減少)各種偏差,它們可能會削弱對所研究總體得出結論的能力。
檢驗假設
假設新斯科舍省啤酒消費者統計樣本沒有發生偏差,您現在能夠得出 Keiths 是最受歡迎品牌這一結論嗎?
要回答這個問題,請考慮一個相關的問題:如果您要獲得另一個新斯科舍省啤酒消費者的樣本,您希望看到完全相同的結果嗎?實際上,您會希望不同樣本中所觀察到的結果有一定的變化。
考慮這個預期的抽樣可變性,您可能懷疑通過隨機抽樣可變性是否比反映所研究總體中的實際差異能更好地說明觀察到的品牌偏好。在統計學術語中,這個抽樣可變性說明被稱為虛假設(null hypothesis)。(虛假設由符號 Ho 表示)在本例中,用公式將它表示成這樣的語句:在作出回答的所有類別中,各種回答的期望數目相同。
Ho:# Keiths = # Olands = # Schooner = # Other
如果您能夠排除虛假設,那麼您在回答 Keiths 是否是最受歡迎品牌這個最初的問題上取得了一些進展。那麼,另一個可接受的假設是在所研究的總體中,各種回答所佔比例不同。
這個“先檢驗虛假設”邏輯在民意測驗資料分析中的多個階段都適用。排除這一虛假設,這樣資料就不會完全不同,隨後您可以繼續檢驗一個更具體的虛假設,即 Keiths 和 Schooner,或者 Keiths 與其它所有品牌之間沒有差別。
您繼續檢驗虛假設而不是直接評估另一假設,是因為對於在虛假設條件下人們希望觀察到的事物進行統計建模更容易。接下來,我將示範如何對在虛假設下所期望的事物建模,這樣我就可以將觀察結果與在虛假設條件下所期望的結果加以比較。
對虛假設建模:X 平方分布統計
到目前為止,您已經使用一個報告每種回答選項頻率計數(和百分比)的表匯總了 Web 民意測驗的結果。要檢驗虛假設(表單元頻率之間不存在差別),計算每個表單元與您在虛假設條件下所期望值的總體偏差度量要容易得多。
在這個啤酒歡迎度民意測驗的樣本中,在虛假設條件下的期望頻率如下:
期望頻率 = 觀察數目 / 回答選項的數目
期望頻率 = 1000 / 4
期望頻率 = 250
要計算每個單元中回答的內容與期望頻率相差多少的總體度量,您可以將所有的差別總計到一個反映觀察頻率與期望頻率相差多少的總體度量中:(285 - 250) + (250 - 250) + (215 - 250) + (250 - 250)。
如果您這麼做,您會發現期望頻率是 0,因為平均值的偏差的和永遠是 0。要解決這個問題,應當取所有差值的平方(這就是X 平方分布(Chi Square)中平方的由來)。最後,為了使各樣本(這些樣本具有不同的觀察數)的這個值具有可比性(換句話說,使它標準化),將該值除以期望頻率。因此,X 平方分布統計的公式如下所示(“O”表示“觀察頻率”,“E”等於“期望頻率”):
圖 1. X 平方分布統計的公式
如果計算啤酒歡迎度民意測驗資料的 X 平方分布統計,會得到值 9.80。要檢驗虛假設,需要知道在假設存在隨機抽樣可變性的情況下獲得這麼一個極限值的機率。要得出這一機率,需要理解 X 平方分布的抽樣分布是什麼樣的。
觀察 X 平方分布的抽樣分布
圖 2. X 平方分布圖
在每幅圖中,橫軸表示所得到的 X 平方分布值大小(圖中所示範圍從 0 到 10)。縱軸顯示各 X 平方分布值的機率(或稱為出現的相對頻率)。
當您研究這些 X 平方分布圖時,請注意,當您在實驗中改變自由度(即 df)時,機率函數的形狀會改變。對於民意測驗資料的樣本,自由度是這樣計算的:記下民意測驗中的回答選項(k)的數目,然後用這個值減 1(df = k - 1)。
通常,當您在實驗中增加回答選項的數目時,獲得較大 X 平方分布值的機率會下降。這是因為當增加回答選項時,就增加了方差值的數目 — (觀察值 - 期望值)2 — 您可以求它的總數。因此,當您增加回答選項時,獲得大的 X 平方分布值的統計機率應該增加,而獲得較小 X 平方分布值的機率會減少。這就是為什麼 X 平方分布的抽樣分布的形狀隨著 df 值的不同而變化的原因。
此外,要注意到通常人們對 X 平方分布結果的小數點部分不感興趣,而是對位於所獲得的值右邊曲線的總計部分感興趣。該尾數機率告訴您擷取一個象您觀察到的極限值是可能(如一個大的尾數地區)還是不可能(小的尾數地區)。(實際上,我不使用這些圖來計算尾數機率,因為我可以實現數學函數來返回給定 X 平方分布值的尾數機率。我在本文後面討論的 X 平方分布程式中會採用這種做法。)
要進一步瞭解這些圖是如何派生出來的,可以看看如何類比與 df = 2(它表示 k = 3)對應的圖的內容。想象把數字 1、2 和 3 放進帽子裡,搖一搖,選一個數字,然後記錄所選的數字作為一次嘗試。對這個實驗進行 300 次嘗試,然後計算 1、2 和 3 出現的頻率。
每次您做這個實驗時,都應當期望結果有稍微不同的頻率分布,這一分布反映了抽樣的可變性,同時,這個分布又不會真正偏離可能的機率範圍。
下面的 Multinomial 類實現了這一想法。您可以用以下值初始化該類:要做實驗的次數、每個實驗中所做嘗試的次數,以及每次實驗的選項數目。每個實驗的結果記錄在一個名為 Outcomes 的數組中。
清單 1. Multinomial 類的內容
// Multinomial.php
// Copyright 2003, Paul Meagher
// Distributed under LGPL
class Multinomial {
var $NExps;
var $NTrials;
var $NOptions;
var $Outcomes = array();
function Multinomial($NExps, $NTrials, $NOptions) {
$this->NExps = $NExps;
$this->NTrials = $NTrials;
$this->NOptions = $NOptions;
for ($i=0; $i < $this->NExps; $i++) {
$this->Outcomes[$i] = $this->runExperiment();
}
}
function runExperiment() {
$Outcome = array();
for ($i = 0; $i < $this->NExps; $i++){
$choice = rand(1,$this->NOptions);
$Outcome[$choice]++;
}
return $Outcome;
}
}
?>
請注意,runExperiment 方法是該指令碼中非常重要的一部分,它保證在每次實驗中所做出的選擇是隨機的,並且跟蹤到目前為止在類比實驗中做出了哪些選擇。
為了找到 X 平方分布統計的抽樣分布,只需擷取每次實驗的結果,並且計算該結果的 X 平方分布統計。由於隨機抽樣的可變性,因此這個 X 平方分布統計會隨實驗的不同而不同。
下面的指令碼將每次實驗獲得的 X 平方分布統計寫到一個輸出檔案以便稍後用圖表表示。
清單 2. 將獲得的 X 平方分布統計寫到輸出檔案
// simulate.php
// Copyright 2003, Paul Meagher
// Distributed under LGPL
// Set time limit to 0 so script doesn't time out
set_time_limit(0);
require_once "../init.php";
require PHP_MATH . "chi/Multinomial.php";
require PHP_MATH . "chi/ChiSquare1D.php";
// Initialization parameters
$NExps = 10000;
$NTrials = 300;
$NOptions = 3;
$multi = new Multinomial($NExps, $NTrials, $NOptions);
$output = fopen("./data.txt","w") OR die("file won't open");
for ($i=0; $i<$NExps; $i++) {
// For each multinomial experiment, do chi square analysis
$chi = new ChiSquare1D($multi->Outcomes[$i]);
// Load obtained chi square value into sampling distribution array
$distribution[$i] = $chi->ChiSqObt;
// Write obtained chi square value to file
fputs($output, $distribution[$i]."n");
}
fclose ($output);
?>
為了使運行該實驗所期望獲得的結果可視化,對我來說,最簡單的方法就是將 data.txt 檔案裝入開放源碼統計包 R,運行 histogram 命令,並且在圖形編輯器中編輯該圖表,如下所示:
x = scan("data.txt")
hist(x, 50)
正如您可以看到的,這些 X 平方分布值的長條圖與上面表示的 df = 2 的連續 X 平方分布的分布近似。
圖 3. 與 df=2 的連續分布近似的值
在下面幾節中,我將側重於說明這個類比實驗中所使用的 X 平方分布軟體的工作原理。通常情況下,X 平方分布軟體將用於分析實際的定類尺度資料(例如 Web 民意測驗結果、每周的流量報告或者客戶品牌偏好報告),而不是您使用的類比資料。您可能還會對該軟體產生的其它輸出 — 例如匯總表和尾數機率 — 感興趣。
X 平方分布的執行個體變數
我開發的基於 php 的 X 平方分布軟體包由用於分析頻率資料的類構成,頻率資料是按照一維或兩維(ChiSquare1D.php 和 ChiSquare2D.php)進行分類的。我的討論將僅局限於說明 ChiSquare1D.php 類的工作原理,以及說明如何將其應用於一維 Web 民意測驗資料。
在繼續之前,應當說明:按照兩維對資料進行分類(例如,按照性別對啤酒偏好進行分類),允許您通過尋找列聯表單元中的系統關係或條件機率開始說明您的結果。儘管下面的許多討論將有助於您理解 ChiSquare2D.php 軟體的工作原理,但本文未討論的其它實驗、分析和可視化問題也是使用這個類之前必須處理的。
清單 3 研究了 ChiSquare1D.php 類的片段,它由以下部分構成:
1.一個被包含的檔案
2.類執行個體變數
清單 3. 帶有被包含的檔案和執行個體變數的 X 平方分布類的片段
// ChiSquare1D.php
// Copyright 2003, Paul Meagher
// Distributed under LGPL
require_once PHP_MATH . "dist/Distribution.php";
class ChiSquare1D {
var $Total;
var $ObsFreq = array(); // Observed frequencies
var $ExpFreq = array(); // Expected frequencies
var $ExpProb = array(); // Expected probabilities
var $NumCells;
var $ChiSqObt;
var $DF;
var $Alpha;
var $ChiSqProb;
var $ChiSqCrit;
}
?>
清單 3 中這個指令碼的頂部包含了一個名為 Distribution.php 的檔案。所包含的路徑合并了在 init.php 檔案中設定的 PHP_MATH 常量,假定 init.php 檔案已包含在呼叫指令碼中。
所包含的檔案 Distribution.php 包含了為幾個常用的抽樣分布(T 分布、F 分布和 X 平方分布)產生抽樣分布統計資訊的方法。ChiSquare1D.php 類必須能夠訪問 Distribution.php 中的 X 平方分布方法,以計算所得到的 X 平方分布值的尾數機率。
這個類中的執行個體變數列表值得注意,因為它們定義了由分析過程產生的結果對象。這個結果對象包含了有關檢驗的所有重要詳細資料,包括三個重要的 X 平方分布統計 — ChiSqObt、ChiSqProb 和 ChiSqCrit。關於如何計算每個執行個體變數的詳細資料,可以查閱該類的建構函式方法,所有這些值都源自那裡。
建構函式:X 平方分布檢驗的主幹
清單 4 給出了 X 平方分布的建構函式代碼,它構成了 X 平方分布檢驗的主幹。
清單 4. X 平方分布的建構函式
class ChiSquare1D {
function ChiSquare1D($ObsFreq, $Alpha=0.05, $ExpProb=FALSE) {
$this->ObsFreq = $ObsFreq;
$this->ExpProb = $ExpProb;
$this->Alpha = $Alpha;
$this->NumCells = count($this->ObsFreq);
$this->DF = $this->NumCells - 1;
$this->Total = $this->getTotal();
$this->ExpFreq = $this->getExpFreq();
$this->ChiSqObt = $this->getChiSqObt();
$this->ChiSqCrit = $this->getChiSqCrit();
$this->ChiSqProb = $this->getChiSqProb();
return true;
}
}
?>
建構函式方法中值得注意的四個方面是:
1.建構函式接受一個由觀察到的頻率組成的數組、alpha 機率斷開點(cutoff score)和一個可選的期望機率的數組。
2.前六行涉及了相對簡單的賦值和被記錄的計算值,以便於完整的結果對象可用於呼叫指令碼。
3.最後四行執行大量的擷取 X 平方分布統計的工作,這些統計是您最感興趣的。
4.該類只實現 X 平方分布檢驗邏輯。沒有與該類相關聯的輸出方法。
您可以研究本文的代碼下載中包含的類方法,以瞭解關於如何計算每個結果對象值的更多資訊(請參閱參考資料)。
處理輸出問題
清單 5 中的代碼展示了使用 ChiSquare1D.php 類執行 X 平方分布分析是多麼容易。它還示範了輸出問題的處理。
該指令碼調用一個名為 ChiSquare1D_HTML.php 的封裝器指令碼。這個封裝器指令碼的目的是使 X 平方分布過程的邏輯與它的表示方面相分離。_HTML 尾碼表明輸出針對的是標準的 網頁瀏覽器或其它顯示 HTML 的裝置。
封裝器指令碼的另一個目的是用便於理解資料的方式組織輸出。為了達到這個目的,該類包含了兩個用於顯示 X 平方分布分析結果的方法。showTableSummary 方法顯示了在代碼後面展示的第一個輸出表(表 2),而 showChiSquareStats 顯示了第二個輸出表(表 3)。
清單 5. 利用封裝器指令碼組織資料
// beer_poll_analysis.php
require_once "../init.php";
require_once PHP_MATH . "chi/ChiSquare1D_HTML.php";
$Headings = array("Keiths", "Olands", "Schooner", "Other");
$ObsFreq = array(285, 250, 215, 250);
$Alpha = 0.05;
$Chi = new ChiSquare1D_HTML($ObsFreq, $Alpha);
$Chi->showTableSummary($Headings);
echo "
";
$Chi->showChiSquareStats();
?>
該指令碼產生了下列輸出:
表 2. 運行封裝器指令碼而獲得的期望頻率和方差
Keiths Olands Schooner 其它 合計
觀察值 285 250 215 250 1000
期望值 250 250 250 250 1000
方差 4.90 0.00 4.90 0.00 9.80
表 3. 運行封裝器指令碼獲得的各種 X 平方分布統計資訊統計
DF 獲得值 機率 臨界值
X 平方分布 3 9.80 0.02 7.81
表 2 顯示了期望頻率以及每個單元的方差度量 (O - E)2 / E。方差值的和等於獲得的 X 平方分布(9.80)值,這個值顯示在匯總表的右下單元中。
表 3 報告了各種 X 平方分布統計資訊。它包括了分析中使用的自由度,並再次報告了獲得的 X 平方分布值。獲得的 X 平方分布值被重新表示成尾數機率值 — 在本例中是 0.02。這意味著,在虛假設條件下,觀察到 X 平方分布極限值 9.80 的機率是 2%(這是一個相當低的機率)。
如果您決定排除虛假設 — 結果可以按照零分布的隨機抽樣可變性獲得,那麼大多數統計師都不會有爭議。您的民意測驗結果更有可能反映了新斯科舍省的啤酒消費者總體對於啤酒品牌偏好的真正差別。
為了確認這一結論,可以用獲得的 X 平方分布值與臨界值進行比較。
為什麼臨界值很重要呢?臨界值建立在為該分析設定的某一重要層級(即 alpha 斷開層級)之上。alpha 斷開值按照慣例被設定為 0.05(上述分析使用的就是該值)。該設定用於尋找 X 平方分布的抽樣分布中包含尾數地區等於 alpha 斷開值(0.05)的位置(或臨界值)。
在本文中,獲得的 X 平方分布值大於臨界值。這意味著超出了保持虛假設說明的閾值。另一種假設 — 對象總體中存在著比例差異 — 在統計上可能更正確。
在資料流的自動化分析中,alpha 斷開設定可以為知識-發現演算法(例如 X 平方分布自動互動檢測(Chi Square Automatic Interaction Detection,CHIAD))設定輸出過濾,這樣的演算法自身在發現真正有用的模式方面無法為人們詳細的指導。
重新進行民意測驗
單向 X 平方分布檢驗的另一個有趣應用是重新進行民意測驗,以瞭解人們的回答是否已發生變化。
假定過一段時間後,您打算對新斯科舍省的啤酒消費者進行另一次 Web 民意測驗。您再次詢問他們喜愛的啤酒品牌,現在觀察到下列結果:
表 4. 新的啤酒民意測驗
Keiths Olands Schooner 其它
385 (27.50%) 350 (25.00%) 315 (22.50%) 350 (25.00%)
舊的資料如下所示:
表 1. 舊的啤酒民意測驗(再一次顯示)
Keiths Olands Schooner 其它
285 (28.50%) 250 (25.00%) 215 (21.50%) 250 (25.00%)
民意測驗結果之間的明顯區別在於,第一次民意測驗有 1,000 個調查對象,而第二次有 1,400 個調查對象。這些額外調查對象的主要影響是,使得每個回答情形的頻率計數增加了 100 點。
當準備好對新的民意測驗進行分析時,可以利用預設的方法 — 計算期望頻率來分析資料,也可以利用每個結果的期望機率(基於前一次民意測驗所觀察到的比例)來初始化分析。在第二種情形中,您將以前獲得的比例裝入期望機率數組($ExpProb),並使用它們來計算每個回答選項的期望頻率值。
清單 6 顯示了用於檢測偏好變化的啤酒民意測驗分析代碼:
清單 6. 檢測偏好的變化
// beer_repoll_analysis.php
require_once "../init.php";
require PHP_MATH . "chi/ChiSquare1D_HTML.php";
$Headings = array("Keiths", "Olands", "Schooner", "Other");
$ObsFreq = array(385, 350, 315, 350);
$Alpha = 0.05;
$ExpProb = array(.285, .250, .215, .250);
$Chi = new ChiSquare1D_HTML($ObsFreq, $Alpha, $ExpProb);
$Chi->showTableSummary($Headings);
echo "
";
$Chi->showChiSquareStats();
?>
表 5 和 6 顯示了 beer_repoll_analysis.php 指令碼產生的 HTML 輸出:
表 5. 運行 beer_repoll_analysis.php 而獲得的期望頻率和方差
Keiths Olands Schooner 其它 合計
觀察值 385 350 315 350 1400
期望值 399 350 301 350 1400
方差 0.49 0.00 0.65 0.00 1.14
表 6. 運行 beer_repoll_analysis.php 所獲得的各種 X 平方分布統計資訊統計
DF 獲得值 機率 臨界值
X 平方分布 3 1.14 0.77 7.81
表 6 表明,在虛假設條件下,獲得 X 平方分布值 1.14 的機率是 77%。我們不能排除這樣的虛假設,即自從上一次民意測驗以來,新斯科舍省啤酒消費者偏好已經發生了變化。觀察頻率和期望頻率之間的任何差異都可以解釋為新斯科舍省相同啤酒消費者的期望抽樣可變性。考慮到最初民意測驗結果的轉換隻是通過向前面每個民意測驗結果添加常數 100 完成的,那麼這種零發現也不應當有什麼令人吃驚的地方了。
但是,您可以設想結果已經發生了變化,並且設想這些結果可能暗示著另一種品牌的啤酒正在變得更加流行(請注意表 5 中每列底部報告的方差大小)。您可以進一步設想這一發現對所討論的釀酒廠的財務方面有顯著的含義,因為酒吧老闆往往會採購酒吧裡最暢銷的啤酒。
這些結果將受到釀酒廠老闆極其詳細的檢查,他們會對分析過程和實驗方法的適合性提出疑問;特別地,他們會對樣本的代表性提出疑問。如果您打算進行一次 Web 實驗,該實驗可能具有重要的實際含義,那麼,對於用來收集資料的實驗方法和用來從資料得出推論的分析技術,您需要給予同等的關注。
因此,本文不僅為您奠定了一個良好的基礎,以便於可以加強您對 Web 資料的有效理解,它還提供了一些建議,這些建議是有關如何保護您的統計檢驗選擇的,並且使得從資料獲得的結論更具合理性。
應用學到的知識
在本文中,您已經瞭解了如何將推論統計學應用於普遍存在的用於匯總 Web 資料流的頻率資料,側重於 Web 民意測驗資料的分析。但是,所討論的簡單的單向 X 平方分布分析過程也能夠有效地應用於其它類型的資料流(訪問日誌、調查結果、客戶概要資訊和客戶訂單),以便將未經處理資料轉換成有用的知識。
在將推論統計學應用於 Web 資料時,我還介紹了希望將資料流視作 Web 實驗的結果,以便於在作推論時提高引用實驗設計考慮事項的可能性。通常由於您對於資料擷取的過程缺乏足夠的控制,因此您不能做出推論。但是,如果在將實驗的設計原則應用於 Web 資料收集過程時您更加主動(例如,在您的 Web 民意測驗過程中隨機播放投票者),那麼可以改變這種情形。
最後,我示範了如何類比不同自由度的 X 平方分布的抽樣分布,而不只是僅說明其來源。在這樣做的過程中,對於測量類別的期望頻率小於 5(換而言之,即小 N 實驗)— 我還示範了一種變通方法(使用小 $NTrials 值類比實驗的抽樣分布)來禁止使用 X 平方分布檢驗。因此,我不只是使用研究過程中的 df 來計算樣本結果的機率,對於數量較小的嘗試,可能還需要使用 $NTrials 值作為參數來求得所觀察 X 平方分布結果的機率。
考慮您可能會如何分析小 N 實驗是值得的,因為您通常可能希望在資料擷取完成之前分析您的資料 — 當每次觀察的代價都很昂貴時,當觀察需要花費很長時間才能獲得時,或者只是因為您很好奇。在嘗試這一層級的 Web 資料分析時,最好謹記下面這兩個問題:
*您是否有理由在小 N 條件下進行推論?
*類比有助於您決定在這些環境下獲得什麼推論嗎?