利用Excel自带的数据分析工具进行回归分析

该方法使用的是Excel自带加载项的回归分析工具。之所以利用Excel只是因为它的操作比较简单,自带的VBA很方便。不用涉及其他的代码操作。

回归分析通过对一组观察值使用“最小二乘法”直线拟合来执行线性回归分析。 本工具可用来分析单个因变量是如何受一个或多个自变量影响的。回归工具使用工作表函数LINEST。该函数在这里就不多说了,有兴趣可以自行查阅相关函数规则。

经过数据预处理部分,我们筛选了一部分数据列做接下来的分析,这些数据还是比较靠谱的。想利用这些数据来训练,预测出exam_avgscore的成绩。

首先进行数据列的相关性分析:

(对整个数据集做相关系数分析)

 上面这张图可以看到正相关与负相关对应的数据列。正相关以红色部分标出,负相关绿色。exam_avgscore在最后一列,最后一行。为了方便看到相关系数的大小变化,我把它转换为绝对值形式:

颜色越深相关系数越大。 

查阅了资料发现,对于相关性,相关系数的强弱仅仅看系数的大小是不够的。一般来说,取绝对值后,0-0.090为没有相关性,0.091-0.300为弱相关,0.301-0.500为中等相关,0.501-1.000为强相关。上图中显示的exam_avgscore与其他项为弱相关性。

通过比对,发现exam_avgscore列与其他列相关性都很弱,但又想通过其他数据列预测该列数据,查了原本的数据表,发现exam_avgscore为0的数据占大多数,于是试图删除这些数据行。

清除之后得出的相关系数如下:

感觉与未清除的差别不大,数据变化很小,之后想知道这两张表的数据变化。于是通过VBA代码,实现了矩阵的相减:

 下面的实现的VBA短短几行代码:

Sub 相减()
Dim i As Integer
Dim j As Integer

For i = 2 To 11
    For j = 2 To 11
    Worksheets("sheet3").Cells(i, j).Value = Worksheets("B").Cells(i, j).Value - Worksheets("C").Cells(i, j).Value
    Next
Next
End Sub

分析矩阵相减的结果,发现,清除数据为exam_avgacore=0的项,前后的相关系数差别肉眼看出来不大,但经过数据差值对比后,发现未删除之前的相关系数减去删除后的相关系数整体为负值,说明相关系数值变大,相关性更加明显。exam_avgscore=0的这些数据影响了整个数据集的总相关性。

之后画出了原始数据exam_avgscore数据列的直方图:

 果然发现,在分段0到5的数据中,就包含了24276条数据,占比58%左右,很明显能得出exam_avgscore=0的项有异常。删除数据之后,按照10,5,2的三种分段间隔,分别绘制了三个直方图,如下:

(分析直方图的比对结果)

看起来是不是舒服多了?!

直方图整体趋势基本上符合正态分布,所以不需要进行标准化处理。不过发现一些东西,有时候分段点太多反而会影响直方图图表的美观,比如上面的图二与图三,图二显得更加平滑流畅,图三就感觉有些坑坑洼洼的。

(分析回归结果)

之后通过Excel自带的数据分析工具,以exam_avgscore为输出列,其他数据列为输入列来进行回归分析,之后得出了回归分析表、方差分析表、回归系数表、残差表,下面我们来一个个看:

(回归统计表分析)

删除前 删除后

我们先结合删除后的回归统计表逐行说明一下:

Multiple R (复相关系数R):相关系数r,一般在-1~1之间,绝对值越靠近1则相关性越强,越靠近0则相关性越弱;

R square(复测定系数):相关系数r的平方,表达自变量x解释因变量y变差的程度,以测定量y的拟合效果;

Adjusted R Square调整后的R square,说明自变量能说明因变量百分比;这个例子复测定系数为0.1532,说明该自变量能解释因变量Y的15.32%。

标准误差:用来衡量拟合程度的大小,也用于计算与回归相关的其它统计量,此值越小,说明拟合程度越好;

回归统计表告诉我们最佳拟合线如何定义自变量和因变量之间的线性关系。两个最重要的度量是R方和调整R方。也就是上面的蓝色字体部分。R方统计量是拟合优度的指标,它告诉我们最佳拟合线解释了多少方差。R方的范围从0到1。在我们的例子中,R平方值为0.08,这意味着我们的行能够解释8%的方差,这好像不太行。需要后面的调整。

而且上面的标准误差比较大未删除之前标准误差为26,删除之后标准误差为17,显然误差变小,删除exam_avgscore=0的操作很有必要。

 (方差分析表)

参数解释

各个参数解释见上表。

方差分析表将平方和分解为其组成部分,以提供模型内变化的详细信息。

