明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用 PHP 使 Web 數(shù)據(jù)區(qū)分進入更高境界

[摘要]計您的數(shù)據(jù)分析,做比簡單原始計數(shù)更多的事對 Web 數(shù)據(jù)進行有效和多層次的分析是許多面向 Web 企業(yè)能夠生存的關鍵因素,數(shù)據(jù)分析檢驗的設計(和決策)通常是系統(tǒng)管理員和內部應用程序設計人員的工作,而他們可能除了能夠把原始計數(shù)制成表格之外,對統(tǒng)計學沒有更多的了解。在本文中,Paul Meagher ...
計您的數(shù)據(jù)分析,做比簡單原始計數(shù)更多的事


對 Web 數(shù)據(jù)進行有效和多層次的分析是許多面向 Web 企業(yè)能夠生存的關鍵因素,數(shù)據(jù)分析檢驗的設計(和決策)通常是系統(tǒng)管理員和內部應用程序設計人員的工作,而他們可能除了能夠把原始計數(shù)制成表格之外,對統(tǒng)計學沒有更多的了解。在本文中,Paul Meagher 向 Web 開發(fā)人員傳授了將推論統(tǒng)計學應用到 Web 數(shù)據(jù)流所需的技能和概念。

動態(tài)網(wǎng)站不斷生成大量的數(shù)據(jù) — 訪問日志、民意測驗和調查結果、客戶概要信息、訂單及其它,Web 開發(fā)人員的工作不僅是創(chuàng)建生成這些數(shù)據(jù)的應用程序,而且還要開發(fā)使這些數(shù)據(jù)流有意義的應用程序和方法。

通常,對于由管理站點所產生的不斷增長的數(shù)據(jù)分析需求,Web 開發(fā)人員的應對是不夠的。一般而言,除了報告各種描述性統(tǒng)計信息之外,Web 開發(fā)人員并沒有其它更好的方法來反映數(shù)據(jù)流特征。有許多推論統(tǒng)計步驟(根據(jù)樣本數(shù)據(jù)估計總體參數(shù)的方法)可以被充分利用,但目前卻沒有應用它們。

例如,Web 訪問統(tǒng)計信息(按當前所編輯的)只不過是以各種方式進行分組的頻率計數(shù)。以原始計數(shù)和百分比表示民意測驗和調查結果的情況比比皆是。

開發(fā)人員用比較淺顯的方法處理數(shù)據(jù)流的統(tǒng)計分析或許已經(jīng)足夠了,我們不應期望太多。畢竟,有從事較復雜的數(shù)據(jù)流分析的專業(yè)人士;他們是統(tǒng)計師和受過訓練的分析師。當組織需要的不僅僅是描述性統(tǒng)計時,可以請他們加入。

但另一種應對是承認對推論統(tǒng)計學日益加深的了解正成為 Web 開發(fā)人員工作描述的一部分。動態(tài)站點正在生成越來越多的數(shù)據(jù),事實表明,設法將這些數(shù)據(jù)變成有用的知識正是 Web 開發(fā)人員和系統(tǒng)管理員的責任。

我提倡采取后一種應對;本文旨在幫助 Web 開發(fā)人員和系統(tǒng)管理員學習(或重溫,如果知識已遺忘的話)將推論統(tǒng)計學應用到 Web 數(shù)據(jù)流所需的設計和分析技能。


使 Web 數(shù)據(jù)與實驗設計相關

將推論統(tǒng)計學應用到 Web 數(shù)據(jù)流需要的不僅僅是學習作為各種統(tǒng)計檢驗基礎的數(shù)學知識。將數(shù)據(jù)收集過程與實驗設計中的關鍵差別關聯(lián)起來的能力同樣很重要:測量尺度是什么?樣本的代表性如何?總體是什么?正在檢驗的假設是什么?

要將推論統(tǒng)計學應用到 Web 數(shù)據(jù)流,需要先把結果看作是由實驗設計生成的;然后選擇適用于該實驗設計的分析過程。即使您可能認為將 Web 民意測驗和訪問日志數(shù)據(jù)看作實驗的結果是多此一舉,但這樣做確實很重要。為什么?

