无需统计库,在Python3.8中进行线性回归和矩阵计算

380 阅读10分钟

在Python 3.8中从头开始的计量经济学和统计学

用Wooldridge数据库了解全球变暖的来源,不需要统计库,或者如何在Python 3.8中进行线性回归和矩阵计算

建议

使用Python 3.8进行兼容性测试,在MacOS 11.3和Linux Ubuntu Server 20.04 LTS环境下执行。

使用的库:Numpy, Pandas, Bokeh, SciPy。

medium.com/media/accd0…

为了使程序可以在最少的人为干预下执行,并优化其在服务器上的部署,已经实现了升级、数据下载和异常处理的自主性,特别是在server_SMTP类中。

medium.com/media/522e9…

源代码将首先观察其执行所需的库的存在,然后,在没有库的情况下下载它们,以便自动更新执行环境的软件配置。在同一模式下,数据库的副本将从louisbrulenaudet.com网站下载,以避免与不同机器上的访问路径的写入有关的冲突,通过对SSL证书的验证拐点。

medium.com/media/0143b…

变量的描述性分析

为了简化源代码的阅读,我们创建了一个集中指令子块的功能,允许对分散和位置进行各种计算。

medium.com/media/42449…

第一个可能的解释是,平均值几乎系统地高于每个系列的中位数,世界上的二氧化碳总排放量就是如此,或者被解释的变量:平均温度(分布大多向右不对称)。第二个观察,水泥生产和燃烧的二氧化碳排放水平大大低于天然气、石油或煤炭生产的二氧化碳排放。具体来说,后两个因素的二氧化碳排放量是我们数据库中已知的最大的。务实地说,为了提高用户体验,通过提供HTML/JavaScript的交互式图形,所有的表述都可以在线访问。因此,点击这里可以看到解释变量和被解释变量随时间变化的亮点(垂直滚动的页面)。图形显示证实了我们的直觉,我们观察到所有解释变量和被解释变量随着时间的推移都在增长,除了燃烧产生的二氧化碳排放和水泥生产产生的二氧化碳排放之外。我们观察到一次能源消费的准线性增长,而二氧化碳排放总量的增长则稍显不规则。被解释的变量在长期内显示出不可否认的增长,但在中期内(半个世纪的规模)更值得怀疑。

为了限制库的使用,所有的统计分析都是由专有的指令块开发的。根据定义,一个统计序列的经验方差却有偏差,因为 。

然而,如果n>1,根据线性期望,通过将样本上测得的方差乘以......得到的估计方差。

是一个收敛的、无偏的西格玛平方的估计器。因此,源代码中应用的公式分别为。

对所有解释变量都观察到相对较大的标准差值,但燃烧产生的二氧化碳排放和水泥生产除外,这与每个样本值之间的大小分散是同义的,从而肯定了没有随时间变化的不变性和变化的趋势(通过图形分析得到的增长)。

相关关系和简单的线性回归

在我们剩下的工作中,我们试图与解释变量和被解释变量之间的独立性假设相矛盾,以实现最接近平面内每个点云的仿生调整。

medium.com/media/2b6a8…

第一个观察结果是,皮尔逊相关度(一个无量纲的量)是协方差的归一化形式,量化了两个变量对各自预期的联合偏差,对于上述所有的解释变量来说,皮尔逊相关度相对较高,反之,对于燃烧产生的二氧化碳排放量来说,皮尔逊相关度较低。然而,由于没有一个变量的相关系数低于0.1,我们可以估计它们都是被解释变量的或多或少的依赖来源。总的来说,二氧化碳排放和一次能源消耗是与温度最相关的两个解释变量。在我们的分析中测试的回归是基于普通最小二乘法,即最小化回归云的每个点和其预测的残差之和。因此,简单回归模型试图通过定义β系数矢量的最佳无偏估计值来建立两个变量之间的线性关系。

系数β1被解释为一个额外单位的解释变量对被解释变量的边际效应。对于单变量线性回归,R平方被定义为SES回归解释的方差与SST总方差的比率,衡量数据与拟合回归线的接近程度。因此,决定系数接近于1,表明该模型解释了响应数据在平均值周围的所有变异性,反之,系数降低则表明该回归没有解释变量之间的依赖关系。在我们的研究中,我们观察到,最重要的拟合系数是温度对气体生产的二氧化碳排放的回归。这一结果再次证实了我们的假设。我们可以尝试解释的一个反常现象是与石油生产的二氧化碳排放相关的低相关系数。从图形上看,我们观察到分布将接近一个指数函数,这将解释与线性回归定义本身的不匹配。出于这个原因,所有的回归都可以通过点击这里获得。另一个观察是与燃烧产生的二氧化碳排放有关的β1系数。诚然,相对于其他的,这个系数是非常高的,然而,非常低的决定系数向我们表明了回归的缺乏意义。这一批评在数学上反映在标准误差和P值的相对较大值上。对统计学意义进行量化,其接近0.05的数值表明,如果无效假设得到验证,可能会出现同样的结果。与这个变量不同,所有其他回归的P值都具有统计学意义。关于t统计量,我们发现了我们的直觉,即摒弃了石油生产中二氧化碳排放的异常情况,最重要的回归结果是天然气生产、一次能源消费和二氧化碳排放总量。

