数据来源:榛果民宿爬虫数据
根据之前初步可视化得到的数据,我们认为,可以对月流水~价格,月流水~入住率之间的关系进行线性回归分析:
在此,我们还是要对其他因素进行相关关系的分析,以验证之前的结论是否正确。对于非数值型,即逻辑型元素,我们会用逻辑回归分析来解决。
1. 年龄-价格
2. > cor(data[,2],data[,3])
3. [1] 0.1694674
4. 年龄-入住率
5. > cor(data[,2],data[,5])
6. [1] 0.05836035
7. 年龄-月流水
8. > cor(data[,2],data[,6])
9. [1] 0.08120197
10. 价格-入住率
11. > cor(data[,3],data[,5])
12. [1] 0.2360558
13. 价格-月流水
14. > cor(data[,3],data[,6])
15. [1] 0.7449479
16. 入住率-月流水
17. > cor(data[,5],data[,6])
18. [1] 0.7738394
可见,年龄和入住率有轻微的关联,价格和月流水相关关系较强,入住率和月流水的相关关系较强。下面将以上关联数据图形化,用散点图展示:
可见,入住率和价格与月流水之间有近似的线性关系,其中存在的误差因素:数据中有两室一厅及更高户型的价格会更高一些,在入住率不高的情况下也会有着较高的月流水,还有其他一些因素,这里不再赘述
下面进行进一步的相关性测试:
年龄-入住率
1. > cor.test(data[,2],data[,5],method='spearman')
2.
3. Spearman's rank correlation rho
4.
5. data: data[, 2] and data[, 5]
6. S = 2554972, p-value = 0.1406
7. alternative hypothesis: true rho is not equal to 0
8. sample estimates:
9. rho
10. -0.09520067
11.
12. Warning message:
13. In cor.test.default(data[, 2], data[, 5], method = "spearman") :
14. 无法给连结计算精確p值
价格-月流水
1. > cor.test(data[,3],data[,6],method='spearman')
2.
3. Spearman's rank correlation rho
4.
5. data: data[, 3] and data[, 6]
6. S = 768090, p-value < 2.2e-16
7. alternative hypothesis: true rho is not equal to 0
8. sample estimates:
9. rho
10. 0.6707547
11.
12. Warning message:
13. In cor.test.default(data[, 3], data[, 6], method = "spearman") :
14. 无法给连结计算精確p值
入住率-月流水
1. > cor.test(data[,5],data[,6],method='spearman')
2.
3. Spearman's rank correlation rho
4.
5. data: data[, 5] and data[, 6]
6. S = 446369, p-value < 2.2e-16
7. alternative hypothesis: true rho is not equal to 0
8. sample estimates:
9. rho
10. 0.8086619
11.
12. Warning message:
13. In cor.test.default(data[, 5], data[, 6], method = "spearman") :
14. 无法给连结计算精確p值
经证实,入住率,价格与月流水之间的相关性异常显著
下面,进行假设检验和简单线性回归分析
注:数据对最大值和最小值进行了删除处理
价格-月流水
1. > dt<-data[,c(3,6)]
2. > dt
3. 价格 月流水
4. 1 104 2912
5. 2 108 3348
6. 3 108 1512
7. 4 108 1404
8. > summary(dt)
9. 价格 月流水
10. Min. : 25.0 Min. : 37
11. 1st Qu.:149.0 1st Qu.: 2388
12. Median :188.0 Median : 4108
13. Mean :191.4 Mean : 4074
14. 3rd Qu.:218.0 3rd Qu.: 5346
15. Max. :488.0 Max. :12688
16. > mod_simp_reg<-lm(月流水~价格,data=dt)
17. > summary(mod_simp_reg)
18.
19. Call:
20. lm(formula = 月流水 ~ 价格, data = dt)
21.
22. Residuals:
23. Min 1Q Median 3Q Max
24. -6249.7 -831.2 513.2 1142.2 2651.1
25.
26. Coefficients:
27. Estimate Std. Error t value Pr(>|t|)
28. (Intercept) -889.132 306.025 -2.905 0.00401 **
29. 价格 25.937 1.502 17.263 < 2e-16 ***
30. ---
31. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
32.
33. Residual standard error: 1628 on 239 degrees of freedom
34. Multiple R-squared: 0.5549, Adjusted R-squared: 0.5531
F-statistic: 298 on 1 and 239 DF, p-value: < 2.2e-16
简单线性回归方程如下:
月流水=-899.132+25.937*价格
入住率-月流水
1. > dt<-data[,c(5,6)]
2. > dt
3. 入住率 月流水
4. 1 0.90322581 2912
5. 2 1.00000000 3348
6. 3 0.45161290 1512
7. > summary(dt)
8. 入住率 月流水
9. Min. :0.03226 Min. : 37
10. 1st Qu.:0.45161 1st Qu.: 2388
11. Median :0.77419 Median : 4108
12. Mean :0.66270 Mean : 4074
13. 3rd Qu.:0.87097 3rd Qu.: 5346
14. Max. :1.00000 Max. :12688
15. > mod_simp_reg<-lm(月流水~入住率,data=dt)
16. > summary(mod_simp_reg)
17.
18. Call:
19. lm(formula = 月流水 ~ 入住率, data = dt)
20.
21. Residuals:
22. Min 1Q Median 3Q Max
23. -3318.5 -863.3 -127.5 414.9 7431.2
24.
25. Coefficients:
26. Estimate Std. Error t value Pr(>|t|)
27. (Intercept) -379.0 255.9 -1.481 0.14
28. 入住率 6719.6 355.8 18.888 <2e-16 ***
29. ---
30. Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
31.
32. Residual standard error: 1545 on 239 degrees of freedom
33. Multiple R-squared: 0.5988, Adjusted R-squared: 0.5971
F-statistic: 356.8 on 1 and 239 DF, p-value: < 2.2e-16
简单线性回归方程如下:
月流水=-379+6719.6*入住率
根据和质量相关的统计数据来看,变量之间存在着较佳的关联。评判标准:
1,标准误差残差Residual standard error: 要很低
2,调整后的R平方值,Multiple R-squared: 需要较高,可显示变量之间的良好关系
3,p-value要小,显示模型的显著性
下面,我们检验回归假设:
月流水~入住率之间,接受模型可用之前,我们需要建设回归假设是否为真
线性关系检验:
#可绘制残差与自变量的相应值
误差的独立性检验:
1. #对于通过回归线附近误差的独立性检验,由于数据是在相同时间段内收集的,不需要进行此检验
2. >library(lmtest)
3. >dwtest(mod_simp_reg)
4.
5. Plot(mod_simp_reg)
正态性检验
残差大部分位于直线上,说明残差是近似正态分布的
Scale-location plot
随着点在线周围的分布,因而确定恒定方差(同方差性)的假设
下面,使用library car中的crPlots 来理解由模型表示的线性关系
1. > library(car)
2. > crPlots(mod_simp_reg)
可见,对模型进行模拟的效果基本可靠,可以通过验证回归假设的检验
模型通过验证后,即可预测响应变量,这里假设入住率为0.93:
1. > predictor<-data.frame(入住率=0.93)
2. > predicted<-predict(mod_simp_reg,newdata=predictor)
3. > predicted
4. 1
5. 5870.216
6. #范围预测:
7. > predicted<-predict(mod_simp_reg,newdata=predictor,interval='prediction')
8. > predicted
9. fit lwr upr
1 5870.216 2813.828 8926.604
补充说明:从模型可以看出,截距为-4000多,不太符合实际,房屋租金1800,入住率为0时,其他的费用总和应该在500元左右,因此,可强制设置截距为0
1. > mod_simp_reg_wo_intercept<-lm(dt$月流水~dt$入住率+0)
2. > crPlots(mod_simp_reg_wo_intercept)
这样的图相对来说更符合实际