1.這將幫助您選擇適當?shù)慕y(tǒng)計檢驗方法。
2.這將幫助您從收集的數(shù)據(jù)中得出適當?shù)慕Y論。

在確定要使用哪些適當?shù)慕y(tǒng)計檢驗時,實驗設計的一個重要方面是選擇數(shù)據(jù)收集的衡量尺度。


衡量標準的示例

測量尺度只是指定了一個對所感興趣的現(xiàn)象分配符號、字母或數(shù)字的步驟。例如,千克尺度允許您給一個物體分配數(shù)字,根據(jù)測量儀器的標準化的偏移量指示該物體的重量。

有四種重要的衡量標準:

定比尺度(ratio)— 千克尺度是定比尺度的一個示例 ? 分配給物體屬性的符號具有數(shù)字意義。您可以對這些符號執(zhí)行各種運算(如計算比率),而對于通過使用功能不那么強大的衡量標準獲得的數(shù)值,您不能使用這些運算。


定距尺度(interval)— 在定距尺度中,任意兩個相鄰測量單位之間的距離(也稱為間距)是相等的,但零點是任意的。定距尺度的示例包括對經(jīng)度和潮汐高度的度量,以及不同年份始末的度量。定距尺度的值可以加減,但乘除則沒有意義。


定序尺度(rank)— 定序尺度可應用于一組有順序的數(shù)據(jù),有順序指的是屬于該尺度的值和觀察值可以按順序排列或附帶有評級尺度。常見的示例包括“好惡”民意測驗,其中將數(shù)字分配給各個屬性(從 1 = 非常厭惡到 5 = 非常喜歡)。通常,一組有序數(shù)據(jù)的類別有自然的順序,但尺度上相鄰點之間的差距不必總是相同的。對于有順序的數(shù)據(jù),您可以計數(shù)和排序,但不能測量。


定類尺度(nominal)— 衡量標準的定類尺度是衡量標準中最弱的一種形式,主要指將項目分配給組或類別。這種測量不帶數(shù)量信息,并且不表示對項目進行排序。對定類尺度數(shù)據(jù)執(zhí)行的主要數(shù)值運算是每一類別中項目的頻率計數(shù)。
下表對比了每種衡量標準的特征:

衡量標準尺度 屬性具有絕對的數(shù)字含義嗎? 能執(zhí)行大多數(shù)數(shù)學運算嗎?
定比尺度 是。 是。
定距尺度 對于定距尺度是這樣;零點是任意的。 加和減。
定序尺度 不是。 計數(shù)和排序。
定類尺度 不是。 只能計數(shù)。

在本文中,我將主要討論通過使用測量的定類尺度收集的數(shù)據(jù),以及適用于定類數(shù)據(jù)的推論技術。


使用定類尺度

幾乎所有 Web 用戶 — 設計人員、客戶和系統(tǒng)管理員 — 都熟悉定類尺度。Web 民意測驗和訪問日志類似,因為它們常常使用定類尺度作為衡量標準。在 Web 民意測驗中,用戶常常通過請求人們選擇回答選項(如“您偏愛品牌 A、品牌 B,還是品牌 C?”)來衡量人們的偏好。通過對各類回答的頻率進行計數(shù)來匯總數(shù)據(jù)。

類似的,測量網(wǎng)站流量的常用方法是對一個星期內一天之中的每次點擊或訪問都劃分給這一天,然后對每一天出現(xiàn)的點擊或訪問的數(shù)目計數(shù)。另外,您可以(也確實可以)通過瀏覽器類型、操作系統(tǒng)類型和訪問者所在的國家或地區(qū) — 以及任何您想得到的分類尺度 — 對點擊計數(shù)。

因為 Web 民意測驗和訪問統(tǒng)計信息都需要對數(shù)據(jù)歸入某一特定性質類別的次數(shù)進行計數(shù),所以可以用相似的無參數(shù)統(tǒng)計檢驗(允許您根據(jù)分布形狀而不是總體參數(shù)作出推論的檢驗)來分析它們。

