1. 程式人生 > >R語言中同比增長和環比增長

R語言中同比增長和環比增長

      同比增長:與上個週期的同一天或者同一個季度,進行對比。

      環比增長:與同個週期的不同天或者不同季度,進行對比。

      比如,本週星期三與上週星期三進行比較,就是同比,

                  本週星期三與本週星期二進行比較,就是環比。

      下面,以某個論壇的軍事科技版本的每日瀏覽量,來製造一個條形圖,並依據上週和本週資料分為兩組進行展示,進而分析同比增長與環比增長的區別。原始資料如表(一)所示。


      用R語言,將上述資料,轉化為條形圖。

data <- data.frame(pre=c(113,134,123,145,137,196,187),
				now=c(129,122,134,149,146,215,208));
ylim.max <- 550
col = c("azure4","brown4")
##將主副標題放到barplot函式裡,進行設定
##font=3,表示字型為“斜體”
##cex=1.5,表示字型放大1.5倍
barplot(as.matrix(rbind( data$pre,data$now)),
		beside=TRUE,ylim=c(0,ylim.max),col=col,axes=F,
		main=list( "本週pv趨勢分析圖",cex=1.5,col="red",font=3),
	 	sub=paste("範圍:2014.12.1--2014.12.7","\n","網站板塊:軍事科技"),
	 	ylab="網站日頁面瀏覽量pv"
		)
axis(2)

##畫圖例
text.legend = c("上週pv","本週pv","pv同比增長","pv環比增長")
col2 <- c("black","blue")
legend("topleft",pch=c(15,15,16,16), legend=text.legend,cex=0.8,col=c(col,col2),bty="n",
	   horiz=TRUE)

##畫刻度標記
text.x <- c("週一","週二","週三","週四","週五","週六","週日")
axis(side=1, c(2,5,8,11,14,17,20), labels=text.x,tick=TRUE, cex.axis=0.75)
axis(4,at=seq(from=250,length.out=7,by=40),labels=c("-60%","-40%","-20%","0","20%","40%","60%"))

##新增“同比增長曲線”和“環比增長曲線”
##同比增長 = (now[t]-pre[t])/pre[t]
same.pre.growth <- (data$now-data$pre)/data$pre
##環比增長 = (now[t]-now[t-1])/now[t-1]
ring.growth <- c(NA,diff(data$now)/data$now[1:(length(data$now)-1)])
a<-200;  b<-370;
lines(c(2,5,8,11,14,17,20), a*same.pre.growth+b,type="b",lwd=2)
lines(c(2,5,8,11,14,17,20), a*ring.growth+b,type="b",lwd=2,col="blue")

##在同比和環比曲線上新增文字
j <- 1
for(i in 1:length(data[,1])){ #在bar上畫數值
	text(3*i-1, a*same.pre.growth[i]+b-5, paste(round(same.pre.growth[i]*10000)/100,
			"%",sep=""));
	j <- j+1;
	text(3*i-1, a*ring.growth[i]+b+5, paste(round(ring.growth[i]*10000)/100,
			"%",sep=""),col="blue");
	j <- j+2;
}
##在pv柱狀圖上新增文字
j <- 1
for(i in 1:length(data[,1])){
	text(j+0.5,data$pre[i]+10, data$pre[i], col="deepskyblue4");
	j < j+1  #組內間距為1
	text(j+1.5,data$now[i]+10, data$now[i], col="deepskyblue4");
	j <- j+3 #組外間距為3
}


效果如下:


    圖(2)

  說明:PV 表示Page View ,頁面瀏覽量

             黑色的曲線,代表pv同比增長曲線

             藍色的曲線,代表pv環比增長曲線

      從圖(2)中可以看出,每週的週六和週日瀏覽量比較大,而星期一、星期二直到星期五的瀏覽量波動不大。瀏覽量的走勢是:先減小,後增大,再減小,接著反彈到波峰,跟著回到平均水平。可以這麼說,2014年12月6號週六,同比11月29號週六增長9.69%,環比12月5號週五增長47.26%

       具體計算如下:


圖(3) 同比與環比的計算方法