简单线性回归的主要缺点是存在遗漏的变量偏差。因此,除了同时性之外,当一个被遗漏的变量同时影响到被解释变量和解释变量时,解释变量和误差项之间就会出现相关关系。这将使我们能够解释我们的反常现象。限制这种偏差的一种方法是在多元线性回归中引入几个解释变量。为了做到这一点,我们首先将数据归一化,以避免对梯度下降算法的性能产生任何负面影响。由于平均温度的值可能是负的,我们没有采用对数转换,而是采用标准转换,即 。

然后,这种比例使我们能够补偿每种排放物之间的巨大水平差异。

相关性和多元线性回归

梯度下降算法的目的是可微调优化。因此,它的目的是最小化一个定义在欧氏空间上的可分实数函数。该算法是迭代式的,通过连续的改进来进行,直到收敛。然后我们尝试最小化梯度,即导数的多维概括。学习系数将被定义为一个参数,允许调节修正,并延伸到收敛的速度。在我们的模型框架内,我们发现...。

为了优化训练系数α和回归的β系数的确定,将产生一个可能的值列表,对每个值进行迭代,以便只保留多元回归的最高确定系数。

medium.com/media/7b161…

根据经验,我们发现R平方为0.900927,这证实了我们关于遗漏变量偏差的建议。事实上,我们从未在简单的线性回归中获得过如此高的统计结果。

中期和长期的预测

根据这一观察,我们可以通过在所有条件相同的情况下,对每个变量进行变化,建立对中长期平均温度值的预测,包括上升和下降。因此,我们将能够确定实施哪些措施来降低全球温度。在我们的分析中,我们决定根据我们数据库中每个变量的最后已知值,分别进行5%、10%、25%、50%、100%和200%的上升和下降变化。

medium.com/media/f231c…

我们观察到,在短期和中期,影响是模糊的,然而,从长期来看,我们发现,石油、天然气和水泥生产的二氧化碳排放的大幅增加,对平均温度有很大影响。水泥在我们的讨论开始时没有涉及,但这一发现与简单线性回归及其决定系数相关的β1的相对水平特别有共鸣。如果它的增长呈现出非常大的规模,它甚至似乎是长期内的第二大二氧化碳排放源。这种影响由两个因素解释:水泥厂熟料的制造需要石灰石的脱碳,石灰石是自然界最稳定的钙的形式,它在二氧化硅的存在下烧制。

因此,减少全球二氧化碳排放的假设之一是促进使用非碳化的替代燃料来替代化石燃料,这似乎与平均温度的上升高度相关。天然气必须经过处理,包括消除腐蚀性元素,如硫磺,而这些过程都是促使二氧化碳排放到大气中的元素。另一个选择是使用木质颗粒进行家庭供暖,或使用热泵。然而,在生活舒适度和减少气体排放之间实现完美平衡的解决方案似乎很难找到。事实上,只用电来取暖,而且是完全可再生的电力来源,如风力发电,这似乎是一种乌托邦。然而,不可否认的是,就二氧化碳而言,通过原子裂变生产电力似乎是污染最小的解决方案之一。它甚至是光伏发电的一个更好的替代品,光伏发电的二氧化碳产量在100至200克/千瓦时之间,比核电高三倍。最后,根据西欧国家正在实施的公共指令,减少由石油生产引起的排放似乎是降低全球温度的一个主要改进轴。这就提出了与天然气相同的问题,即如何找到一种可获得的系统,像石油一样多功能和高效,同时减少温室气体的生产?

照片:NOAAonUnsplash

电力的建议又成为了一个奇迹般的解决方案,除了它的存储,需要使用锂电池,一种碱性金属,如今很难以较低的成本回收。在交通领域,氢气似乎也是一个有趣的发展前景,还有由有机材料生产的生物燃料。然而,我们的多元回归对一次能源消费的影响以及对煤炭生产的影响仍然不明确,尽管其决定系数表明对全球温度的依赖。让我们用我们的系统中其他条件相同的变化的倒数来结束我们的分析,对每个变量起负作用。乌托邦式的,我们提出的措施将使我们能够降低全球温度。

注:由于原始数据库的规模较小,可能存在遗漏变量的偏差,这是我们的分析所产生的异常现象的根源。温室气体的其他来源一定存在,而且地球变暖与人类活动无关的可能性也没有被忽视。