David Sheskin 在他的 Handbook of Parametric and Non-Parametric Statistical Procedures 一書(第 19 頁, 1997)中,是這樣區(qū)分參數(shù)檢驗和非參數(shù)檢驗的:


本書中將過程分類為參數(shù)檢驗和非參數(shù)檢驗所使用的區(qū)別主要基于被分析數(shù)據(jù)所代表的測量級別。作為通用規(guī)則,評估類別/定類尺度數(shù)據(jù)和順序/等級-順序數(shù)據(jù)的推論統(tǒng)計檢驗被歸類為非參數(shù)檢驗,而那些評估定距尺度數(shù)據(jù)或定比尺度數(shù)據(jù)的檢驗則被歸類為參數(shù)檢驗。


當作為參數(shù)檢驗基礎的某些假設值得懷疑時,非參數(shù)檢驗也很有用;當不滿足參數(shù)假設時,非參數(shù)檢驗在檢測總體差異時有很大的作用。對于 Web 民意測驗的示例,我使用了非參數(shù)分析過程,因為 Web 民意測驗通常使用定類尺度來記錄投票者的偏好。

我并不是在建議 Web 民意測驗和 Web 訪問統(tǒng)計信息應該始終使用定類尺度衡量標準,或者說非參數(shù)統(tǒng)計檢驗是唯一可用于分析這類數(shù)據(jù)的方法。不難設想有(譬如)這樣的民意測驗和調查,它們要求用戶對每個選項提供數(shù)值評分(從 1 到 100),對此,參數(shù)性的統(tǒng)計檢驗就比較合適。

盡管如此,許多 Web 數(shù)據(jù)流包括編輯類別計數(shù)數(shù)據(jù),而且通過定義定距尺度(譬如從 17 到 21)并將每個數(shù)據(jù)點分配給一個定距尺度(如“年輕人”),可以將這些數(shù)據(jù)(通過使用功能更強大的衡量標準測量)變成定類尺度數(shù)據(jù)。頻率數(shù)據(jù)的普遍存在(已經(jīng)是 Web 開發(fā)人員經(jīng)驗的一部分),使得專注于非參數(shù)統(tǒng)計學成為學習如何將推論技術應用到數(shù)據(jù)流的良好起點。

為了使本文保持合理的篇幅,我將把對 Web 數(shù)據(jù)流分析的討論局限于 Web 民意測驗。但是請記住,許多 Web 數(shù)據(jù)流都可以用定類計數(shù)數(shù)據(jù)表示,而我討論的推論技術將使您能做比報告簡單的計數(shù)數(shù)據(jù)更多的事情。


從抽樣開始

假設您在您的站點 www.NovaScotiaBeerDrinkers.com 上進行每周一次的民意測驗,詢問成員對各種主題的意見。您已經(jīng)創(chuàng)建了一個民意測驗,詢問成員喜愛的啤酒品牌(在加拿大新斯科舍。∟ova Scotia)有三種知名的啤酒品牌:Keiths、Olands 和 Schooner)。為了使調查盡可能范圍廣泛,您在回答中包括“其它”。

您收到 1,000 條回答,請觀察到表 1 中的結果。(本文顯示的結果只作為演示之用,并不基于任何實際調查。)

表 1. 啤酒民意測驗Keiths Olands Schooner 其它
285(28.50%) 250(25.00%) 215(21.50%) 250(25.00%)

這些數(shù)據(jù)看上去支持這樣的結論:Keiths 是最受新斯科舍省居民歡迎的品牌。根據(jù)這些數(shù)字,您能得出這一結論嗎?換句話說,您能根據(jù)從樣本獲得的結果對新斯科舍省的啤酒消費者總體作出推論嗎?

許多與樣本收集方式有關的因素會使相對受歡迎程度的推論不正確?赡軜颖局邪诉^多 Keiths 釀酒廠的雇員;可能您沒有完全預防一個人投多次票的情況,而這個人可能使結果出現(xiàn)偏差;或許被挑選出來投票的人與沒有被挑選出來投票的人不同;或許上網(wǎng)的投票人與不上網(wǎng)的投票人不同。

