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

熱線電話:13121318867

登錄
首頁精彩閱讀如何用R語言對城管事件數(shù)據(jù)分析
如何用R語言對城管事件數(shù)據(jù)分析
2016-08-18
收藏

如何用R語言對城管事件數(shù)據(jù)分析

這次使用主成分分析主要目的并不是降維,而是分析城管數(shù)據(jù)中的事件類別之間是否存在關(guān)系,當(dāng)然,城管事件類型有好幾百,這里就只選取從去年九月到目前發(fā)生量前十的事件類別;如下圖,排名前十的事件類別依次為,車輛亂停放,亂堆物料堆,非法張貼小廣告,店鋪出店經(jīng)營,自備容器外放,違規(guī)標(biāo)語宣傳品,機(jī)動車亂停放,暴露垃圾,地面不潔,道路不潔。


確定好這十個類別后就是數(shù)據(jù)的提取了,這時候我們要注意一下數(shù)據(jù)結(jié)構(gòu),和數(shù)據(jù)樣本量,為什么呢?因為在主成分分析的時候事件類別只能是屬性,也就是說事件類別是一列;這時候看看一下城管數(shù)據(jù)里面存在的數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)記錄數(shù)必須是屬性的6~10倍,這時候觀察城管數(shù)據(jù)結(jié)構(gòu),明顯不是我們想要的。


于是寫個SQL轉(zhuǎn)換一下數(shù)據(jù)結(jié)構(gòu),起的別名沒有按照規(guī)則來,這是個失誤;


這時候就要使用R語言去做分析了,首先是讓我們能從數(shù)據(jù)庫里拿數(shù)據(jù),所以創(chuàng)建一個數(shù)據(jù)庫鏈接,安裝包RODBC

R語言代碼

install.packages("RODBC") library(RODBC) jixiao_connect <- odbcConnect("jixiao",uid="jixiao",pwd = "*****",believeNRows=FALSE)

這時候我們就創(chuàng)建了一個數(shù)據(jù)庫連接jixiao_connect,這時候我們就要提取數(shù)據(jù)

R語言代碼

jixiao_data <- sqlQuery(jixiao_connect," select sum(case when t.kind_code_thd='車輛亂停放' then 1 else 0 end) kind_one ,sum(case when t.kind_code_thd='亂堆物堆料' then 1 else 0 end) kind_two ,sum(case when t.kind_code_thd='非法張貼小廣告' then 1 else 0 end) kind_three ,sum(case when t.kind_code_thd='店鋪出店經(jīng)營' then 1 else 0 end) kind_code_4 ,sum(case when t.kind_code_thd='自備容器外放' then 1 else 0 end) kind_code_5 ,sum(case when t.kind_code_thd='違規(guī)標(biāo)語宣傳品' then 1 else 0 end) kind_code_6 ,sum(case when t.kind_code_thd='機(jī)動車亂停放' then 1 else 0 end) kind_code_7 ,sum(case when t.kind_code_thd='地面不潔' then 1 else 0 end) kind_code_8 ,sum(case when t.kind_code_thd='暴露垃圾' then 1 else 0 end) kind_code_9 ,sum(case when t.kind_code_thd='無照經(jīng)營游商' then 1 else 0 end) kind_code_10 from test_erkang t where t.district_name in ('美蘭區(qū)','龍華區(qū)','秀英區(qū)','瓊山區(qū)') GROUP BY T.DISTRICT_NAME,TO_CHAR(T.REVIEW_FIRST_DATE,'YYYYMM')") jixiao_data

驗證數(shù)據(jù)是否被提取,說明數(shù)據(jù)已經(jīng)提取成功


我們在安裝主成分需要用的包

R代碼

install.packages("psych") library(psych)

首先我們要做的是需要確定主成分需要幾個,這時候我們就需要cattell碎石檢驗來確定主成分個數(shù),也就是保留特征值大于1的主成分,因為特征值大于1的主成分能解釋較多的方差;

R代碼

fa.parallel(jixiao_date,fa='pc',n.iter = 100,show.legend=FALSE)


上圖中我們應(yīng)該選取3個主成分

R代碼

pc <- principal(jixiao_date,nfactors=3,rotate = 'varimax') pc

后面那個是我們選擇的主成分旋轉(zhuǎn)的方法,為了主成分之間能更容易的解釋,結(jié)果如下


PC1列下的系數(shù)是和各個事件類別的相關(guān)系數(shù),h2列表示成分能夠解釋方差的多少,u2列表示沒法解釋解釋方差的比例,事件KIND_ONE也就是車輛亂停放,主要相關(guān)聯(lián)的是主成分PC1,相關(guān)系數(shù)為0.97,PC2和PC3的相關(guān)系數(shù)分別為0.05,0.07,主成分能夠解釋車輛亂停放95%的方差,無法被解釋的比例為0.055;proportion var 表示解釋整個數(shù)據(jù)集的解釋程度,PC2解釋變量30%方差,PC1解釋變量26%方差,PC3解釋變量21%方差,主成分能夠解釋整個變量77%的方差;

對主成分進(jìn)行可視化

R代碼

fa.diagram(pc)


又上圖我們可以知道主成分組成,大致歸類為

PC1:無照經(jīng)營游商,暴露垃圾,車輛亂停放

PC2:亂堆物堆料,非法張貼小廣告,自備容器外放,機(jī)動車亂停放,地面不潔

PC3:店鋪出店經(jīng)營,違規(guī)標(biāo)語宣傳品;

根據(jù)業(yè)務(wù)和個人的推測

我推測PC1所表示的繁華的步行街道成分,PC2表示的是城中村成分,PC3表示的是主干道成分。

建議和小結(jié)

1、可以認(rèn)為亂堆物堆料,非法張貼小廣告,自備容器外放,機(jī)動車亂停放和地面不潔是一類相關(guān)聯(lián)事件類別,無照經(jīng)營游商,暴露垃圾和車輛亂停放是一類相關(guān)聯(lián)事件類別,店鋪出店經(jīng)營,違規(guī)標(biāo)語宣傳品可以認(rèn)為是一類相關(guān)聯(lián)的一類事件類型

2、可以認(rèn)定主要事件來源是來自城中村,主干道,和步行街道;

3、步行街道給的相應(yīng)的措施可以增加相應(yīng)的非機(jī)動的停車位,劃分小販經(jīng)營點,增加環(huán)衛(wèi)人員的清掃頻率

4、城中村:提高相應(yīng)的停車規(guī)劃,集中整治城中村環(huán)境衛(wèi)生

5:、主干道:相應(yīng)的增加巡查員的巡查頻率即可


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

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

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } 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)的第一個參數(shù)驗證碼對象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時表示是新驗證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".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 = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+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); }