R语言逻辑回归Logistic回归分析预测股票涨跌

最近我们被客户要求撰写关于逻辑回归的研究报告,包括一些图形和统计输出。

视频:R语言逻辑回归(Logistic回归)模型分类预测病人冠心病风险

逻辑回归Logistic模型原理和R语言分类预测冠心病风险实例

,时长06:48

本文回答了关于逻辑回归的问题:它与线性回归有什么不同,如何在R中用glm()函数拟合和评估这些模型等等?

Logistic回归是机器学习从统计学领域的一种技术。它是用一个或多个解释变量对二项式结果进行建模的一种强大的统计方法。它通过使用逻辑函数估计概率来衡量分类因变量和一个或多个自变量之间的关系,这就是逻辑分布。

本R教程将指导你完成逻辑回归的简单执行。

  • 你将首先探索逻辑回归背后的理论:你将了解更多关于与线性回归的区别以及逻辑回归模型的样子。你还会发现多指标和序数逻辑回归。
  • 接下来,你将解决R中的逻辑回归问题:你不仅要探索一个数据集,还要使用R中强大的glm()函数拟合逻辑回归模型,评估结果并解决过拟合问题。

提示:如果你有兴趣将你的线性回归技能提高到一个新的水平,也可以考虑参加我们的R语言课程!
 

回归分析:简介

逻辑回归是一种回归分析技术。回归分析是一套统计过程,你可以用它来估计变量之间的关系。更具体地说,你用这套技术来模拟和分析一个因变量和一个或多个自变量之间的关系。回归分析帮助你了解当一个自变量被调整而其他变量被固定时,因变量的典型值如何变化。

正如你已经读到的,有各种回归技术。你可以通过观察三个方面来区分它们:自变量的数量、因变量的类型和回归线的形状。

线性回归

线性回归是最广为人知的建模技术之一。简而言之,它允许你使用线性关系来预测Y的(平均)数值,对于X的一个给定值,用一条直线。这条线被称为 "回归线"。

因此,线性回归模型是y=ax+b。该模型假设因变量y是定量的。然而,在许多情况下,因变量是定性的,或者换句话说,是分类的。例如,性别是定性的,取值为男性或女性。

预测一个观察值的定性反应可以被称为对该观察值进行分类,因为它涉及到将观察值分配到一个类别或等级。另一方面,经常用于分类的方法首先预测定性变量的每个类别的概率,作为进行分类的基础。

线性回归不能够预测概率。例如,如果你使用线性回归为二元因变量建模,所产生的模型可能不会将预测的Y值限制在0和1之内。 这里就是逻辑回归发挥作用的地方,你可以得到一个反映事件发生概率的概率分数。

Logistic逻辑回归

逻辑回归是分类技术的一个实例,你可以用它来预测一个定性的反应。更具体地说,逻辑回归是对性别属于某个特定类别的概率建模。

这意味着,如果你想做性别分类,其中反应性别属于男性或女性这两个类别中的一个,你将使用逻辑回归模型来估计性别属于某个特定类别的概率。

例如,给定长头发的性别的概率可以写成:。

Pr(gender=female|longhair)(缩写为p(longhair))的值将在0和1之间。那么,对于任何给定的longhair值,可以对性别进行预测。

鉴于X是解释变量,Y是因变量,那么你应该如何建立p(X)=Pr(Y=1|X)和X之间的关系模型?线性回归模型表示这些概率为。

这种方法的问题是,任何时候对编码为0或1的二元因变量进行直线拟合,原则上我们总是可以预测X的某些值的p(X)<0,其他值的p(X)>1。

为了避免这个问题,你可以使用logistic函数来建立p(X)的模型,对于X的所有值,它的输出在0和1之间。

对数函数总是会产生一个S型曲线,所以无论X的值是多少,我们都会得到一个合理的预测。

上述方程也可以重构为:

数量

被称为几率比,可以在0和∞之间取任何值。接近0和∞的几率值分别表示p(X)的概率非常低和非常高。

通过从上式中对两边取对数,你可以得到。

左手边被称为Logit。在一个逻辑回归模型中,增加一个单位的X会使对数改变β0。但无论X的价值如何,如果β1是正的,那么增加X将与增加P(X)相关,如果β1是负的,那么增加X将与减少P(X)相关。

系数β0和β1是未知的,必须根据现有的训练数据来估计。对于逻辑回归,你可以使用最大似然,一种强大的统计技术。让我们再来看看你的性别分类的例子。

