数据集概述
- 使用互联网排名前1000的网站的数据
- Rank:排名
- PagaViews:网站访问量
- UniqueVisitors:独立访问用户数
- HasAdvertising:是否有广告
- InEnglish:主要使用的语言是否为英语
分析过程
1. 安装ggplot2绘图包,并加载
2. 加载数据集文件top_1000_sites.tsv
在加载本地数据文件的时候,注意需要对文件的路径中的 \ 符号进行转义 \\ 。否则会出现问题。
3. 使用绘制ppplot2函数绘制散点图
初步绘制PageViews和UniqueVisitors变量的散点图:
可以发现数据分布的很不均匀,集中在坐下角坐标原点附近。数据间差异太大时,可以考虑对数据进行log变换。
绘制log变换后的log(PageViews)和log(UniqueVisitors)变量的散点图
可以看到经过对数变换后,问题得到了改善
绘制根据InEnglish分类变量,对数据集进行分类显示
使用ggplot绘图函数,在绘制根据InEnglish分类变量对数据进行分类的同时,绘制线性模型统计层的回归模型的图像。
4. 初步创建回归模型
创建log(PageViews)和log(UniqueVisitors)变量的回归模型
创建 log(PageViews)与HasAdvertising+log(UniqueVisitors)+InEnglish的回归模型
5. 尝试优化log(PageViews)与HasAdvertising+log(UniqueVisitors)+InEnglish的回归模型
使用逐步回归方法,尝试优化该模型:
根据step()得到结果,可以发现:无论去掉当前回归模型中的哪一个变量,AIC值都是增大的。因此,step的结果与原来的回归模型相同。
再次使用drop1()方法,尝试优化该模型
得到的结果与step函数得到的结果相同。
6. 尝试处理分类变量HasAdvertising和InEnglish
由于在原始数据文件中,HasAdvertising和InEnglish分类变量的值为“Yes”和“No”,因此打算对此进行处理。首先将这两个变量的Yes和No分别映射为1和0的数值。然后,根据“虚拟变量”的处理方法,使用“加法模型”,创建HasAdvertisingYes、HasAdvertisingNo与InEnglishYes和InEnglishNo四个变量。并根据原HasAdvertising和InEnglish变量的数值进行赋值操作。如下:
注意:在第一次使用elseif函数的时候,由于我自己自定义了一个elseif函数,因此在后面使用系统中的elseif函数的时候,会出现错误。因此,需要使用rm()函数,对自定义的elseif函数进行删除,之后使用系统中elseif函数的时候,就可以正常使用。这就是黄色高亮代码的注释。
尝试重新建立线性回归模型:
由上图可见,在手动引入~Yes和~No两个“哑变量”的时候,该回归模型,并没有因此而优化,反而没有系统自动创建的~Yes和~No变量的模型的拟合效果好。为什么?