大多數(shù) Web 民意測驗都存在這些解釋上的困難。當您試圖從樣本統(tǒng)計數(shù)據(jù)得出有關總體參數(shù)的結論時,就會出現(xiàn)這些解釋上的困難。從實驗設計觀點看,在收集數(shù)據(jù)之前首先要問的一個問題是:能否采取步驟幫助確保樣本能夠代表所研究的總體。

如果對所研究的總體得出結論是您做 Web 民意測驗的動機(而不是為站點訪問者提供的消遣),那么您應該實現(xiàn)一些技術,以確保一人一票(所以,他們必須用唯一的標識登錄才能投票),并確保隨機選擇投票者樣本(例如,隨機選擇成員的子集,然后給他們發(fā)電子郵件,鼓勵他們投票)。

最終,目標是消除(至少減少)各種偏差,它們可能會削弱對所研究總體得出結論的能力。


檢驗假設

假設新斯科舍省啤酒消費者統(tǒng)計樣本沒有發(fā)生偏差,您現(xiàn)在能夠得出 Keiths 是最受歡迎品牌這一結論嗎?

要回答這個問題,請考慮一個相關的問題:如果您要獲得另一個新斯科舍省啤酒消費者的樣本,您希望看到完全相同的結果嗎?實際上,您會希望不同樣本中所觀察到的結果有一定的變化。

考慮這個預期的抽樣可變性,您可能懷疑通過隨機抽樣可變性是否比反映所研究總體中的實際差異能更好地說明觀察到的品牌偏好。在統(tǒng)計學術語中,這個抽樣可變性說明被稱為虛假設(null hypothesis)。(虛假設由符號 Ho 表示)在本例中,用公式將它表示成這樣的語句:在作出回答的所有類別中,各種回答的期望數(shù)目相同。

Ho:# Keiths = # Olands = # Schooner = # Other

如果您能夠排除虛假設,那么您在回答 Keiths 是否是最受歡迎品牌這個最初的問題上取得了一些進展。那么,另一個可接受的假設是在所研究的總體中,各種回答所占比例不同。

這個“先檢驗虛假設”邏輯在民意測驗數(shù)據(jù)分析中的多個階段都適用。排除這一虛假設,這樣數(shù)據(jù)就不會完全不同,隨后您可以繼續(xù)檢驗一個更具體的虛假設,即 Keiths 和 Schooner,或者 Keiths 與其它所有品牌之間沒有差別。

您繼續(xù)檢驗虛假設而不是直接評估另一假設,是因為對于在虛假設條件下人們希望觀察到的事物進行統(tǒng)計建模更容易。接下來,我將演示如何對在虛假設下所期望的事物建模,這樣我就可以將觀察結果與在虛假設條件下所期望的結果加以比較。


對虛假設建模:X 平方分布統(tǒng)計

到目前為止,您已經(jīng)使用一個報告每種回答選項頻率計數(shù)(和百分比)的表匯總了 Web 民意測驗的結果。要檢驗虛假設(表單元頻率之間不存在差別),計算每個表單元與您在虛假設條件下所期望值的總體偏差度量要容易得多。

在這個啤酒歡迎度民意測驗的示例中,在虛假設條件下的期望頻率如下:

期望頻率 = 觀察數(shù)目 / 回答選項的數(shù)目
期望頻率 = 1000 / 4
期望頻率 = 250


要計算每個單元中回答的內容與期望頻率相差多少的總體度量,您可以將所有的差別總計到一個反映觀察頻率與期望頻率相差多少的總體度量中:(285 - 250) + (250 - 250) + (215 - 250) + (250 - 250)。

如果您這么做,您會發(fā)現(xiàn)期望頻率是 0,因為平均值的偏差的和永遠是 0。要解決這個問題,應當取所有差值的平方(這就是X 平方分布(Chi Square)中平方的由來)。最后,為了使各樣本(這些樣本具有不同的觀察數(shù))的這個值具有可比性(換句話說,使它標準化),將該值除以期望頻率。因此,X 平方分布統(tǒng)計的公式如下所示(“O”表示“觀察頻率”,“E”等于“期望頻率”):