它包括一个非常重要的指标,显著性F(或P值),它告诉我们你的模型是否具有统计显著性。p值最常用的阈值是0.05。如果我们得到的值低于这个,就可以了。否则,我们需要选择另一组自变量。

P值即概率,反映某一事件发生的可能性大小。统计学根据显著性检验方法所得到的P 值,一般以P < 0.05 为显著, P<0.01 为非常显著,其含义是样本间的差异由抽样误差所致的概率小于0.05 或0.01。

在线性回归中,p<0.01(或者0.05)表示两个变量非常显著(显著)线性相关。

需要注意的是:在非线性回归中,不可以用p值检验相关显著性, 因为在非线性回归中,残差均值平方不再是误差方差的无偏估计,因而不能使用线性模型的检验方法来检验非线性模型,从而不能用F统计量及其P值进行检验。

F值是就是用来检验两组方差之间比较结果的统计量。简而言之,这意味着我们的结果可能不是由于随机性,而是因为一个潜在的原因。

(正态概率图)

 正态概率图用来检验一组数据是否服从正态分布。是实数与正态分布数据之间函数关系的散点图。如果这组实数服从正态分布,正态概率图将是一条直线。对于我们的例子,这接近概率分布。细看横坐标为0的那一部分,删除后拟合效果会变得更好。曲线的前面部分也不会变得那么突兀。

(分析回归系数表)

表一(删除前):

表二(删除后):

 

还是先来看各个参数:

Coefficients(回归系数):intercept对应截距项,其他值表示intercept下面对应变量的系数;

标准误差:误差值越小,表明参数的精确度越高;

t stat:T检验中统计量t值,用于对模型参数的检验,需要查表才能决定;

P-value:T检验对应的P值,当P<0.05时,可以认为模型在α=0.05的水平上显著,或者置信度达到95%;当P<0.01时,可以认为模型在α=0.01的水平上显著,或者置信度达到99%;

Lower 95% /Upper 95% /下限 95.0% /上限 95.0% : 95%置信区间的上下限值;

所谓的系数表以系数的形式分解回归线的组成部分。

在我们这个例子中,由上面的回归统计表、方差分析表、正态概率图分析知,删除exam_avgscore的数据行有利于接下来的数据分析与模型建立。所以之后用删除后的数据作为新的数据源。

再次细看回归系数表:

在上面的回归系数表二中,似乎每增加一个单位的章节系数点视频数,成绩会增加0.09;二增加一个单位的章节测试数,成绩会增加0.42;考试次数的增加,似乎会让总成绩会减少4.45,但是,我们真的能相信这个特征吗?

看上面的回归系数表二的蓝色字体部分,发现它的P值大于0.05,这意味着章节测试数在该统计中不显著,其他三项也是。

(分析残差表)

观测值

预测 exam_avgscore
(综合成绩)

残差

1

73.94838179

-61.44838179

2

73.98737933

-60.98737933

3

73.9561813

-60.4561813

4

73.97568007

-58.97568007

5

73.87038671

-58.87038671

6

73.87428647

-58.37428647

7

78.39484855

-62.39484855

8

73.81968991

-55.81968991

9

69.36742595

-49.03742595

10

69.44152127

-48.44152127

残差表反映了预测值与实际值之间的差异,通俗的说就是拟合值与观测值之差。它由我们的模型预测的值组成,这里就先贴出10的观测值对应的预测值和残差。

我们的马尔可夫假设规定残差δ服从N(0,σ²),为了便于观察和控制残差δ的大小,我们对δ进行标准化——得到δ/σ(标准化残差)服从N(0,1)也就是标准正态分布,这时候利用3σ准则我们就可以知道,若模型合格,那么会有大概68.26%的标准化残差落在-1到1这个区间上,大概95.44%的标准化残差落在-2到2这个区间上,99.74%的标准化残差落在-3到3这个区间上。落在(-2,2)与(-3,3)之间的点称为可疑值,(-3,3)之外的点称为异常值。

(改进模型)

第一遍分析完了,接下来开始改进我们的模型。如前所述,变量test_num()的p值大于0.05,因此让我们从分析中移除该变量来检查结果。之后将遵循上述所有步骤,但不包括上面蓝色字体对应的数据列(test_num(章节测试数)、test_avgscore(平均成绩)、work_num(作业数)、work_avgscore(作业平均成绩)列)。

接下来以剩下的五列(job_num(添加章节任务点数)、video_job_num(添加章节任务点视频数)、exam_num(考试次数)、student_pv(所教学生章节访问总量)、sign_active_num(签到数))作为输入、exam_avgscore作为输出,再次做一次回归分析。分析结果如下:

 由上表可知,标准误差为仍然比较大,R Square并没有达到理想的值。 

 残差表,标准差表:

