明星恋情和婚姻是吃瓜群众们经常讨论的话题,如最近的fsf疑似出轨事件,zly的粉丝众多和传言将要复出,fsf几度被送上热搜。身边的朋友也经常讨论这个话题,并且意见不一。
于是,数学君想到了功能强大的Logistic模型,并费了九牛二虎之力找到了Logistic模型的样本数据,预测出了fsf出轨的概率。
不了解Logistic回归模型的粉丝可能会问:这个Logistic模型预测的结果可信不可信?准确率又有多高?
下面请耐心的听数学君说给你们听。(Ps:如果你不关心模型和预测的过程,只关心结果,请直接滑动到文章末尾。)
Logistic模型是个什么玩意?
寻找一个连续型因变量与一个或多个自变量关系的模型,大家应该不陌生,如常见的一元线性回归模型y=a*x+b。但很多时候我们关心的因变量y的取值只有两种可能:是或否。
如某人会不会得癌症?某个贷款人会不会违约?某个明星到底有没有出轨?这个时候一般的预测连续型因变量的模型就不适用了,而Logisic回归模型就可以被派上用场了。
Logistic回归本质上是一种广义的线性回归模型,可以根据一个或多个(一般是多个)连续型或类别型自变量来预测只有两个输出结果的因变量的值。
Logistic模型预测婚外情事件的质量怎么样?
模型预测结果的质量怎么样?至少取决于两点:一是模型的适用性,二是预测变量(或称为自变量)和样本的代表性。
第一个问题显然是没有疑问的,是否有婚外情只有是或否两种结果,适用于Logistic模型。
第二个问题你也不用担心,预测变量的选取和样本取自《今日心理》(Psychology Today)在1969年所做的一个非常有代表性的调查,参与者数量为601个,采集的预测变量包括近一年内婚外情频率、参与者的性别、年龄、婚龄、是否有小孩、宗教信仰程度(5分制,1表示非常反对,5表示非常信仰)、学历、职业(戈登的7种分类,逆向编号)、婚姻幸福度(5分制,1表示非常不幸福,5表示非常幸福)。
有了适用的模型、充分的预测变量和足够的样本代表性,模型质量就有了初步的保证。
下面我们看样本的预测结果和真实结果对比的效果如何。
加载样本数据集Affairs,并查看数据结构,结果如下。我们可以看到样本数据集中包含的变量有affairs、gender、age…rating(婚姻幸福度)等,并且可以看到近一年内婚外情次数最多的为12次,有38个人,有451个人没有婚外情。
样本数据集中affairs是我们需要预测的因变量,并且是一个二值型因变量,需要对affairs的值进行处理,将其改为二值型变量ynaffiars,即将affairs>=1的值全部改为1,0保持不变,即有1次婚外情即为有婚外情,用ynaffairs=1表示;没有婚外情用ynaffairs=0表示。
将affairs修改为ynaffairs后,并重新统计ynaffairs各个取值出现的频数,结果如下:
ynaffairs和上面的所有因变量(gender、age、yearsmarried…等)都相关吗?
先做一个ynaffairs和所有自变量关系的回归模型。
结果显示ynaffairs与性别、是否有孩子、学历、职业的相关性都不显著,而与年龄、婚龄、宗教信仰、婚姻幸福度的相关性是显著的。
剔除相关性不显著的变量后,对与婚外情显著相关的变量再做一次logistic回归。
从以上结果可以看出,新模型fit.reduced拟合的效果很好,在0.05的显著性水平上,各因变量的回归效果均显著,即婚外情与年龄、婚龄、宗教信仰、婚姻幸福度的相关性都很显著。
通过anova()函数对新模型fit.reduced和旧模型fit.full进行卡方检验,发现两个模型拟合的效果一样好(p=0.2108<0.05,说明两个模型拟合的效果没有显著性差异)
某明星(fsf)到底有没有出轨呢?
我们把fsf的相关信息输入到模型中,进行预测:
通过网上公开资料得到fsf的相关信息:age=41,yearsmarried = 1, religiousness=1,rating=?
有的粉丝可能觉得婚姻幸福度这个变量,外人较难以判定,所以我们把婚姻幸福度从1到5的值都试一遍:
fsf到底有没有出轨呢?这里不方便公布啦,数学君还不想通过数据科学将别人的隐私直接公布到网上。
迫切想知道的朋友可以在公号“数学算法的世界”后台回复“fsf” ,即可获得婚姻幸福度从1到5时,fsf出轨的概率(先预告一下:婚姻的幸福越高,婚外情的概率越低)。
想通过Affairs数据和Logistic模型预测其他自己关注人物的affairs概率的话,在后台回复 “Affairs” ,即可获得 Affairs数据集,然后就可以满足一下自己的好奇心了。
数学算法的世界
数据分析|Python
R|SQL|Excel|科普