你寻求β0和β1的估计值,将这些估计值插入p(X)的模型中,对于所有的女性样本,产生一个接近于1的数字,对于所有的非女性样本,产生一个接近于0的数字。

可以用一个叫做似然函数的数学方程来正式化。

选择估计值β0和β1是为了使这个似然函数最大化。一旦系数被估计出来,你就可以简单地计算出在任何长发的情况下是女性的概率。总的来说,最大似然法是拟合非线性模型的一个非常好的方法。

多项式Logistic回归

到目前为止,本教程只关注了二项式逻辑回归,因为你是将实例分类为男性或女性。多项式Logistic回归模型是二项式Logistic回归模型的一个简单扩展,当探索性变量有两个以上的名义(无序)类别时,你可以使用该模型。

在多项式逻辑回归中,探索性变量被虚拟编码为多个1/0变量。除了一个类别外,所有类别都有一个变量,所以如果有M个类别,就会有M-1M-1个虚拟变量。每个类别的虚拟变量在其类别中的值为1,在所有其他类别中的值为0。有一个类别,即参考类别,不需要它自己的虚拟变量,因为它是由所有其他变量都是0来唯一识别的。

然后,多叉逻辑回归为每个虚拟变量估计一个单独的二元逻辑回归模型。结果是M-1M-1二元逻辑回归模型。每个模型都传达了预测因素对该类别成功概率的影响,与参考类别相比较。

有序logistic逻辑回归

除了多叉逻辑回归,你还有有序逻辑回归,它是二叉逻辑回归的另一个延伸。有序回归是用来预测具有 "有序 "的多个类别和自变量的因变量。你已经在这种类型的逻辑回归的名称中看到了这一点,因为 "有序 "意味着 "类别的顺序"。

换句话说,它被用来分析因变量(有多个有序层次)与一个或多个自变量的关系。

例如,你正在进行客户访谈,评估他们对我们新发布产品的满意度。你的任务是向受访者提出一个问题,他们的答案介于满意-满意或不满意-非常不满意之间。为了很好地概括答案,你在回答中加入了一些等级,如非常不满意,不满意,中立,满意,非常满意。这有助于你观察类别中的自然秩序。

用glm进行R语言的Logistic回归

在本节中,你将研究一个二元逻辑回归的例子,你将用ISLR包解决这个问题,它将为你提供数据集,glm()函数一般用于拟合广义线性模型,将用于拟合逻辑回归模型。

加载数据

首先要做的是安装和加载ISLR包,它有你要使用的所有数据集。

在本教程中,你将使用股市数据集。该数据集显示了2001年至2005年间标准普尔500股票指数的每日收益率。

探索数据

让我们来探索一下。names()对于查看数据框上的内容很有用,head()是对前几行的一瞥,而summary()也很有用。

 

summary()函数为你提供了数据框架上每个变量的简单总结。你可以看到有成交量,收盘价,和涨跌方向。你将使用 "涨跌方向 "作为因变量,因为它显示了自前一天以来市场是上涨还是下跌。

数据的可视化

数据可视化也许是总结和了解你的数据的最快和最有用的方法。你将从单独探索数字变量开始。

直方图提供了一个数字变量的柱状图,它被分成若干个部分,其高度显示了属于每个部分的实例的数量。它们对于获得一个属性的分布特征是很有用的。