圖 1. X 平方分布統(tǒng)計的公式




如果計算啤酒歡迎度民意測驗數(shù)據(jù)的 X 平方分布統(tǒng)計,會得到值 9.80。要檢驗虛假設,需要知道在假設存在隨機抽樣可變性的情況下獲得這么一個極限值的概率。要得出這一概率,需要理解 X 平方分布的抽樣分布是什么樣的。


觀察 X 平方分布的抽樣分布

圖 2. X 平方分布圖



在每幅圖中,橫軸表示所得到的 X 平方分布值大。▓D中所示范圍從 0 到 10)?v軸顯示各 X 平方分布值的概率(或稱為出現(xiàn)的相對頻率)。

當您研究這些 X 平方分布圖時,請注意,當您在實驗中改變自由度(即 df)時,概率函數(shù)的形狀會改變。對于民意測驗數(shù)據(jù)的示例,自由度是這樣計算的:記下民意測驗中的回答選項(k)的數(shù)目,然后用這個值減 1(df = k - 1)。

通常,當您在實驗中增加回答選項的數(shù)目時,獲得較大 X 平方分布值的概率會下降。這是因為當增加回答選項時,就增加了方差值的數(shù)目 — (觀察值 - 期望值)2 — 您可以求它的總數(shù)。因此,當您增加回答選項時,獲得大的 X 平方分布值的統(tǒng)計概率應該增加,而獲得較小 X 平方分布值的概率會減少。這就是為什么 X 平方分布的抽樣分布的形狀隨著 df 值的不同而變化的原因。

此外,要注意到通常人們對 X 平方分布結果的小數(shù)點部分不感興趣,而是對位于所獲得的值右邊曲線的總計部分感興趣。該尾數(shù)概率告訴您獲取一個象您觀察到的極限值是可能(如一個大的尾數(shù)區(qū)域)還是不可能(小的尾數(shù)區(qū)域)。(實際上,我不使用這些圖來計算尾數(shù)概率,因為我可以實現(xiàn)數(shù)學函數(shù)來返回給定 X 平方分布值的尾數(shù)概率。我在本文后面討論的 X 平方分布程序中會采用這種做法。)

要進一步了解這些圖是如何派生出來的,可以看看如何模擬與 df = 2(它表示 k = 3)對應的圖的內容。想象把數(shù)字 1、2 和 3 放進帽子里,搖一搖,選一個數(shù)字,然后記錄所選的數(shù)字作為一次嘗試。對這個實驗進行 300 次嘗試,然后計算 1、2 和 3 出現(xiàn)的頻率。

每次您做這個實驗時,都應當期望結果有稍微不同的頻率分布,這一分布反映了抽樣的可變性,同時,這個分布又不會真正偏離可能的概率范圍。

下面的 Multinomial 類實現(xiàn)了這一想法。您可以用以下值初始化該類:要做實驗的次數(shù)、每個實驗中所做嘗試的次數(shù),以及每次試驗的選項數(shù)目。每個實驗的結果記錄在一個名為 Outcomes 的數(shù)組中。

清單 1. Multinomial 類的內容

<?php

// 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 平方分布統(tǒng)計的抽樣分布,只需獲取每次實驗的結果,并且計算該結果的 X 平方分布統(tǒng)計。由于隨機抽樣的可變性,因此這個 X 平方分布統(tǒng)計會隨實驗的不同而不同。

下面的腳本將每次實驗獲得的 X 平方分布統(tǒng)計寫到一個輸出文件以便稍后用圖表表示。

清單 2. 將獲得的 X 平方分布統(tǒng)計寫到輸出文件
<?php

// 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 文件裝入開放源碼統(tǒng)計包 R,運行 histogram 命令,并且在圖形編輯器中編輯該圖表,如下所示:

x = scan("data.txt")
hist(x, 50)


