关于月份的描述统计和方差分析
主要考虑里程数随时间变化的思路及数据分析 文献综述:
首先,对数据进行描述性统计,如下表:
而从箱线图可以看到个月的里程数大致成U型。因此可以做出初步假设,1、2、12这三个月属于旺季月份。将这三个月份记作“1”,剩余的月份记作“2”,进行方差分析,结果见表2。可以看到结果是西安、厦门是不显著的,而其他城市则较为显著。则可以认为在除西安和厦门外的其他城市,这三个月的确对里程数有影响。所以在做结论时可将这三个月份单独考虑。
图1 各个月份里程数的直方图
图2 各个月里程数的箱线图
通过上表可知,对于淡旺季的分类对于大部分城市的数据还是比较显著的,即这些城市的货运量有明显的季节影响——则考虑,对淡季和旺季内的城市用同样的租车策略。
首先,对于个人和公司两种方式,可以看出租车金额都关于里程数线性增长。进行简单数学运算,找到两种方式的临界点
L0
175L0200060L0L01740
LL0时,个人方式比较好;LL0时,公司方式比较好
下面,分别将六个城市的数据合并,对淡季和旺季的货运量作分位数的Bootstrap枢轴量的95%的置信区间,来确定淡季和旺季的里程数与1700的关系,进而对租车策略进行决策。
首先,对旺季(1月、11月、12月)进行百分位数区间估计。为了决策,我们要考虑这个时间段中1700以尽可能大的概率被覆盖。因此,对多个分位数进行置信区间的检验,过程如下:
peak=c(2260,2960,2100,2260,4256,1921,1700,2310,1800,1900,1730,2170,3170,2180,2170,4327)
dull=c(1930,1630,2830,1537,2920,1546,1930,1473,1970,1765,3124,2167,1504,1601,1503,1392,1273,1586, 1489,1423,1500,1383,1430,1640,2260,1269,2530,3220,1500,1200,1354,2154,1642,1436,1639,1482,1372,1350,1821,1332,1350,2100,
1320,1350,1930,2580,2150,2300,1380,1876,1800,1183,1280,1600)
##对数据组中的各分位数进行计算 quantile=quantile(peak,seq(0,1,0.05)) >quantile
0% 5% 10% 15% 20% 25% 30% 35% 40% 1700.00 1722.50 1765.00 1825.00 1900.00 1915.75 2010.50 2117.50 2170.00
45% 50% 55% 60% 65% 70% 75% 80% 85% 2170.00 2175.00 2200.00 2260.00 2260.00 2285.00 2472.50 2960.00 3117.50 90% 95% 100% 3713.00 4273.75 4327.00
##考虑对20%,30%,50%(中位数)进行置信区间的估计
##20%百分位数: Quan=quantile(peak,0.2) TBoot1=NULL n=10 B=1000
SD1.peak=NULL for(i in 1:B) {
Sample1=sample(peak,n,T) Tboot1=quantile(Sample1,0.2) TBoot1=c(TBoot1,Tboot1)
SD1.peak=c(SD1.peak,sd(TBoot1)) }
TBoot1[1000]
Lcl2=2*Quan-quantile(TBoot1,0.975)
Ucl2=2*Quan-quantile(TBoot1,0.025) peakPIVOTAL=c(Lcl2,Ucl2) peakPIVOTAL 得到[1572,2076]
##30%分位数
Quan=quantile(peak,0.3) TBoot1=NULL n=10 B=1000
SD1.peak=NULL for(i in 1:B) {
Sample1=sample(peak,n,T) Tboot1=quantile(Sample1,0.3) TBoot1=c(TBoot1,Tboot1)
SD1.peak=c(SD1.peak,sd(TBoot1)) }
TBoot1[1000]
Lcl2=2*Quan-quantile(TBoot1,0.975) Ucl2=2*Quan-quantile(TBoot1,0.025) peakPIVOTAL=c(Lcl2,Ucl2) peakPIVOTAL 得到[1761,2251]
##中位数
Mep=median(peak) TBoot=NULL n=10 B=1000
SD.peak=NULL for(i in 1:B) {
Sample=sample(peak,n,T) Tboot=median(Sample) TBoot=c(TBoot,Tboot)
SD.peak=c(SD.peak,sd(TBoot)) }
TBoot[1000]
Lcl1=2*Mep-quantile(TBoot,0.975) Ucl1=2*Mep-quantile(TBoot,0.025) peakPIVOTAL=c(Lcl1,Ucl1) 得到置信区间[1635.0 ,2439.5]
由上面的结果,利用bootstrap方法计算的20%~50%的百分位数的置信区间都包含了1740,并且区间大部分位于大于1740的位置。故可以认为旺季的大部分里程数是大于1740的,故在旺季的三个月,在六座城市均采用个人方式租车。
继续运用上面的方法,对淡季进行估计。
首先,对样本进行合并,考虑货运量在不同月份之间的变化有没有趋势。取数据中大于1740的为1,小于的为0,对数据做Cox-Staut趋势性检验。
【注:此处在合并数据时,将不同城市同一月份之间的数据放在一起,再将所有数据按照月份排列】
for(i in 1:length(dull)) {
if (dull[i]>1740) dull[i]=1 else
dull[i]=0 } >dull
[1] 1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 [37] 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 0
##考虑数据的出现与时间是否有关系(即从文献中获得的信息),这些数据是否是随机分布的,对变化过的数据进行随机游程检验;若拒绝原假设,再考虑与数据显示出的趋势,则需要再进行cox-staut趋势检验。
下面进行随机游程检验: > run1=as.factor(dull) >runs.test(run1)
Runs Test
data: run1
Standard Normal = -0.6446, p-value = 0.5192 alternative hypothesis: two.sided
可知,并不能拒绝原假设,并不能认为数据的出现不随机,则接下去不进行趋势检验。
既然认为数据随机出现,就说明选择哪一种租车方式其实并没有一个明确的指向性。但是,考虑到这种思路只是粗略地对数据进行了淡季、旺季两个分组,并且合并数据时,并没有仔细考虑城市之间的差异。这是因为思路和方法上的缺陷使检验结果不能使人信服。之后的方法与思路会仔细就这一点进行讨论。
为了对决策做出一个有力的支持,还是用Bootstrap方法对不同百分位数进行区间估计。结果如下: ##淡季数据的分位数:
quan=quantile(dull,seq(0,1,0.05)) >quan
0% 5% 10% 15% 20% 25% 30% 35% 40% 1183.00 1271.60 1323.601350.00 1364.80 1385.25 1429.30 1477.95 1500.00
45% 50% 55% 60% 65% 70% 75% 80% 85% 1503.85 1566.00 1605.351639.80 1780.75 1881.40 1930.00 2120.00 2171.65 90% 95% 100% 2461.00 2861.50 3220.00
依然使用上述Bootstrap方法,分别对10%,20%,30%,40%,50%,60%,70%,80%,90%的百分
由上述结果可以看到,置信区间的跨度比较大,但是我们仍然根据其中一些比较直观的结果进行大胆的推断。如中位数的置信区间并未超过1740,则就可以在源数据中找到中位数对应的月份,在其之前的月份可以认为里程数是小于1740的,则选择租用公司的方式。同样,90%所对应的也有比较大的把握,其对应的月份里程数大于1740,则选择租用个人的方式。对于其中不能判断的,则需要考虑上述所说的,忽略掉的城市之间的差异性,留待下面的方法进行讨论。