本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.
费尔南多现在已经构建了一个更好的模型。
price = -55089.98 + 87.34 engineSize + 60.93 horse power + 770.42 width
但是,费尔南多还有更多想法:
如何使用常见的比较单位来估算价格变化?
发动机大小、马力和宽度所预测的价格有多大弹性?
在本篇内容中,我们将解决这些问题。本文将介绍 双对数回归模型 (log-log regression model)。
为了理解双对数回归模型,我们首先来了解一下 导数(derivative)、对数(logarithm)、指数(exponential) 以及 弹性(elasticity) 的概念。
■ 导数
回到高中,导数可以说是数学教的最有意思的概念之一。
导数是一种表示变化的方式——函数在某个点上的变化量。
如变量y是x的函数,则将y定义为:
y = f(x)
则求y对x的导数,表示为:
dy/dx = df(x)/dx = f'(x)
其含义是:
y相对于x变化的变化,
即:如果x变化,y会有多少变化?
这正是费尔南多需要的,他想知道,受其他变量的变化的影响,价格又会有怎样的变化。
之前提到,多元回归模型的一般形式如下:
y = β0 + β1.x1 + β2.x2 + …+ βn.xn +
费尔南多建立的模型如下:
price = β0 + β1.发动机大小
即,将价格作为发动机大小的函数。
费尔南多用发动机大小对汽车价格求导。那是不是只是通过发动机大小的变化,就能体现出价格的变化?
并不是这幺简单。线性模型是用来表达线性关系的,如下:
y = mx + c
如果计算y对x的导数,则会给得出:
dy/dx = m . dx/dx + dc/dx
发动机大小本身的变化的导数始终为1,即dx/dx = 1
一个常数与其他任何变量相关的变化的导数始终为0,因为它是一个常数,其值从不改变,即dc/dx = 0
那幺公式就变成了:
dy/dx = m
在发动机大小上应用价格导数,将只能得到发动机大小的系数。
如何进行转换呢?接下来认识两个数学概念——指数和对数。
■ 指数
指数是一种具有两个运算符的函数,底数(b)和指数(n)。其被定义为b^n,形式如下:
f(x) = b^x
底数可以是任何的正数,欧拉数(e)是统计中常用的基数。
在几何上,指数关系具有以下的结构:
x的增长不会使得y相应增长,直到达到某个阈值
到达阈值后,x的小幅增长,会使y急速的上升
■ 对数
对数是一个有趣的概念。在回归模型中,对数具有一定特征。对数的基本属性是它的底数,典型的底数有2、10和e。
如:
多少个2相乘等于8?2 × 2 × 2 = 8,即答案是 3
也可以表示为 log2(8) = 3
以2为底数的8的对数为3。
对数和指数都有一个常用的底数,被称为 欧拉数(e) ,其近似值为 2.71828 。统计学中经常会用到e。以e为底数的对数称为自然对数。
对数也有很好的变换能力,对数可以将指数关系变换为线性关系。例如下图显示了y和x之间的指数关系:
如果将对数应用于x和y,则log(x)和log(y)之间的关系是线性的,看起来像这样:
■ 弹性
弹性是衡量一个变量对另一个变量变化的响应程度。假设我们有一个函数:Q = f(P),那幺Q的弹性定义为:
E = P/Q × dQ/dP
dQ/dP是P变化所引起的Q的平均变化
■ 结合在一起
现在让我们把导数、对数和指数这三个数学概念放在一起看。它们间的关系规则如下:
e的对数是1,即log(e)= 1
指数的对数是指数乘以底数
log(x)的导数是:1 / x
例如,一个函数y可以表示为:
y = b^x
则log(y) = x log (b)
那幺这对线性回归模型来说意味着什幺呢?我们是否可以灵活运用导数、对数和指数,重写线性模型方程,以得出由x的变化所引起的y的变化率呢?
首先,将y和x之间的关系定义为指数关系。
y = α x^β
首先将其表示为双对数函数:
log(y)= log(α)+β.log(x)
方程y = α x^β看起来并不像是回归模型:y =β0+β1.x1。当β0= log(α)、β1=β,这个等式可以重写为: log(y)=β0+β1.log(x1)
但它如何表达弹性关系呢?我们求相对于x的log(y)的导数,可得:
d. log(y)/ dx = β1. log(x1)/dx
=> 1/y . dy/dx = β1 . 1/x => β 1 = x/y . dy/dx
β1的方程就是弹性。
构建模型
搞清楚了这些概念后,让我们看看费尔南多如何重构模型:
log(价格) = β0 + β1. log(发动机大小) + β2. log(马力) + β3. log(车宽)
他希望根据发动机大小、马力和车辆宽度的变化,来估算汽车价格的变化。
经过对模型的训练,最终得到了如下的参数:
该模型的方程是:
log(价格) = -21.6672 + 0.4702.log(发动机大小) + 0.4621.log(马力) + 6.3564 .log(宽)
对该模型的解释如下:
所有系数都很重要
调整R平方值为0.8276,说明该模型解释了82.76%的数据变化
如果发动机大小增加4.7%,汽车价格将增加10%
如果马力增加4.62%,汽车价格将增加10%
如果汽车的宽度增加6%,汽车价格将增加1%
模型评估
费尔南多现在建好了双对数回归模型,接下来该通过训练和测试数据来评估模型的表现。
他之前已经将数据分成了训练集和测试集。对基于训练数据创建的模型来说,测试数据是不可见的数据。在测试数据上的表现,才是对模型的真正考验。
在训练数据上,模型表现很好,调整R平方值为0.8276,说明该模型可以解释82.76%的训练数据变化。为了使模型可以最终被接受,需要在测试数据上也有良好表现。
经过对模型的测试,计算得出0.8186的调整R平方值。这相当不错,意味着即使对于不可见的数据,模型也能解释81.86%的变化。
请注意,该模型估算的是log(价格),即价格的对数,而不是价格本身。想要估算汽车价格,需要进行转换。
即将log(价格)作为底数e的指数。
e^log(价格) = 价格
前几篇文章中,统计学习奠定了基础,假设检验讨论了零假设和替代假设,简单线性回归模型简化了回归,之后进入多变量回归模型的世界,又讨论了模型选择方法。而在这篇文章中,我们介绍了双对数回归模型。
到目前为止,构建的回归模型只涉及数值自变量。下一篇文章将讨论交互关系和定性变量的概念。
翻译:TalkingData
作者:Pradeep Menon
来源:Mudium
原文链接:https://towardsdatascience.com/data-science-simplified-part-7-log-log-regression-models-499ecd1495f0
Be First to Comment