正如您可以看到的,這些 X 平方分布值的直方圖與上面表示的 df = 2 的連續(xù) X 平方分布的分布近似。

圖 3. 與 df=2 的連續(xù)分布近似的值



在下面幾節(jié)中,我將側重于說明這個模擬實驗中所使用的 X 平方分布軟件的工作原理。通常情況下,X 平方分布軟件將用于分析實際的定類尺度數(shù)據(jù)(例如 Web 民意測驗結果、每周的流量報告或者客戶品牌偏好報告),而不是您使用的模擬數(shù)據(jù)。您可能還會對該軟件生成的其它輸出 — 例如匯總表和尾數(shù)概率 — 感興趣。


X 平方分布的實例變量

我開發(fā)的基于 php 的 X 平方分布軟件包由用于分析頻率數(shù)據(jù)的類構成,頻率數(shù)據(jù)是按照一維或兩維(ChiSquare1D.php 和 ChiSquare2D.php)進行分類的。我的討論將僅局限于說明 ChiSquare1D.php 類的工作原理,以及說明如何將其應用于一維 Web 民意測驗數(shù)據(jù)。

在繼續(xù)之前,應當說明:按照兩維對數(shù)據(jù)進行分類(例如,按照性別對啤酒偏好進行分類),允許您通過查找列聯(lián)表單元中的系統(tǒng)關系或條件概率開始說明您的結果。盡管下面的許多討論將有助于您理解 ChiSquare2D.php 軟件的工作原理,但本文未討論的其它實驗、分析和可視化問題也是使用這個類之前必須處理的。

清單 3 研究了 ChiSquare1D.php 類的片段,它由以下部分構成:

1.一個被包含的文件
2.類實例變量

清單 3. 帶有被包含的文件和實例變量的 X 平方分布類的片段

<?php

// 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 平方分布)生成抽樣分布統(tǒng)計信息的方法。ChiSquare1D.php 類必須能夠訪問 Distribution.php 中的 X 平方分布方法,以計算所得到的 X 平方分布值的尾數(shù)概率。

這個類中的實例變量列表值得注意,因為它們定義了由分析過程生成的結果對象。這個結果對象包含了有關檢驗的所有重要詳細信息,包括三個重要的 X 平方分布統(tǒng)計 — ChiSqObt、ChiSqProb 和 ChiSqCrit。關于如何計算每個實例變量的詳細信息,可以查閱該類的構造函數(shù)方法,所有這些值都源自那里。


構造函數(shù):X 平方分布檢驗的主干

清單 4 給出了 X 平方分布的構造函數(shù)代碼,它構成了 X 平方分布檢驗的主干。

清單 4. X 平方分布的構造函數(shù)

<?php

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;
}

}

?>


構造函數(shù)方法中值得注意的四個方面是:

1.構造函數(shù)接受一個由觀察到的頻率組成的數(shù)組、alpha 概率斷開點(cutoff score)和一個可選的期望概率的數(shù)組。
2.前六行涉及了相對簡單的賦值和被記錄的計算值,以便于完整的結果對象可用于調用腳本。
3.最后四行執(zhí)行大量的獲取 X 平方分布統(tǒng)計的工作,這些統(tǒng)計是您最感興趣的。
4.該類只實現(xiàn) X 平方分布檢驗邏輯。沒有與該類相關聯(lián)的輸出方法。
您可以研究本文的代碼下載中包含的類方法,以了解關于如何計算每個結果對象值的更多信息(請參閱參考資料)。


處理輸出問題
清單 5 中的代碼展示了使用 ChiSquare1D.php 類執(zhí)行 X 平方分布分析是多么容易。它還演示了輸出問題的處理。

該腳本調用一個名為 ChiSquare1D_HTML.php 的包裝器腳本。這個包裝器腳本的目的是使 X 平方分布過程的邏輯與它的表示方面相分離。_HTML 后綴表明輸出針對的是標準的 Web 瀏覽器或其它顯示 HTML 的設備。

