1. 引言
杨富明 [1] 在文章中提出根据人类生理及内分泌规律,通常将入睡时间超过23点界定为熬夜。但由于经济社会的快速发展导致各种学习压力、生活压力、工作压力、电子设备等等干扰人们按时睡觉的事件的出现,23点以前睡觉变得难以做到,所以本文将23:30以后睡觉定义为熬夜,在这个的基础上也只有10.9%的大学生能够按时睡觉,可见熬夜在大学生生活里的常态化。刘晓荻等人 [2] 在文章里指出熬夜被世界卫生组织定义为最大致癌因素之一,熬夜和睡眠不足也会对人脑神经造成严重损害。Ram等人 [3] 指出睡眠不足与注意力和记忆力问题有关。Buxton & Marcelli [4] ;Sabanayagam & Shankar, [5] 提到肥胖、高血压和心血管疾病等更严重的后果有关。可见熬夜对人体的各个健康方面都有着很大的影响。
艾娟等人 [6] 提出了“报复性熬夜”与生理上的习惯性晚睡,由长期生活习惯养成和生物钟惯性所致、自控能力减弱的习惯性晚睡,因为完成工作或学习任务、受他人或外界影响的被迫性熬夜等区别开来。祝传清 [7] 提出了报复性熬夜不仅仅是外在熬夜行为的体现,更重要的是,报复性熬夜具有“心理补偿”的特点。“心理补偿”是一种防御机制,当人们白天花费大量时间和精力用于学习、工作、处理人际关系,需要通过占用晚上的时间做自己愿意完成的活动,以弥补自己对时间“错失”的遗憾。更重要的是,报复性熬夜体现出过度补偿的特点,个体不仅要实现正常的补偿,还要努力使自己补偿的结果超越之前。
2. 数据介绍
2.1. 数据来源与说明
该数据结合实际自行编制的大学生报复性熬夜现状及其成因调查问卷,通过借助网络平台、身边朋友、同学、老师帮忙发放填写,总共收到有效问卷265份。该问卷共有22个条目,包括性别、专业、学校、学位、是否存在报复性熬夜行为、报复性熬夜后影响等等,采用单选、多选以及五分制问题进行调查。调查问卷采用匿名方式,不记录姓名等个人信息,以打消顾虑,确保调查信息的客观和真实性,调查问卷具体内容见附件。
2.2. 变量预处理与描述
探讨大学生报复性熬夜的影响因素是本文研究的目的,因此将是否存在报复性熬夜这一行为作为因变量。自变量为13个,分别是性别、学校、专业、学位、白天琐事、学习社会自身等心理因素、白天对时间的掌控感、电子设备、内心孤独、同学间激烈的学习氛围、报复性熬夜循环、改变现状。后续分析中变量学校划分为3个水平,将985/211院校与双一流院校归结在一起为重点本科院校;变量专业也划分为3个水平,理工类、文史类及其他类,把原数据中医学类、艺术类和其他类合并为其他类;变量学位中将原数据中的研究生和博士生统称为研究生及以上;变量白天琐事、学习社会自身等心理因素、白天对时间的掌控感、电子设备、内心孤独、同学间激烈的学习氛围、报复性熬夜循环和改变现状是五分制问题,为了后续建模分析的便利,本文将分数小于3分的定义为0表示为不会、不容易、不想因为对应因素而报复性熬夜,大于等于3分的则定义为1表示对立面会、容易、想报复性熬夜。具体变量说明见表1。
3. 描述性分析
在介绍逻辑回归模型结果之前,先对数据进行粗略的描述分析。
1) 因变量:是否存在报复性熬夜这一行为
![](//html.hanspub.org/file/28-1251940x7_hanspub.png?20230703115508876)
Figure 1. Bar chart of retaliatory staying up late
图1. 报复性熬夜柱状图
从上图1中可以看出,报复性熬夜这一现象在大学生中较为普遍,超过一般的人数(61.5%)存在报复性熬夜行为,剩余38.5% (102/265)的同学没有这一行为。
2) 自变量:性别、学校
图2中女性对应的柱状图的宽度要较宽于男性的柱形宽度,事实上样本数据中男性人数占据42.3%。另外图1还表明女性样本中存在报复性熬夜行为达到64.7%,男性存在报复性熬夜比例略低,达到57.1%,这意味着相对于男性,女性更容易进行报复性熬夜。图3可以看出,普通本科院校所对应的柱状图宽度要远宽于其他两所院校的柱形宽度,事实上样本数据中普通本科院校的人数占比达到81.1%。另外,从图中可以看出重点本科院校的同学存在报复性熬夜要远高于其余院校,达到72.7%,而普通本科院校和专科类院校的同学存在报复性熬夜的相差不大,分别为60.1%和57.1%。
![](//html.hanspub.org/file/28-1251940x8_hanspub.png?20230703115508876)
Figure 2. Spines of sex and retaliatory staying up late
图2. 性别与报复性熬夜棘状图
![](//html.hanspub.org/file/28-1251940x9_hanspub.png?20230703115508876)
Figure 3. Spines of school and retaliatory staying up late
图3. 学校与报复性熬夜棘状图
3) 自变量:专业、学位
从图4中可以看出理工类对应的柱形宽度远远大于其余专业,理工类人数占比为74.7%,另外,文史类专业和其他类专业的同学存在报复性熬夜比例要高于理工类专业,分别达到65.5%和71.1%。图5中可以看出,本科生学位的柱形宽度占据图中大部分,达到70.6%。研究生及以上学位的同学存在报复性熬夜的频率较高达到70.6%。
4) 自变量:白天琐事、同学间激烈的学习氛围
图6中可以看出会因为白天被琐事排满,出于过度补偿心理而熬夜的同学存在报复性熬夜比例达到79.5%。从图7中可以看出不会因为同学间激烈的学习氛围感到焦虑而熬夜的柱形宽度略宽,样本比例为59.2%,此外,会因为同学间激烈的学习氛围感到焦虑而熬夜的同学更可能存在报复性熬夜,达到70.4%。
5) 自变量:报复性熬夜循环、就业人际学习家庭等方面带压力
图8展示了容不容易陷入报复性熬夜循环与是否报复性熬夜的关系图,图中可以看出容易陷入报复性熬夜循环的同学存在报复性比例较高,达到81.1%,由柱形宽度可知,不容易陷入报复性熬夜循环的同学略多,比例为54%。从图9中可以看出会因为就业、人际、学习、家庭等方面带来的压力而熬夜的同学更可能存在报复性熬夜,达到71.4%。
![](//html.hanspub.org/file/28-1251940x10_hanspub.png?20230703115508876)
Figure 4. Spines of professional and retaliatory staying up late
图4. 专业与报复性熬夜棘状
![](//html.hanspub.org/file/28-1251940x11_hanspub.png?20230703115508876)
Figure 5. Spines of degree and retaliatory staying up late
图5. 学位与报复性熬夜棘状图
![](//html.hanspub.org/file/28-1251940x12_hanspub.png?20230703115508876)
Figure 6. Spines of daytime trivia and retaliatory staying up late
图6. 白天琐事与报复性熬夜棘状图
![](//html.hanspub.org/file/28-1251940x13_hanspub.png?20230703115508876)
Figure 7. Spines of learning atmosphere and retaliatory staying up late
图7. 学习氛围与报复性熬夜棘状图
![](//html.hanspub.org/file/28-1251940x14_hanspub.png?20230703115508876)
Figure 8. Spines of cyclic and retaliatory staying up late
图8. 循环与报复性熬夜棘状图
![](//html.hanspub.org/file/28-1251940x15_hanspub.png?20230703115508876)
Figure 9. Spines of stress and retaliatory staying up late
图9. 压力与报复性熬夜棘状图
6) 自变量:学校社会自身等心理因素、白天对时间的掌控感
从图10中可以看出两根柱子的宽度也是相差不大,事实表明会因为学校、社会及自身等心理因素而熬夜弥补自身内心缺失的人数达到55.5%,而会因为学校、社会及自身等心理因素而熬夜弥补自身内心缺失的同学存在报复性熬夜行为比例较大,达到74.8%。图11两根柱子的宽度也是相差不大,而会由于白天缺乏时间的掌控感,而延长夜晚时间给予自己补偿的同学比不会的同学更可能存在报复性熬夜行为,比例达到79.3%。
7) 自变量:内心孤独、电子设备、改变现状
图12会因为内心孤独而熬夜补偿自己的柱形宽度较窄与不会的,样本数据表明会因为内心孤独而熬夜补偿自己的人数43.4%,并且会因为内心孤独而熬夜补偿自己的同学存在报复性熬夜行为较高,达到71.3%。图13展示了电子设备与是否报复性熬夜的棘状图,会因为电子设备来缓解焦虑而熬夜的人数较多,样本比例为64.2%,且会因为电子设备来缓解焦虑而熬夜的同学存在报复性熬夜比例也更高,达到70.6%。
![](//html.hanspub.org/file/28-1251940x16_hanspub.png?20230703115508876)
Figure 10. Spines between school and retaliatory staying up late
图10. 学校等因素与报复性熬夜棘状图
![](//html.hanspub.org/file/28-1251940x17_hanspub.png?20230703115508876)
Figure 11. Spines of sense of control and retaliatory staying up late
图11. 掌控感与报复性熬夜棘状图
![](//html.hanspub.org/file/28-1251940x18_hanspub.png?20230703115508876)
Figure 12. Spines of inner loneliness and retaliatory staying up late
图12. 内心孤独与报复性熬夜棘状图
![](//html.hanspub.org/file/28-1251940x19_hanspub.png?20230703115508876)
Figure 13. Spines of electronic devices and retaliatory staying up late
图13. 电子设备与报复性熬夜棘状图
图14展示了改变现状与是否存在报复性熬夜的棘状图,从图中可以看出,想要改变报复性熬夜现状的柱形宽度较宽于不想改变现状的柱形宽度,事实上样本数据中想要改变现状的占比为66.8%,想要改变现状的同学存在报复性熬夜行为比例更大,得到70.6%。
![](//html.hanspub.org/file/28-1251940x20_hanspub.png?20230703115508876)
Figure 14. Spines of changing status quo and retaliatory staying up late
图14. 改变现状与报复性熬夜棘状图
8) 报复性熬夜的影响
图15中可以看出大学生报复性熬夜后会导致个体觉得缺乏活力、懒散疲惫,并且学习、工作的能力和身体免疫力会下降,除此之外还会增加自身的负面情绪,由于报复性熬夜同学们早上经常起不来导致没有时间去早餐,上课也会迟到。
9) 改善大学生报复性熬夜的方法
图16展示了大学生针对报复性熬夜提出的一些改善方法,进行适当的运动受到了大多数人的认可,由于报复性熬夜产生的机制就是一种补偿心理,所以合理安排自己的时间,留一些独处的空间也会改善报复性熬夜的情况,除此之外,找朋友倾述自己的内心不良的情绪也有缓解的作用,偶尔偷偷做一些不被允许的事情,如允许自己一整天都在玩耍,使自己放松进而缓解报复性熬夜。
![](//html.hanspub.org/file/28-1251940x21_hanspub.png?20230703115508876)
Figure 15. Bar chart of the effects of retaliatory staying up late on life
图15. 报复性熬夜对生活影响柱状图
![](//html.hanspub.org/file/28-1251940x22_hanspub.png?20230703115508876)
Figure 16. Bar chart of methods to improve retaliatory staying up late
图16. 改善报复性熬夜方法的柱状图
4. 模型理论
当因变量y为一个二值变量且只能取0和1时,建立下式线性回归模型
(1)
则会遇到以下问题,等式左侧的值
只能取0和1,是两个离散值;而等式右侧的值可能是实数轴上的任意值,连续变化的。针对这一问题,可通过寻找因变量均值的函数,使得该函数的取值范围在
内来解决这一问题,如
(2)
其中z在区间[0, 1]上取值,我们称这一函数为logit函数,该函数的取值范围为
。
假设
是定性变量
取1得概率,其值可在[0, 1]区间上连续变化,可用模型
(3)
其中
和
。
我们也可用分布函数的反函数去代替logit函数,从而,得到下面的回归模型
(4)
其中
表示标准正态分布函数的反函数。模型(4)通常被称为Probit回归模型(又称为多元概率比回归模型)。该模型成立的前提条件是函数Probit(z)服从标准正态分布。
若用双对数变换
去代替logit函数,则得到如下回归模型
(5)
5. 建立模型
为探究影响大学生报复性熬夜的重要因素,本文基于大学生报复性熬夜及其相关影响因素的调查问卷所得数据建立大学生报复性熬夜预测模型。在逻辑回归中,二分类因变量用0~1表示。在本项目中,用0表示存在报复性熬夜,1表示不存在报复性熬夜。这里我们关心的核心问题是:哪些因素会影响报复性熬夜,这些因素会在多大程度上对结果有影响?
5.1. 逻辑回归结果
结合统计软件R,将变量纳入模型建立逻辑回归,得到了回归方程的截距项和回归系数的最大似然值,详细结果见表2。
注:“***”0.001显著;“**”0.01显著;“*”0.05显著;“.”0.1显著。
从上表p值的结果可以看出,对熬夜有显著影响的变量是会不会因为白天被琐事排满,出于补偿心理而熬夜在0.001的显著性水平下显著,变量容不容易陷入报复性熬夜循环在0.01的显著性水平下显著,而会不会因为同学间激烈的学习氛围感到焦虑而熬夜、会不会因为白天却反对时间的掌控感而熬夜变量在0.1的显著水平下显著。其余变量对报复性熬夜频率的影响在统计上不显著。
5.2. 变量选择
上述结果中并不是所有的自变量和因变量的相关程度都很大,通过AIC准则进行变量选择,然后再次建模,得到了对报复性熬夜显著的以下变量,见表3。
![](Images/Table_Tmp.jpg)
Table 3. Model regression results under AIC criterion
表3. AIC准则下的模型回归结果
注:“***”0.001显著;“**”0.01显著;“*”0.05显著;“.”0.1显著。
从估计结果来看,在0.001的显著性水平下,会不会因为白天被琐事排满,出于补偿心理而熬夜变量显著,变量容不容易陷入报复性熬夜循环在0.01的显著性水平下显著,在0.05的显著性水平下,会不会因为同学间激烈的学习氛围感到压力而熬夜变量显著,而变量会不会就业、学习、人际、家庭等方面带来的压力而熬夜在0.1的显著性水平下显著。
5.3. 模型评价
根据因变量真实值与预测值计算出不同阈值设定下的FPR和TPR,绘制出ROC曲线如图17。
根据曲线的结果,AUC (即ROC曲线下的面积)为0.7824说明该模型对数据的预测效果较好。
逻辑回归预测出来的是Y = 1的概率,但是我们需要的是预测变量是1还是0,因此,我们需要一个阈值,当阈值的概率大于这个阈值的时候,将因变量预测为1,否则将因变量预测为0。文中选取的阈值为0.7,计算出混淆矩阵。
根据表4混淆矩阵的结果输出,可以看到,真实值是存在报复性熬夜这一行为的样本中,有141个样本被预测为存在报复性熬夜,22个样本被预测不存在报复性熬夜这一行为;真实值为不存在报复性熬夜的样本中,有49个样本被预测为是不存在报复性熬夜行为,53个样本被错误预测为是存在报复性熬夜行为。模型的准确率为71.7%,精确率为72.7%,召回率为86.5%,模型的预测精确率较高,说明预测为存在报复性熬夜样本中,真正存在报复性熬夜行为的占比很高;召回率较高,说明真正存在报复性熬夜的数据中有很多被模型挑出来,模型拟合效果较好。
6. 结论与展望
本文主要探究大学生报复性熬夜现状,分析影响大学生报复性熬夜的因素,通过调查分析,结论如下:大学生群体报复性熬夜现象普遍,且大部分学生都存在报复性熬夜行为,长时间的熬夜已经影响到他们的生活和学习,甚至对其健康也有一定的损害。白天琐事、同学间激烈的学习氛围、就业人际学习家庭等方面带来的压力以及报复性熬夜循环是影响大学生报复性熬夜的重要因素。
本项目的样本数不够多,同时自变量都是定性变量,分了类别后,样本数量更少,对研究结果会有一定的影响。本研究的数据来源于自编的调查问卷,且研究的是近半年来大学生的熬夜情况,不能代表长期的研究结果。同时由于网络收集无法进行实时过程的监督,无法保证数据的真实性和准确性。
附录
大学生“报复性熬夜”现状及其成因调查问卷
1. 您的性别是?
男 女
2. 您的学校属于?
985/211院校 双一流院校 普通本科院校 专科类院校
3. 您的专业化是?
理工类 文史类 医学类 艺术类 其他类
4. 您目前属于?
专科生 本科生 研究生 博士生
5. 您是否认为23:30以后算熬夜?
是 否
6. 过去一周内,您晚上休息时间一般在哪个时间段内?(在频数不低于两次的情况下)
23:30以前
23:32~0:30
0:31~1:30
1:31~2:30
2:31以后
7. 您对熬夜的看法是?
坚决不熬夜
知道不好但很难改变
知道不好并做出改变
觉得熬夜并无不妥之处
8. 在校学期内,您通常情况下会熬夜到哪个时间段?
23:32~0:30
0:31~1:30
1:31~2:30
2:31以后
9. 在假期(包括在校期间的星期六、星期日),您通常熬夜到哪个时间段?
23:32~0:30
0:31~1:30
1:31~2:30
2:31以后
10. 当白天的时间被占用,需要通过占用晚上睡眠的时间来完成自己想做的事,以弥补自己对时间“错失”的遗憾,这种行为叫报复性熬夜,您是否存在这一行为?
是 否
11. 您过去一周内报复性熬夜的频数?
0次
1~2次
3~4次
5次及以上
12. 当白天被各种事务排满,出于过度补偿心理,您会通过熬夜来补偿自己(完全符合选择5,完全不符合选择1)。
① ② ③ ④ ⑤
13. 由于学校、社会及自身心理等的因素,您会到晚上通过熬夜来释放情绪,弥补内心的缺失
① ② ③ ④ ⑤
14. 由于个体在白天缺乏对自己时间的掌控感,您会延长夜晚时间以提高对自我时间的控制感,从而获得报复性熬夜所给予个体的掌控感。
① ② ③ ④ ⑤
15. 您会由于晚上经常使用手机等电子设备来缓解焦虑,从而导致熬夜。
① ② ③ ④ ⑤
16. 您会由于就业、学习、人际交往、家庭等方面带来的压力而导致熬夜。
① ② ③ ④ ⑤
17. 在晚上,您会由于内心感到孤独,然后通过熬夜来建立联系以防御内心的孤独感。
① ② ③ ④ ⑤
18. 您会由于同学之间竞争激烈的学习氛围而感到焦虑从而导致熬夜(特别是晚上舍友一直学习到深夜)。
① ② ③ ④ ⑤
19. 您容易陷入报复性熬夜的循环。
① ② ③ ④ ⑤
20. 您很想改变自己报复性熬夜的现状。
① ② ③ ④ ⑤
21. 您认为经常进行报复性熬夜对自身会产生怎样的影响?(多选)
迟到
没时间吃早餐
学习,工作能力下降(例如:记忆力下降)
身体免疫力下降
缺乏活力,懒散疲惫
增加自身负面情绪(例如:焦虑、郁郁寡欢)
没有影响
其他
22. 您认为怎样可以有效缓解报复性熬夜现状?
进行适当的运动
找朋友倾述以缓解内心的不良情绪
在白天合理安排时间,留一些自身独处放松的时间
偷偷做一些“不允许”的事情,使自己能够放松(例如:偶尔允许自己可以整一天都在玩耍)
提前一小时洗漱关灯上床休息
其他
代码部分
setwd(F:/小论文/熬夜)
stayup1<-read.csv(stayup1.csv)
fix(stayup1)
#加载包
library(ggplot2)
library(MASS)
library(pROC)
library(leaps)
library(caret)
library(rpart)
library(rattle)
library(ggplot2)
library(hrbrthemes)
library(ggsci)
#更改变量名
cnames<-c(sexgrademajordegree, attitudesleeptimeviewschoolholidayrevengetimestrivia, reasoncontrolelectricpressurelonelinesscompetitoncyclechange迟到没时间吃早餐学习,工作能力下降身体免疫力下降缺乏活力,懒散疲惫增加负面情绪没有影响其他进行适当的运动找朋友倾述合理安排时间, 偷偷做一些“不允许”的事情提前一小时上床休息其他)
colnames(stayup1)<-cnames
#描述性统计分析
str(stayup1)
stayup1$sex<-factor(stayup1$sex,levels = c(1,2),labels = c('男','女'))
stayup1$grade<-factor(stayup1$grade,levels = c(1,2,3,4),labels = c(重点本科院校重点本科院校普通本科院校专科类院校))
stayup1$major<-factor(stayup1$major,levels = c(1,2,3,4,5),labels = c(理工类文史类其他类其他类其他类))
stayup1$degree<-factor(stayup1$degree,levels = c(1,2,3,4),labels =c(专科生本科生研究生及以上研究生及以上))
stayup1$attitude<-factor(stayup1$attitude,levels = c(1,2),labels = c('是','否'))
stayup1$sleeptime<-factor(stayup1$sleeptime,levels = c(1,2,3,4,5),labels =c('0','1','1','2','2'))
stayup1$sleeptime<-factor(stayup1$sleeptime,levels=c(0,1,2),labels =c(不熬夜睡得较晚睡得很晚))
stayup1$view<-factor(stayup1$view,levels = c(1,2,3,4),labels = c(坚决不熬夜知道不好难改变知道不好有改变并无不妥))
stayup1$school<-factor(stayup1$school,levels = c(1,2,3,4),labels =c('0','0','1','1'))
stayup1$school<-factor(stayup1$school,levels=c(0,1),labels =c(低程度熬夜高程度熬夜))
stayup1$holiday<-factor(stayup1$holiday,levels = c(1,2,3,4),labels =c('0','0','1','1'))
stayup1$holiday<-factor(stayup1$holiday,levels=c(0,1),labels =c(低程度熬夜高程度熬夜))
stayup1$revenge<-factor(stayup1$revenge,levels = c(1,2),labels = c('0','1'))
stayup1$revenge<-factor(stayup1$revenge,levels=c(0,1),labels = c('是','否'))
stayup1$times<-factor(stayup1$times,levels = c(1,2,3,4),labels =c('0','1','2','2'))
stayup1$times<-factor(stayup1$times,levels=c(0,1,2),labels = c(从不熬夜报复性熬夜频率较低报复性熬夜频率很高))
stayup1$trivia<-factor(stayup1$trivia,levels = c(1,2,3,4,5),labels =c('0','0','1','1','1'))
stayup1$reason<-factor(stayup1$reason,levels = c(1,2,3,4,5),labels = c('0','0','1','1','1'))
stayup1$control<-factor(stayup1$control,levels = c(1,2,3,4,5),labels =c('0','0','1','1','1'))
stayup1$electric<-factor(stayup1$electric,levels = c(1,2,3,4,5),labels =c('0','0','1','1','1'))
stayup1$pressure<-factor(stayup1$pressure,levels = c(1,2,3,4,5),labels = c('0','0','1','1','1'))
stayup1$loneliness<-factor(stayup1$loneliness,levels = c(1,2,3,4,5),labels =c('0','0','1','1','1'))
stayup1$competiton<-factor(stayup1$competiton,levels = c(1,2,3,4,5),labels =c('0','0','1','1','1'))
stayup1$cycle<-factor(stayup1$cycle,levels = c(1,2,3,4,5),labels =c('0','0','1','1','1'))
stayup1$change<-factor(stayup1$change,levels = c(1,2,3,4,5),labels =c('0','0','1','1','1'))
#输入的是问卷中的一个变量(即一个问题),以及该问题的选项的标签
my_count = function(choice,data){
num = grep(choice , data ,value = T)
count = length(num)
return(count)
}
revenge<- c(是否)
revenge_type = rep(0,2)
for(i in 1:2){
revenge_type[i] = my_count(revenge[i],stayup1$revenge)
}
revenge_type
revenge<-as.data.frame(table(stayup1$revenge))
ggplot(revenge, aes(x=revenge$Var1,y=revenge$Freq))+
geom_bar(stat = identity,fill=steelblue1,width = 0.5) +
geom_text(label = revenge$Freq, vjust = -1)+
labs(x = 是否报复性熬夜,y = 频数) +guides(fill=FALSE)
#影响与方法
df1<-stayup1[,-(1:20)]
df2<-df1[,-(9:14)]
colSums(df2)
a<-c(110,141,202,200,227,177,16,4)
hh1<-data.frame(group=c(迟到没时间吃早餐学习,工作能力下降身体免疫力下降缺乏活力,懒散疲惫增加负面情绪没有影响其他), VAL=c(110,141,202,200,227,177,16,4))
ggplot(hh1,aes(x = reorder(group,VAL),y=VAL,fill=group))+
geom_bar(stat = identity,size=1.5,width = 0.3)+
geom_text(aes(label=VAL),size=4,vjust=-0.5)+
scale_fill_nejm()+
theme_ipsum()+
ggtitle(报复性熬夜影响)+
theme(legend.position = none)
df3<-stayup1[,-(1:28)]
colSums(df3)
b<-c(218,141,206,111,151,7)
hh2<-data.frame(group=c( 进行适当的运动找朋友倾述合理安排时间偷偷做一些“不允许”的事情提前一小时上床休息其他),
VAL=c(218,141,206,111,151,7))
ggplot(hh2,aes(x = reorder(group,VAL),y=VAL,fill=group))+
geom_bar(stat = identity,size=1.5,width = 0.3)+
geom_text(aes(label=VAL),size=4,vjust=-0.5)+
scale_fill_nejm()+
theme_ipsum()+
ggtitle(改善报复性熬夜方法)+
theme(legend.position = none)
#barplot(b, names.arg =c('method_1','method_2','method_3','method_4','method_5','method_6'),xlab='方法',ylab = '频数',horiz = TRUE)
#不同性别的报复性熬夜次数
with(stayup1,table(revenge,sex))
count_timessex = table(stayup1$sex,stayup1$revenge )
p_times_sex <- spineplot(count_timessex, main = 性别-是否报复性熬夜, col
=c(steelblue2lightskyblue1 ),xaxlabels=c(男, 女) )
#不同学校的报复性熬夜次数
with(stayup1,table(revenge,grade))
count_timesgrade = table(stayup1$grade,stayup1$revenge )
p_times_grade <- spineplot(count_timesgrade, main = 学校-是否报复性熬夜,col
=c(steelblue2lightskyblue1 ),xaxlabels= c(重点本科院校普通本科院校专科类院校) )
#不同专业的报复性熬夜次数
with(stayup1,table(revenge,major))
count_timesmajor = table(stayup1$major,stayup1$revenge )
p_times_major <- spineplot(count_timesmajor, main = 专业-是否报复性熬夜, col
=c(steelblue2lightskyblue1 ),xaxlabels=c(理工类文史类其他类))
#不同学位的报复性熬夜次数
with(stayup1,table(revenge,degree))
count_timesdegree = table(stayup1$degree,stayup1$revenge )
p_times_degree <- spineplot(count_timesdegree, main = 学位-是否报复性熬夜, col
=c(steelblue2lightskyblue1 ),xaxlabels=c(专科生本科生研究生及以上))
#琐事、竞争、循环、压力的报复性熬夜
stayup1$trivia<-factor(stayup1$trivia,levels=c(0,1),labels =c(不会会))
stayup1$competiton<-factor(stayup1$competiton,levels=c(0,1),labels =c(不会会))
stayup1$pressure<-factor(stayup1$pressure,levels=c(0,1),labels =c(不会会))
stayup1$cycle<-factor(stayup1$cycle,levels=c(0,1),labels =c(不容易容易))
stayup1$reason<-factor(stayup1$reason,levels=c(0,1),labels =c(不会会))
stayup1$control<-factor(stayup1$control,levels=c(0,1),labels =c(不会会))
stayup1$electric<-factor(stayup1$electric,levels=c(0,1),labels =c(不会会))
stayup1$loneliness<-factor(stayup1$loneliness,levels=c(0,1),labels =c(不会会))
stayup1$change<-factor(stayup1$change,levels=c(0,1),labels =c(不想想))
with(stayup1,table(revenge,trivia))
count_timestrivia = table(stayup1$trivia,stayup1$revenge )
p_times_trivia <- spineplot(count_timestrivia, main = 白天琐事-是否报复性熬夜, col
=c(steelblue2lightskyblue1 ),xaxlabels=c(不会会))
with(stayup1,table(revenge,competiton))
count_timescompetiton = table(stayup1$competiton,stayup1$revenge )
p_times_competiton <- spineplot(count_timescompetiton, main = 同学间激烈的学习氛围-是否报复性熬夜, col
=c(steelblue2lightskyblue1 ),xaxlabels=c(不会会))
with(stayup1,table(revenge,pressure))
count_timespressure = table(stayup1$pressure,stayup1$revenge )
p_times_pressure <- spineplot(count_timespressure, main = 就业人际学习家庭等压力-是否报复性熬夜, col
=c(steelblue2lightskyblue1 ),xaxlabels=c(不会会))
with(stayup1,table(revenge,cycle))
count_timescycle = table(stayup1$cycle,stayup1$revenge )
p_times_cycle <- spineplot(count_timescycle, main = 报复性熬夜循环-是否报复性熬夜, col=
c(steelblue2lightskyblue1 ),xaxlabels=c(不容易容易))
with(stayup1,table(revenge,reason))
count_timesreason = table(stayup1$reason,stayup1$revenge )
p_times_reason <- spineplot(count_timesreason, main = 学校社会自身心理因素-是否报复性熬夜, col=
c(steelblue2lightskyblue1 ),xaxlabels=c(不会会))
with(stayup1,table(revenge,electric))
count_timeselectric = table(stayup1$electric,stayup1$revenge )
p_times_electric <- spineplot(count_timeselectric, main = 电子设备-是否报复性熬夜, col=
c(steelblue2lightskyblue1 ),xaxlabels=c(不会会))
with(stayup1,table(revenge,control))
count_timescontrol = table(stayup1$control,stayup1$revenge )
p_times_control <- spineplot(count_timescontrol, main = 白天对时间的掌控感-是否报复性熬夜, col=
c(steelblue2lightskyblue1 ),xaxlabels=c(不会会))
with(stayup1,table(revenge,loneliness))
count_timesloneliness = table(stayup1$loneliness,stayup1$revenge )
p_times_loneliness<- spineplot(count_timesloneliness, main = 内心孤独-是否报复性熬夜, col=
c(steelblue2lightskyblue1 ),xaxlabels=c(不会会))
with(stayup1,table(revenge,change))
count_timeschange = table(stayup1$change,stayup1$revenge )
p_times_change <- spineplot(count_timeschange, main = 改变现状-是否报复性熬夜, col=
c(steelblue2lightskyblue1 ),xaxlabels=c(不想想))
#logistic模型拟合
glm_stayup1<-glm(revenge~sex+grade+major+degree
+trivia +reason+control+electric+pressure+
loneliness+competiton+cycle+change,data = stayup1,family=binomial(link=logit))
summary(glm_stayup1)
#用 AIC 准则进行变量选择
fit1AIC=step(glm_stayup1,trace=0,direction=both)
summary(fit1AIC)
#logistic模型拟合
glm_stayup2<-glm(revenge~trivia+competiton+pressure+cycle, data =stayup1,family=binomial(link=logit))
summary(glm_stayup2)
#3-ROC 曲线及 AUC 的值
plot.roc(stayup1$revenge,predict(glm_stayup2,type=response),col=red,
lwd=2, print.thres=TRUE)
auc(stayup1$revenge,predict(glm_stayup2,type=response))
#混淆矩阵
stayup1$pred = predict(glm_stayup2,newdata = stayup1,type = response)
#样本内回测
stayup1$pre<-ifelse(stayup1$pred>0.7,1,0) #以最优阈值为临界值,大于临界值的判定为 1,否则为0
conf_glm = table(stayup1$revenge,stayup1$pre)#混淆矩阵
conf_glm
acc_glm=(conf_glm[1,1]+conf_glm[2,1])/sum(conf_glm)