残差:预测值与样本实际值之差;

在残差图中残差点越是没有趋势(随机,没有规律),回归结果越好;

由以上分析可以看到,回归的结果都不是很好。

(Excel做预测)

方程变为:

exam_avgscore =83.274 -0.018*job_num + 0.093*video_job_num – 4.520*exam_num – 0.004*student_pv – 0.395*sign_active_num

(换个方向实现预测——平时成绩)

回到刚开始的相关系数表:

发现相关性,黄色方框内平均成绩较为明显,于是换了条思路,通过其他因素预测平均成绩。于是以test_avgscore作为输出,其他项作为输入,通过回归分析,得出以下结果:

首先展示的是回归统计表:

 R平方能到0.99,标准误差为0.39,相对于第一遍分析小很多!这回归分析对test_avgscore的拟合效果较好,对接下来的分析很有帮助。下面是正态概率分布图:

 发现横坐标为0到60那一段,平均成绩为全为0!图的后面还有一个小的离群点。之后需要继续处理数据。接下来我做了一个关于test_avgscore的直方图:

显然还是像第一遍分析那样,含有0值的数据异常,需要进行清除异常数据。

删除含test_avgscore=0的数据之后,分析结果如下:

 该表的R平方还是很大,符合所想的预期结果,标准误差从之前的0.39降低到了0.19。是个很好的征兆!

 此时的正态概率分布图和直方图看起来还是比较舒服的!由前两项分析知道,test_avgscore=0的数据行中确实存在异常数据,删除这些数据后能提高之后的拟合度。

 下图是回归系数表的前段部分:

 蓝色字体部分的P值很明显大于0.05,在统计中不显著。之后去除这些蓝色的数据列,以剩下的数据列作为输入,再次进行回归分析,结果如下:

先看上面的回归统计表,前三项都达到了0.999以上,符合非常好的预期! 标准误差为0.19。再看回归系数表,标准误差要小很多。

下图是残差、标准差表:

下图是残差、标准差图:

(与第一遍分析时的残差图做对比)

为了比较突出test_avgscore模型的准确性,这里再展现一次第一遍分析exam_avgscore时做出的残差图:

是不是鲜明的对比!!!

这次的回归分析结果可以得出一个回归方程:

test_avgscore = 1.88 * test_num – 1.88 * work_num + 0.999 * work_avgscore

但是,仔细看这次的残差图,发现有几个点比较异常。

 这里用红色线条标出了三组异常点,为了保证模型的准确性,接下来我将进行清除异常操作。

 根据Excel的提示,对应的数据为观测值等于3274对应的点。

 回到3274这个点,对应的预测值前后相对比,确实有异常!

加上原始数据的表头,对应的数据应该是第3275行。进行删除处理。

其他两个异常点也同样操作。

异常值处理完后,得出的回归分析结果如下:

但删除时要特别注意,从行数小的删除!!!最好是先全部找出异常点,一起删掉!!

删除离群点之后的结果,第三次进行回归分析,结果如下:

回归系数表:

 残差标准、残差图:

老套路了,还是依次看上面的四张表。

看到这个结果还是挺震撼的,R平方居然可以到1,但这也不是不可能,标准误差可以达到e的负十四次方!已经很小了!之后来看回归系数表,很明显,表中出现了一个意外的东西:”#NUM!”。Excel表格出现错误,查阅了资料,判断这里错误的原因,很大的可能是表格中的数据太小,Excel无法表示。

看第一列,第二行数据为0,第四行数据居然为“1”!其他两项用科学计数法表示。第一行第三行数据是有的,但指数为负13和负17,使用在这里预测学生成绩好像意义不大。

为了证明参数是否“意外”出现,我保留了30位有效数字(Excel最多能保留这么多数字):

 放大看:

可以清楚的看到,这里最后一列的值趋近于1。

得出的回归模型即为:

test_avgscore = (2.131E-13) – (4.369E-17 * work_num) – 0.999 * work_avgscore

(个人的小总结)

本次数据分析的结果也逐渐得出,但回头想想,发现预测出test_avgscore有什么用?我唯一想到的就是:使用超星平台上网课的老师没有骗人,超星的开发人员也没有对学生成绩做了手脚。他们说:“你们最终的成绩,都通过章节测试数,作业平时成绩,之类的有关系哈!”

对,这句话的真实性我可以提供数据支撑。但总的来说,数据挖掘与分析不仅仅只是能证明随口说出的一句话的真实性,还有更深的地方需要我们探索。

(这是本次数据挖掘课程项目作业的一部分,该板块由我来负责。分析若有不当和需要优化之处,欢迎留言评论!感激不尽!)

 

猜你喜欢

转载自blog.csdn.net/qq_46351409/article/details/121598669