library(dplyr)
library(ggplot2)
library(tidyr)
原始資料:
可以看到日期是字串形式,現在將其轉換為數值型
menus
再次觀察:
> head(menus)
品名 日期 銷售額
1 關東煮 2015-03-01 4046
2 關東煮 2015-03-02 3437
3 關東煮 2015-03-03 3191
4 關東煮 2015-03-04 3499
5 關東煮 2015-03-05 3536
6 關東煮 2015-03-06 3841
針對飯糰繪製銷量隨時間的變化曲線
# 篩選行
fantuan % filter(品名 == '飯糰')
# 製作飯糰的時間序列圖
ggplot(fantuan, aes(日期, 銷售額)) + geom_line() + scale_x_date() + ggtitle('飯糰的銷售額')
接下來觀察各個麵條之間銷量的影響,要篩選出所有的麵條,我們需要更加複雜的語句
# 篩選出所有的麵條
noodles % filter(品名 %in% c('義大利面', '烏龍面', '拉麵', '什錦麵'))
> head(noodles)
品名 日期 銷售額
1 烏龍面 2015-03-01 8849
2 烏龍面 2015-03-02 6063
3 烏龍面 2015-03-03 6060
4 烏龍面 2015-03-04 6283
5 烏龍面 2015-03-05 7138
6 烏龍面 2015-03-06 9264
由於相關分析分析的變數需要單獨佔一列,而上述表頭顯然不符合要求,因而我們需要將長表轉為寬表
> noodles2 % spread(品名, 銷售額)
> head(noodles2)
日期 拉麵 什錦麵 烏龍面 義大利面
1 2015-03-01 17644 6245 8849 5947
2 2015-03-02 12756 4469 6063 5010
3 2015-03-03 13764 5159 6060 5263
4 2015-03-04 14670 4399 6283 5150
5 2015-03-05 13371 4791 7138 4883
6 2015-03-06 18845 6039 9264 6410
由於日期也是不相關的因子,因此我們將其去除:
> noodles2[,-1]
拉麵 什錦麵 烏龍面 義大利面
1 17644 6245 8849 5947
2 12756 4469 6063 5010
3 13764 5159 6060 5263
4 14670 4399 6283 5150
5 13371 4791 7138 4883
6 18845 6039 9264 6410
計算相關係數並繪製散點圖矩陣:
> noodles2[,-1] %>% cor
拉麵 什錦麵 烏龍面 義大利面
拉麵 1.0000000 0.9220467 0.9129860 0.9188441
什錦麵 0.9220467 1.0000000 0.9099195 0.9101794
烏龍面 0.9129860 0.9099195 1.0000000 0.8979937
義大利面 0.9188441 0.9101794 0.8979937 1.0000000
> noodles2[,-1] %>% pairs
如下圖所示的散點圖可用來快速分析,找出可能有所關聯的變數
我們可以看到相關因子有0.8,0.9,1.0等等,那我們該如何判斷相關關係大還是小呢?一般來說,有這樣幾條規則:
相關係數
相關程度
-1.0~-0.7
強負相關
-0.7~-0.3
弱負相關
-0.3~0.3
不相關0.3~0.7
弱負相關
0.7~1.0
強正相關
milk % filter(品名 %in% c('飯糰', '牛奶')) %>% spread(品名, 銷售額)
milk %>% ggplot(aes(飯糰, 牛奶)) +
geom_point(size = 2, color = 'grey50') +
geom_smooth(method = "lm", se = true) +
ggtitle('飯糰與牛奶的散點圖')
summary(lm(飯糰~牛奶, data = milk))
接下來重點看一下從summary得到的總結資訊
call: # 呼叫了哪些函式
lm(formula = 飯糰 ~ 牛奶, data = milk)
residuals: # 殘差,即實際觀察值與估計值(擬合值)之間的差,下面依次是最小值/四分位點/最大值
min 1q median 3q max
-9406.8 -2660.0 -870.2 3016.4 9643.9
coefficients: # 係數
estimate std. error t value pr(>|t|)
# 截距估計值 誤差 t值 p值(p值小於0.05,拋棄零假設即'斜率為零',採信備擇假設)
(intercept) 24125.0042 1238.8045 19.474 < 2e-16 ***
# 斜率估計值 誤差 t值 p值
牛奶 -3.2530 0.4911 -6.624 2.58e-09 ***
---signif. codes: 0 『***』 0.001 『**』 0.01 『*』 0.05 『.』 0.1 『 』 1
residual standard error: 3815 on 89 degrees of freedom
判定係數,越接近1越好,越接近0越差
multiple r-squared: 0.3302, adjusted r-squared: 0.3227
f統計量,p值
f-statistic: 43.88 on 1 and 89 df, p-value: 2.58e-09
相關係數和線性回歸分析通常乙個在前乙個在後,如果確認有較高的相關係數,才能採取回歸分析
php 對問卷結果進行統計
背景 由於具體工作的原因,我做了乙份紙質的問卷調查表,調查表的主要內容是讓使用者對10項要求 編號為a,b.進行優先順序排序,所以我得到的結果是好幾百份類似於a i h g d.等結果。目標 根據使用者的排序結果對這10項要求進行量化考評,最終的結果希望是a 78,b 68,c 70.以找出哪乙個要...
對大資料進行實時分析
大資料分析 bda 包括大資料的採集 儲存 分析 展示。而其中分析是bda的關鍵。說到分析,可以分為歷史分析和實時分析。上次我們著重提過了歷史分析,尤其是互動式歷史分析,當然還有批處理式的歷史分析。這次,我們回過頭來再談談實時分析,包括流處理 cep,等等。說到cep,複雜事件處理 complex ...
對大資料進行實時分析
大資料分析 bda 包括大資料的採集 儲存 分析 展示。而其中分析是bda的關鍵。說到分析,可以分為歷史分析和實時分析。上次我們著重提過了歷史分析,尤其是互動式歷史分析,當然還有批處理式的歷史分析。這次,我們回過頭來再談談實時分析,包括流處理 cep,等等。說到cep,複雜事件處理 complex ...