包裝器腳本的另一個目的是用便于理解數(shù)據(jù)的方式組織輸出。為了達到這個目的,該類包含了兩個用于顯示 X 平方分布分析結果的方法。showTableSummary 方法顯示了在代碼后面展示的第一個輸出表(表 2),而 showChiSquareStats 顯示了第二個輸出表(表 3)。

清單 5. 利用包裝器腳本組織數(shù)據(jù)
<?php

// 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 "<br><br>";
$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 平方分布統(tǒng)計信息統(tǒng)計
DF 獲得值 概率 臨界值
X 平方分布 3 9.80 0.02 7.81

表 2 顯示了期望頻率以及每個單元的方差度量 (O - E)2 / E。方差值的和等于獲得的 X 平方分布(9.80)值,這個值顯示在匯總表的右下單元中。

表 3 報告了各種 X 平方分布統(tǒng)計信息。它包括了分析中使用的自由度,并再次報告了獲得的 X 平方分布值。獲得的 X 平方分布值被重新表示成尾數(shù)概率值 — 在本例中是 0.02。這意味著,在虛假設條件下,觀察到 X 平方分布極限值 9.80 的概率是 2%(這是一個相當?shù)偷母怕剩?br>
如果您決定排除虛假設 — 結果可以按照零分布的隨機抽樣可變性獲得,那么大多數(shù)統(tǒng)計師都不會有爭議。您的民意測驗結果更有可能反映了新斯科舍省的啤酒消費者總體對于啤酒品牌偏好的真正差別。

為了確認這一結論,可以用獲得的 X 平方分布值與臨界值進行比較。

為什么臨界值很重要呢?臨界值建立在為該分析設置的某一重要級別(即 alpha 斷開級別)之上。alpha 斷開值按照慣例被設置為 0.05(上述分析使用的就是該值)。該設置用于查找 X 平方分布的抽樣分布中包含尾數(shù)區(qū)域等于 alpha 斷開值(0.05)的位置(或臨界值)。

在本文中,獲得的 X 平方分布值大于臨界值。這意味著超出了保持虛假設說明的閾值。另一種假設 — 對象總體中存在著比例差異 — 在統(tǒng)計上可能更正確。

在數(shù)據(jù)流的自動化分析中,alpha 斷開設置可以為知識-發(fā)現(xiàn)算法(例如 X 平方分布自動交互檢測(Chi Square Automatic Interaction Detection,CHIAD))設置輸出過濾,這樣的算法自身在發(fā)現(xiàn)真正有用的模式方面無法為人們詳細的指導。


重新進行民意測驗
單向 X 平方分布檢驗的另一個有趣應用是重新進行民意測驗,以了解人們的回答是否已發(fā)生變化。

假定過一段時間后,您打算對新斯科舍省的啤酒消費者進行另一次 Web 民意測驗。您再次詢問他們喜愛的啤酒品牌,現(xiàn)在觀察到下列結果:

表 4. 新的啤酒民意測驗
Keiths Olands Schooner 其它
385 (27.50%) 350 (25.00%) 315 (22.50%) 350 (25.00%)


舊的數(shù)據(jù)如下所示:

表 1. 舊的啤酒民意測驗(再一次顯示)
Keiths Olands Schooner 其它
285 (28.50%) 250 (25.00%) 215 (21.50%) 250 (25.00%)


民意測驗結果之間的明顯區(qū)別在于,第一次民意測驗有 1,000 個調查對象,而第二次有 1,400 個調查對象。這些額外調查對象的主要影響是,使得每個回答情形的頻率計數(shù)增加了 100 點。

當準備好對新的民意測驗進行分析時,可以利用缺省的方法 — 計算期望頻率來分析數(shù)據(jù),也可以利用每個結果的期望概率(基于前一次民意測驗所觀察到的比例)來初始化分析。在第二種情形中,您將以前獲得的比例裝入期望概率數(shù)組($ExpProb),并使用它們來計算每個回答選項的期望頻率值。

清單 6 顯示了用于檢測偏好變化的啤酒民意測驗分析代碼:


清單 6. 檢測偏好的變化

<?php

