熱線電話:13121318867

登錄
首頁精彩閱讀手把手教你使用R語言的主成分分析對城管事件數據分析
手把手教你使用R語言的主成分分析對城管事件數據分析
2016-10-16
收藏

手把手教你使用R語言的主成分分析對城管事件數據分析

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

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

于是寫個SQL轉換一下數據結構,起的別名沒有按照規則來,這是個失誤;

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

R語言代碼

install.packages("RODBC")

library(RODBC)

jixiao_connect <- odbcConnect("jixiao",uid="jixiao",pwd = "*****",believeNRows=FALSE)

這時候我們就創建了一個數據庫連接jixiao_connect,這時候我們就要提取數據

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='店鋪出店經營' 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='違規標語宣傳品' then 1 else 0 end) kind_code_6

,sum(case when t.kind_code_thd='機動車亂停放' 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='無照經營游商' then 1 else 0 end) kind_code_10

from test_erkang t

where t.district_name in ('美蘭區','龍華區','秀英區','瓊山區')

GROUP BY T.DISTRICT_NAME,TO_CHAR(T.REVIEW_FIRST_DATE,'YYYYMM')")

jixiao_data

驗證數據是否被提取,說明數據已經提取成功

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

R代碼

install.packages("psych")

library(psych)

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

R代碼

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

上圖中我們應該選取3個主成分

R代碼

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

pc

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

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

對主成分進行可視化

R代碼

fa.diagram(pc)

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

PC1:無照經營游商,暴露垃圾,車輛亂停放

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

PC3:店鋪出店經營,違規標語宣傳品;

根據業務和個人的推測

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

建議和小結

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

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

3、步行街道給的相應的措施可以增加相應的非機動的停車位,劃分小販經營點,增加環衛人員的清掃頻率

4、城中村:提高相應的停車規劃,集中整治城中村環境衛生

5:、主干道:相應的增加巡查員的巡查頻率即可

數據分析咨詢請掃描二維碼

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

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