99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀用 PHP 使 Web 數(shù)據(jù)分析進(jìn)入更高境界(三)
用 PHP 使 Web 數(shù)據(jù)分析進(jìn)入更高境界(三)
2015-06-11
收藏

用 PHP 使 Web 數(shù)據(jù)分析進(jìn)入更高境界(三)


下面的腳本將每次實(shí)驗(yàn)獲得的 X 平方分布統(tǒng)計(jì)寫(xiě)到一個(gè)輸出文件以便稍后用圖表表示。 清單 2. 將獲得的 X 平方分布統(tǒng)計(jì)寫(xiě)到輸出文件 <?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); ?> 為了使運(yùn)行該實(shí)驗(yàn)所期望獲得的結(jié)果可視化,對(duì)我來(lái)說(shuō),最簡(jiǎn)單的方法就是將 data.txt 文件裝入開(kāi)放源碼統(tǒng)計(jì)包 R,運(yùn)行 histogram 命令,并且在圖形編輯器中編輯該圖表,如下所示: x = scan("data.txt") hist(x, 50) 正如您可以看到的,這些 X 平方分布值的直方圖與上面表示的 df = 2 的連續(xù) X 平方分布的分布近似。 圖 3. 與 df=2 的連續(xù)分布近似的值 在下面幾節(jié)中,我將側(cè)重于說(shuō)明這個(gè)模擬實(shí)驗(yàn)中所使用的 X 平方分布軟件的工作原理。

通常情況下,X 平方分布軟件將用于分析實(shí)際的定類(lèi)尺度數(shù)據(jù)(例如 Web 民意測(cè)驗(yàn)結(jié)果、每周的流量報(bào)告或者客戶(hù)品牌偏好報(bào)告),而不是您使用的模擬數(shù)據(jù)。您可能還會(huì)對(duì)該軟件生成的其它輸出 ― 例如匯總表和尾數(shù)概率 ― 感興趣。 X 平方分布的實(shí)例變量 我開(kāi)發(fā)的基于 php 的 X 平方分布軟件包由用于分析頻率數(shù)據(jù)的類(lèi)構(gòu)成,頻率數(shù)據(jù)是按照一維或兩維(ChiSquare1D.php 和 ChiSquare2D.php)進(jìn)行分類(lèi)的。我的討論將僅局限于說(shuō)明 ChiSquare1D.php 類(lèi)的工作原理,以及說(shuō)明如何將其應(yīng)用于一維 Web 民意測(cè)驗(yàn)數(shù)據(jù)。 在繼續(xù)之前,應(yīng)當(dāng)說(shuō)明:按照兩維對(duì)數(shù)據(jù)進(jìn)行分類(lèi)(例如,按照性別對(duì)啤酒偏好進(jìn)行分類(lèi)),允許您通過(guò)查找列聯(lián)表單元中的系統(tǒng)關(guān)系或條件概率開(kāi)始說(shuō)明您的結(jié)果。盡管下面的許多討論將有助于您理解 ChiSquare2D.php 軟件的工作原理,但本文未討論的其它實(shí)驗(yàn)、分析和可視化問(wèn)題也是使用這個(gè)類(lèi)之前必須處理的。

 清單 3 研究了 ChiSquare1D.php 類(lèi)的片段,它由以下部分構(gòu)成: 1.一個(gè)被包含的文件 2.類(lèi)實(shí)例變量 清單 3. 帶有被包含的文件和實(shí)例變量的 X 平方分布類(lèi)的片段 <?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 中這個(gè)腳本的頂部包含了一個(gè)名為 Distribution.php 的文件。所包含的路徑合并了在 init.php 文件中設(shè)置的 PHP_MATH 常量,假定 init.php 文件已包含在調(diào)用腳本中。 所包含的文件 Distribution.php 包含了為幾個(gè)常用的抽樣分布(T 分布、F 分布和 X 平方分布)生成抽樣分布統(tǒng)計(jì)信息的方法。ChiSquare1D.php 類(lèi)必須能夠訪問(wèn) Distribution.php 中的 X 平方分布方法,以計(jì)算所得到的 X 平方分布值的尾數(shù)概率。 這個(gè)類(lèi)中的實(shí)例變量列表值得注意,因?yàn)樗鼈兌x了由分析過(guò)程生成的結(jié)果對(duì)象。

這個(gè)結(jié)果對(duì)象包含了有關(guān)檢驗(yàn)的所有重要詳細(xì)信息,包括三個(gè)重要的 X 平方分布統(tǒng)計(jì) ― ChiSqObt、ChiSqProb 和 ChiSqCrit。關(guān)于如何計(jì)算每個(gè)實(shí)例變量的詳細(xì)信息,可以查閱該類(lèi)的構(gòu)造函數(shù)方法,所有這些值都源自那里。 構(gòu)造函數(shù):X 平方分布檢驗(yàn)的主干 清單 4 給出了 X 平方分布的構(gòu)造函數(shù)代碼,它構(gòu)成了 X 平方分布檢驗(yàn)的主干。 清單 4. X 平方分布的構(gòu)造函數(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;   } } ?> 構(gòu)造函數(shù)方法中值得注意的四個(gè)方面是: 