// 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 "<br><br>";
$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 平方分布統(tǒng)計信息統(tǒng)計
DF 獲得值 概率 臨界值
X 平方分布 3 1.14 0.77 7.81

表 6 表明,在虛假設條件下,獲得 X 平方分布值 1.14 的概率是 77%。我們不能排除這樣的虛假設,即自從上一次民意測驗以來,新斯科舍省啤酒消費者偏好已經(jīng)發(fā)生了變化。觀察頻率和期望頻率之間的任何差異都可以解釋為新斯科舍省相同啤酒消費者的期望抽樣可變性。考慮到最初民意測驗結果的轉換只是通過向前面每個民意測驗結果添加常數(shù) 100 完成的,那么這種零發(fā)現(xiàn)也不應當有什么令人吃驚的地方了。

但是,您可以設想結果已經(jīng)發(fā)生了變化,并且設想這些結果可能暗示著另一種品牌的啤酒正在變得更加流行(請注意表 5 中每列底部報告的方差大。。您可以進一步設想這一發(fā)現(xiàn)對所討論的釀酒廠的財務方面有顯著的含義,因為酒吧老板往往會采購酒吧里最暢銷的啤酒。

這些結果將受到釀酒廠老板極其詳細的檢查,他們會對分析過程和實驗方法的適合性提出疑問;特別地,他們會對樣本的代表性提出疑問。如果您打算進行一次 Web 實驗,該實驗可能具有重要的實際含義,那么,對于用來收集數(shù)據(jù)的實驗方法和用來從數(shù)據(jù)得出推論的分析技術,您需要給予同等的關注。

因此,本文不僅為您奠定了一個良好的基礎,以便于可以加強您對 Web 數(shù)據(jù)的有效理解,它還提供了一些建議,這些建議是有關如何保護您的統(tǒng)計檢驗選擇的,并且使得從數(shù)據(jù)獲得的結論更具合理性。


應用學到的知識

在本文中,您已經(jīng)了解了如何將推論統(tǒng)計學應用于普遍存在的用于匯總 Web 數(shù)據(jù)流的頻率數(shù)據(jù),側重于 Web 民意測驗數(shù)據(jù)的分析。但是,所討論的簡單的單向 X 平方分布分析過程也能夠有效地應用于其它類型的數(shù)據(jù)流(訪問日志、調查結果、客戶概要信息和客戶訂單),以便將原始數(shù)據(jù)轉換成有用的知識。

在將推論統(tǒng)計學應用于 Web 數(shù)據(jù)時,我還介紹了希望將數(shù)據(jù)流視作 Web 實驗的結果,以便于在作推論時提高引用實驗設計考慮事項的可能性。通常由于您對于數(shù)據(jù)采集的過程缺乏足夠的控制,因此您不能做出推論。但是,如果在將實驗的設計原則應用于 Web 數(shù)據(jù)收集過程時您更加主動(例如,在您的 Web 民意測驗過程中隨機選擇投票者),那么可以改變這種情形。

最后,我演示了如何模擬不同自由度的 X 平方分布的抽樣分布,而不只是僅說明其來源。在這樣做的過程中,對于測量類別的期望頻率小于 5(換而言之,即小 N 實驗)— 我還演示了一種變通方法(使用小 $NTrials 值模擬實驗的抽樣分布)來禁止使用 X 平方分布檢驗。因此,我不只是使用研究過程中的 df 來計算樣本結果的概率,對于數(shù)量較小的嘗試,可能還需要使用 $NTrials 值作為參數(shù)來求得所觀察 X 平方分布結果的概率。

考慮您可能會如何分析小 N 實驗是值得的,因為您通?赡芟M跀(shù)據(jù)采集完成之前分析您的數(shù)據(jù) — 當每次觀察的代價都很昂貴時,當觀察需要花費很長時間才能獲得時,或者只是因為您很好奇。在嘗試這一級別的 Web 數(shù)據(jù)分析時,最好謹記下面這兩個問題:


*您是否有理由在小 N 條件下進行推論?
*模擬有助于您決定在這些環(huán)境下獲得什么推論嗎?