for(i in 1:8)hist(Smarket[,i]

这是极难看到的,但大多数变量显示出高斯或双高斯的分布。

你可以用盒状图和盒须图以不同的方式来观察数据的分布。盒子包括了数据的中间50%,线显示了中位数,图中的须线显示了数据的合理范围。任何在须线之外的点都是离群值。

for(i in 1:8) boxplot(Smarket[,i]

你可以看到,Lags和Today都有一个类似的范围。除此之外,没有任何离群值的迹象。

缺失数据对建模有很大影响。因此,你可以使用缺失图来快速了解数据集中的缺失数据量。X轴显示属性,Y轴显示实例。水平线表示一个实例的缺失数据,垂直块表示一个属性的缺失数据。


mis( col=c("blue", "red")

在这个数据集中没有缺失数据!

让我们开始计算每一对数字变量之间的相关性。这些成对的相关关系可以绘制在相关矩阵图中,了解哪些变量在一起变化。


corrplot(correlations, method="circle")

使用点表示法,蓝色代表正相关,红色代表负相关。点越大,相关度越大。你可以看到矩阵是对称的,对角线是完全正相关的,因为它显示了每个变量与自身的相关性。但是,没有一个变量是相互关联的。

我们来做一个数据图。有一个pair()函数可以将Smarket中的变量绘制成一个散点图矩阵。在这种情况下,"涨跌方向",你的二元因变量,是颜色指标。

看起来这里没有什么关联性。该类变量来自于变量今日收益,所以涨和跌做了划分。

让我们来看看按方向值细分的每个变量的密度分布。像上面的散点图矩阵一样,按方向绘制的密度图可以帮助看到涨和跌的方向。它还可以帮助了解一个变量的方向的重叠情况。

Plot(x=x, y=y, plot="density", scales=scales)

你可以看到,所有这些变量的方向值都是重叠的,这意味着仅凭一两个变量很难预测上涨或下跌。

建立Logistic回归模型

现在你调用glm.fit()函数。你传递给这个函数的第一个参数是一个R公式。在这种情况下,该公式表明方向是因变量,而滞后和成交量变量是预测因素。正如你在介绍中看到的,glm通常用于拟合广义线性模型。

然而,在这种情况下,你需要明确表示你想拟合一个逻辑回归模型。你通过将族参数设置为二项式来解决这个问题。这样,你就告诉glm()把拟合一个逻辑回归模型,而不是可以拟合glm的许多其他模型中的一个。

接下来,你可以做一个summary(),它告诉你一些关于拟合的信息。

正如你所看到的,summary()返回每个系数的估计值、标准误差、z-score和p值。看上去没有一个系数是显著的。它还给出了无效偏差(仅指平均值的偏差)和残差偏差(包含所有预测因素的模型的偏差)。两者之间的差异非常小,而且有6个自由度。

你把glm.fit()的预测结果分配给glm.probs,类型等于因变量。这将对你用来拟合模型的训练数据进行预测,并给我一个拟合概率的向量。

你看一下前5个概率,它们非常接近50%。

probs[1:5]

现在我将根据滞后期和其他预测因素对市场是上涨还是下跌做出预测。特别是,我将通过0.5的阈值将概率变成分类。为了做到这一点,我使用ifelse()命令。

 ifelse(probs > 0.5, "Up", "Down")

glm.pred是一个真和假的向量。如果glm.probs大于0.5,glm.pred调用 "Up";否则,调用 "False"。

在这里,你附上数据框架Smarket,并制作一个glm.pred的表格,这是上一个方向的上涨和下跌。你还可以取其中的平均值。

从表中看,对角线上的实例是你获得正确分类的地方,而对角线外的实例是你分类错误的地方。看起来你犯了很多错误。平均值给出的比例是0.52。

创建训练样本和测试样本

你怎么能做得更好呢?把数据分成训练集和测试集是一个好的策略。

#  生成训练和测试集
train = Year<2005
predict(glm.fit,newdata = Smarket[!train,],type = "response")

让我们详细看看这个代码块。

  • train等于比2005年少的那一年。对于所有小于2005年的年份,你会得到一个true;否则,我会得到一个false。
  • 然后你用glm.fit()重新拟合模型,只是子集等于'train',这意味着它只拟合小于2005年的数据。
  • 然后你再次对glm.probs使用predict()函数来预测大于或等于2005年的剩余数据。对于新的数据,你给了它Smarket,用!"train "作为索引(如果年份大于或等于2005,train为真)。你将类型设置为 "因变量 "以预测概率。
  • 最后,你对glm.pred再次使用ifelse()函数来生成上涨和下跌变量。

你现在做一个新的变量来存储测试数据的新子集,并把它叫做Direction.2005。因变量仍然是方向。你制作一个表格并计算这个新测试集的平均值。

Direction.2005 = Direction[!train]

比以前的情况还糟糕。怎么会出现这种情况?

解决过度拟合的问题

好吧,你可能对数据进行了过度拟合。为了解决这个问题,你要拟合一个较小的模型,使用Lag1、Lag2、Lag3作为预测因子,从而撇开所有其他变量。代码的其余部分是一样的。

#拟合一个较小的模型
glm(family = binomial, subset = train)

好吧,你得到了59%的分类率,不算太差。使用较小的模型似乎表现得更好。

最后,你对glm.fit做一个summary(),看看是否有任何明显的变化。

没有什么变得很重要,至少P值更好了,表明对性能的预测有所提高。

结语

所以,这个关于使用glm()函数和设置族为二项式建立逻辑回归模型的R教程就结束了。glm()并不假设因变量和自变量之间的线性关系。然而,它假定logit模型中的链接函数和自变量之间存在线性关系,我希望你能学到有价值的东西。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63463.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

预测股票涨跌看什么指标,如何预测明天股票走势

通达信精准预测股价主图指标公式 是不是可以去了未来 如何用公式将当日股票上涨幅度在M-N之间的股票当天及前几天的行情统计出来。 70 如何知道或者预测一个股票次日的开盘价&#xff1f; 。 在短线操作中&#xff0c;对目标个股次日的买入卖出价的测算是很重要的&#xff…

基于支持向量机SVM的沪深300股票预测股票涨跌方向

结果参考:https://www.bilibili.com/video/BV1nY411z7Kk/?spm_id_from=333.999.0.0 附完整代码+数据

以预测股票涨跌案例入门基于SVM的机器学习

SVM是Support Vector Machine的缩写&#xff0c;中文叫支持向量机&#xff0c;通过它可以对样本数据进行分类。以股票为例&#xff0c;SVM能根据若干特征样本数据&#xff0c;把待预测的目标结果划分成“涨”和”跌”两种&#xff0c;从而实现预测股票涨跌的效果。 1 通过简单…

GPT2中文新闻标题生成

向AI转型的程序员都关注了这个号&#x1f447;&#x1f447;&#x1f447; 机器学习AI算法工程 公众号&#xff1a;datayx 项目描述 本项目是一个带有超级详细中文注释的基于GPT2模型的新闻标题生成项目。本项目参考了GPT2-Chinese、GPT2-chitchat、CDial-GPT、GPT2等多个GPT…

中文新闻文本标题分类(基于飞桨、Text CNN)

目录 一、设计方案概述 二、具体实现 三、结果及分析 四、总结 一、设计方案概述 主要网络模型设计&#xff1a; 设计所使用网络模型为TextCNN,由于其本身就适用于短中句子&#xff0c;在标题分类这一方面应该能发挥其优势。 TextCNN是Yoon Kim在2014年提出的模型&#xff…

“无法登陆到你的账户”的问题解决方案

电脑打开后&#xff0c;winR打开命令窗口 输入&#xff1a;netplwiz 点击添加 ​​​​​​​点击添加方框内 点击本地账户 输入你要创建的账号那些&#xff1a; 我当时已经创建好了&#xff0c;就是user. 然后需要将该用户设置为管理员权限即可。 重回回到&#xff0c;此时你…

聚观早报 | 美国又一家银行要暴雷;腾讯T13技术黄希彤被曝遭裁员

今日要闻&#xff1a;暴跌 62%&#xff01;美国又一家银行要暴雷&#xff1b;三星上半年量产第三代 4nm 工艺&#xff1b;腾讯T13技术大佬黄希彤被曝遭裁员&#xff1b;华为 P60 系列将于 3 月 23 日发布&#xff1b;苹果公司CEO库克减薪40% 暴跌 62%&#xff01;美国又一家银…

蓝筹股连环爆雷!这些蓝筹股哪些最容易爆雷?(最全名单)

幸福的股民总是相似的&#xff0c;不幸的股民去而各有各的不幸。天雷滚滚的2019年报季尚不去不远&#xff0c;不少股民们尚未从那场暗雷中疗伤正骨&#xff0c;2020年中报的雷声又开始拉响。 7月14日&#xff0c;有着“药中茅台”之称的东阿阿胶半年度业绩公布&#xff0c;作为…

我问自己代言,甄嬛篇

你只看到本宫的寿康宫 却没看到本宫的凌云峰 你有你的气度 本宫有本宫的本事 你嘲笑本宫菀菀类卿 本宫可怜你留得住人留不住心 你可以轻视本宫的存在 本宫会让你见识糙米薏仁汤的口感 回宫 注定是一段孤独的旅程 路上少不了三姑六婆 但 那又怎样&#xff1f;即使是滑胎 也要滑的…

淘宝618每日一猜6月6日答案-甄嬛在横店哪里参加的选秀?

淘宝6月6日每日一猜答案是什么&#xff1f;&#xff0c;接下来也会给大家来介绍一下6月6日淘宝大赢家每日一猜的答案。 淘宝每日一猜6月6日答案分享 活动问题&#xff1a;甄嬛在横店哪里参加的选秀 活动答案&#xff1a;【交泰殿】 还有打开手机淘宝&#xff0c;搜索“能省就…

吴忠军 - 《甄嬛传》宜修到死都不知道,这个和甄嬛无关的人帮了甄嬛一个大忙...

《甄嬛传》在甄嬛把华妃扳倒后&#xff0c;皇后便甩开手开始对付甄嬛了&#xff0c;比起华妃和甄嬛的眼里皇后是最好对付的&#xff0c;因为皇后手中掌握扳倒甄嬛的法宝&#xff0c;这便是皇后的亲姐姐纯元&#xff0c;皇后设计甄嬛穿错纯元故衣后&#xff0c;不仅是皇上大发雷…

专利战争:IT界的甄嬛传

分享到 本文来自腾讯大讲堂(DJT.QQ.COM)&#xff0c;转载请注明出处。      近期热播电视剧“甄嬛传”完美收官&#xff0c;剧中女猪脚甄嬛的经历堪称一部女人的奋斗史诗&#xff0c;一方面要讨皇上的欢心&#xff0c;一方面又要跟华妃、皇后等后宫各方势力做斗争&…

熹贵妃竟是这种隐藏属性,从MBTI来看甄嬛“三姐妹”的爱恨情仇?

就在不久前的5月17日&#xff0c;农历四月十七&#xff0c;是熹贵妃的农历生日&#xff0c;这一天为了给嬛嬛庆生&#xff0c;朋友圈微博等各大平台&#xff0c;可热闹了起来&#xff0c;这盛况堪比那年果郡王为嬛嬛庆生&#xff5e; 如今&#xff0c;距《甄嬛传》首播已经有1…

《后宫•甄嬛传》火爆背后的秘密

“I pity the empress. Poor empress.” “我很同情皇后&#xff0c;她很可怜。” “Do you think Zhen Huan really loves the emperor?” “你认为甄嬛真的爱皇帝吗&#xff1f;” From campuses to offices, from shopping malls to the streets, talk about Legend of Zhe…

李东学计算机在哪学的,被人遗忘的果郡王,从《甄嬛传》出来的李东学如今只能奋进的旋律...

作者/ 卡茜 编辑/ 冯寅杰 (本文原载于《创业人》杂志 原标题《李东学&#xff1a;《甄嬛传》让我沉迷于演戏》) 183公分的海拔跟“高”贴合无误&#xff0c;俊朗轮廓与“帅”亲密无间&#xff0c;招牌式如阳笑容把“谦和”、“绅士”逐字融入。他自己却说真正的“高富帅”应该是…

《甄嬛传》被日本网友热赞

近期《甄嬛传》开始在日本电视台播出&#xff0c;日本网友说&#xff1a;“孙俪美得让人惊叹&#xff0c;但又是脚踏实地的美&#xff0c;不像如今演艺圈的美女&#xff0c;都带着点小太妹的坏坏的美一样&#xff0c;我喜欢她这种稳重大气的美。 转载于:https://www.cnblogs.co…

《甄嬛传》影评(整理)

这部戏似乎将人物的性格变化以及人物之间的互动把握得很好&#xff0c;让人觉得这部戏里每个人物都栩栩如生&#xff0c;似乎就是生活中之人。我比较讨厌看一部戏中&#xff0c;很明显地将人物分为正面和反面角色。这部戏中&#xff0c;自然也会有正面和反面角色&#xff0c;但…

推荐电视剧 后宫甄嬛传 2012

后宫甄嬛传 百科名片 《后宫甄嬛传》海报 电视剧《后宫甄嬛传》改编自流潋紫所著的同名小说。由郑晓龙导演&#xff0c;孙俪、陈建斌、蔡少芬等人主演&#xff0c;由北京电视艺术中心制作。该剧是一部宫廷情感大戏&#xff0c;更注重描写"后宫女人"的真实情感&am…

《甄嬛传》解读--后宫女人的心酸血泪史之腹黑学

最近看了一部电视剧&#xff0c;叫做《甄嬛传》&#xff0c;虽然它的主体讲述的是雍正皇帝后宫的故事&#xff0c;但是故事里面的人物性格各个鲜明&#xff0c;在他们的身上总是能够或多或少的看到一丝丝自己的影子&#xff0c;当然我不是说要大家去争男人争宠什么的。 这部76集…