R语言用普通最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类

本文我们对逻辑回归和样条曲线进行介绍。

由Kaizong Ye,Coin Ge撰写

logistic回归基于以下假设:给定协变量x,Y具有伯努利分布,

目的是估计参数β。

回想一下,针对该概率使用该函数是

(对数)似然函数

对数似然

其中​。数值方法基于(数值)下降梯度来计算似然函数的 最大值。对数似然(负)是以下函数

现在,我们需要一个起始点来启动算法

在这里,我们得到

让我们在这里验证该输出是否有效。例如,如果我们(随机)更改起点的值会怎么样

这里有个问题。注意,我们不能在这里进行数值优化。我们可以考虑使用其他优化方法

最优点

结果不理想。

我们使用的技术基于以下思想,

问题是我的计算机不知道一阶和二阶导数。

可以使用这种计算的函数

以我们的OLS起点,我们获得

如果我们尝试另一个起点

一些系数非常接近。然后我们尝试其他方法。


R语言泊松Poisson回归模型分析案例

阅读文章


牛顿(或费舍尔)算法

在计量经济学教科书里,您可以看到:

在这里观察到,我仅使用该算法的十次迭代。


随时关注您喜欢的主题


事实是,收敛似乎非常快。而且它相当鲁棒,看看我们改变起点会得到什么

效果提高了,并且可以使用矩阵的逆获得标准偏差。

标准最小二乘

我们更进一步。我们已经看到想要计算类似

但是实际,这是一个标准的最小二乘问题

这里唯一的问题是权重Δold是未知β的函数。但是实际上,如果我们继续迭代,我们应该能够解决它:给定β,我们得到了权重,并且有了权重,我们可以使用加权的OLS来获取更新的β。这就是迭代最小二乘的想法。

该算法

输出在这里

结果很好,我们在这里也有估计量的标准差

标准逻辑回归glm函数:

当然,可以使用R内置函数

可视化

让我们在第二个数据集上可视化从逻辑回归获得的预测

这里的水平曲线-或等概率-是线性的,因此该空间被一条直线(或更高维的超平面)一分为二(0和1,生存和死亡,白色和黑色)此外,由于我们是线性模型,因此,如果更改截距(为创建两个类别的阈值),我们将获得平行的另一条直线(或超平面)。

接下来,我们将约会样条曲线以平滑那些连续的协变量。

分段线性样条函数

我们从“简单”回归开始(只有一个解释变量),我们可以想到的最简单的模型来扩展我们上面的线性模型, 是考虑一个分段线性函数,它分为两部分。最方便的方法是使用正部函数​(如果该差为正,则为x和s之间的差,否则为0)。如

是以下连续的分段线性函数,在s处划分。

对于较小的x值,线性增加,斜率β1;对于较大的x值,线性减少。因此,β2被解释为斜率的变化。

当然,可以考虑多个结。获得正值的函数如下

然后我们可以在回归模型中直接使用它

回归的输出在这里

因此,对于很小的值,原始斜率并不重要,但是在15以上时,它会变得明显为正。而在25以上,又发生了重大变化。我们可以对其进行绘图以查看发生了什么

使用bs()线性样条曲线

使用GAM模型,情况略有不同。我们将在这里使用所谓的 b样条曲线

我们可以用边界结点(5,55)和结 {15,25}定义样条函数

如我们所见,此处定义的函数与之前的函数不同,但是在每个段(5,15)(15,25)和(25,55)。但是这些函数(两组函数)的线性组合将生成相同的空间。换个角度说,对输出的解释会不同,预测应该是一样的。

观察到像以前一样存在三个系数,但是这里的解释更加复杂了

但是,预测结果很好。

分段二次样条

让我们再往前走一步…我们是否也可以具有导数的连续性?考虑抛物线函数,不要对​和​进行分解,考虑对​和​进行分解。

不出所料,这里有五个系数:截距和抛物线函数的三个参数,然后是中间两个附加项–此处(15,25)–以及右侧的部分。当然,对于每个部分,只有一个自由度,因为我们有一个抛物线函数(三个系数),但是有两个约束(连续性和一阶导数的连续性)。

在图上,我们得到以下内容

使用bs()二次样条

当然,我们可以使用R函数执行相同的操作。但是和以前一样,这里的函数有所不同

如果我们运行R代码,得到

预测是完全相同的

三次样条

我们可以使用三次样条曲线。我们将考虑对​进行分解,得到时间连续性,以及前两个导数的连续性。如果我们使用bs函数,则如下

现在的预测将是

结的位置

在许多应用程序中,我们不想指定结的位置。我们只想说(三个)中间结。可以使用

可以查看

它为我们提供了边界结的位置(样本中的最小值和最大值),也为我们提供了三个中间结。观察到实际上,这五个值只是(经验)分位数

如果我们绘制预测,我们得到

如果我们回到logit变换之前的计算,我们清楚地看到断点是不同的分位数

如果我们没有指定,则不会得到任何结…

如果我们看一下预测

实际上,这和二次多项式回归是一样的(如预期的那样)

相加模型 

现在考虑第二个数据集,包含两个变量。这里考虑一个模型

现在,我们能够得到一个“完美”的模型,所以,结果似乎不再连续

然后我们用glm函数来实现相加模型的思想。

当然,它是分段线性的,有超平面,有些几乎是垂直的。
我们也可以考虑分段二次函数

有趣的是,我们现在有两个“完美”的模型,白点和黑点的区域不同。 

在R中,可以使用mgcv包来运行gam回归。它用于广义相加模型,但这里只有一个变量,所以实际上很难看到“可加”部分,可以参考其他GAM文章。


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498