1.構(gòu)造函數(shù)接受一個(gè)由觀察到的頻率組成的數(shù)組、alpha 概率斷開(kāi)點(diǎn)(cutoff score)和一個(gè)可選的期望概率的數(shù)組。

 2.前六行涉及了相對(duì)簡(jiǎn)單的賦值和被記錄的計(jì)算值,以便于完整的結(jié)果對(duì)象可用于調(diào)用腳本。 

3.最后四行執(zhí)行大量的獲取 X 平方分布統(tǒng)計(jì)的工作,這些統(tǒng)計(jì)是您最感興趣的。 

4.該類(lèi)只實(shí)現(xiàn) X 平方分布檢驗(yàn)邏輯。沒(méi)有與該類(lèi)相關(guān)聯(lián)的輸出方法。 您可以研究本文的代碼下載中包含的類(lèi)方法,以了解關(guān)于如何計(jì)算每個(gè)結(jié)果對(duì)象值的更多信息(請(qǐng)參閱參考資料)。 處理輸出問(wèn)題 清單 5 中的代碼展示了使用 ChiSquare1D.php 類(lèi)執(zhí)行 X 平方分布分析是多么容易。

它還演示了輸出問(wèn)題的處理。 該腳本調(diào)用一個(gè)名為 ChiSquare1D_HTML.php 的包裝器腳本。這個(gè)包裝器腳本的目的是使 X 平方分布過(guò)程的邏輯與它的表示方面相分離。_HTML 后綴表明輸出針對(duì)的是標(biāo)準(zhǔn)的 Web 瀏覽器或其它顯示 HTML 的設(shè)備。 包裝器腳本的另一個(gè)目的是用便于理解數(shù)據(jù)的方式組織輸出。為了達(dá)到這個(gè)目的,該類(lèi)包含了兩個(gè)用于顯示 X 平方分布分析結(jié)果的方法。showTableSummary 方法顯示了在代碼后面展示的第一個(gè)輸出表(表 2),而 showChiSquareStats 顯示了第二個(gè)輸出表(表 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. 運(yùn)行包裝器腳本而獲得的期望頻率和方差 Keiths Olands Schooner 其它 合計(jì) 觀察值 285 250 215 250 1000 期望值 250 250 250 250 1000 方差 4.90 0.00 4.90 0.00 9.80 表 3. 運(yùn)行包裝器腳本獲得的各種 X 平方分布統(tǒng)計(jì)信息統(tǒng)計(jì) DF 獲得值 概率 臨界值 X 平方分布 3 9.80 0.02 7.81 表 2 顯示了期望頻率以及每個(gè)單元的方差度量 (O - E)2 / E。方差值的和等于獲得的 X 平方分布(9.80)值,這個(gè)值顯示在匯總表的右下單元中。

 表 3 報(bào)告了各種 X 平方分布統(tǒng)計(jì)信息。它包括了分析中使用的自由度,并再次報(bào)告了獲得的 X 平方分布值。獲得的 X 平方分布值被重新表示成尾數(shù)概率值 ― 在本例中是 0.02。這意味著,在虛假設(shè)條件下,觀察到 X 平方分布極限值 9.80 的概率是 2%(這是一個(gè)相當(dāng)?shù)偷母怕剩?nbsp;

如果您決定排除虛假設(shè) ― 結(jié)果可以按照零分布的隨機(jī)抽樣可變性獲得,那么大多數(shù)統(tǒng)計(jì)師都不會(huì)有爭(zhēng)議。您的民意測(cè)驗(yàn)結(jié)果更有可能反映了新斯科舍省的啤酒消費(fèi)者總體對(duì)于啤酒品牌偏好的真正差別。 為了確認(rèn)這一結(jié)論,可以用獲得的 X 平方分布值與臨界值進(jìn)行比較。 為什么臨界值很重要呢?臨界值建立在為該分析設(shè)置的某一重要級(jí)別(即 alpha 斷開(kāi)級(jí)別)之上。alpha 斷開(kāi)值按照慣例被設(shè)置為 0.05(上述分析使用的就是該值)。該設(shè)置用于查找 X 平方分布的抽樣分布中包含尾數(shù)區(qū)域等于 alpha 斷開(kāi)值(0.05)的位置(或臨界值)。 在本文中,獲得的 X 平方分布值大于臨界值。這意味著超出了保持虛假設(shè)說(shuō)明的閾值。

另一種假設(shè) ― 對(duì)象總體中存在著比例差異 ― 在統(tǒng)計(jì)上可能更正確。 在數(shù)據(jù)流的自動(dòng)化分析中,alpha 斷開(kāi)設(shè)置可以為知識(shí)-發(fā)現(xiàn)算法(例如 X 平方分布自動(dòng)交互檢測(cè)(Chi Square Automatic Interaction Detection,CHIAD))設(shè)置輸出過(guò)濾,這樣的算法自身在發(fā)現(xiàn)真正有用的模式方面無(wú)法為人們?cè)敿?xì)的指導(dǎo)。 重新進(jìn)行民意測(cè)驗(yàn) 單向 X 平方分布檢驗(yàn)的另一個(gè)有趣應(yīng)用是重新進(jìn)行民意測(cè)驗(yàn),以了解人們的回答是否已發(fā)生變化。

數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢(xún)
客服在線
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }