Python数据分析案例06——现代人的婚育意愿调查分析(基于逻辑回归模型和问卷数据)

该文通过问卷调查分析现代青年人的婚育意愿,发现性别、年龄、学历及各类文化参与度对其有显著影响。数据显示,女性和高学历者、喜欢二次元和新竞技文化的人群婚育意愿较低,而年龄越大、偶像、宠物、音乐艺术文化参与度越高,婚育意愿越强。逻辑回归模型验证了这些发现,其中性别、年龄和文化参与度的变量对婚育意愿有显著相关性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如今中国的人口生育率已经是越来越低,年轻人的婚育愿望也越来越低。这对社会老龄化以及发展产生了巨大的危害,探索现代人们的婚育意愿的影响因素是很有必要的。

本次案例采用问卷的形式收集数据,从年龄,性别,学历还有各种艺术,文化,游戏,追星,宠物的参与程度来分析是否会影响到人的婚育意愿。

首先来看一下收集到的数据,长这个样子:

需要这代码演示数据的同学可以参考:数据


导入包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
import seaborn as sns

plt.rcParams ['font.sans-serif'] ='SimHei'               #显示中文
plt.rcParams ['axes.unicode_minus']=False               #显示负号
sns.set_style("darkgrid",{"font.sans-serif":['KaiTi', 'Arial']})

读取数据,并且整理,然后查看前五行 

spss=pd.read_excel('177219894_2_青年群体亚文化圈层参与与婚育意愿调查_131_131.xlsx')
data=spss.iloc[:,6:-1]
data.head()

整理数据

df=pd.DataFrame()
df['性别']=data.iloc[:,0]
df['年龄']=data.iloc[:,1]
df['学历']=data.iloc[:,2]
df['偶像文化圈参与度']=data.iloc[:,3:7].sum(axis=1)
df['宠物文化圈参与度']=data.iloc[:,7:11].sum(axis=1)
df['二次元文化圈参与度']=data.iloc[:,11:15].sum(axis=1)
df['新舞音文化圈参与度']=data.iloc[:,15:19].sum(axis=1)
df['新艺术文化圈参与度']=data.iloc[:,19:23].sum(axis=1)
df['新竞技文化圈参与度']=data.iloc[:,23:27].sum(axis=1)
df['婚育意愿']=data.iloc[:,27:29].sum(axis=1)

df['婚育意愿']=df['婚育意愿'].where(df['婚育意愿']==999,np.where(df['婚育意愿']>=6,1,0))
#将婚育意愿2-6映射为0 ,7-10为1 

将婚育意愿值为2到6映射为0,表示低的婚育意愿。7到10表示为1——即高婚育意愿


描述性统计

df.describe()  #描述性统计

 存一下

df.to_excel('清洗后的数据.xlsx',index=False)  #存一下清洗整理后的数据

整理为前上述9个特征变量x,最后一个婚育意愿为被解释变量y

描述性统计,画图查看收集数据人群的分布

 性别年龄学历分布

#性别年龄学历分布
column = df.columns
fig = plt.figure(figsize=(7,2.5), dpi=150)
for i in range(3):
    plt.subplot(1,3, i + 1)  # 1行3列子图
    df[column[i]].value_counts().plot.pie(title=f'{column[i]}数量对比')

性别2表示女性,1表示男性。年龄2表示21-27年龄区间,学历3表示本科。

可以描述一下收集到的问卷中女性多......都是21-27岁年轻人.....本科生研究生比较多等等

画图查看自变量x的分布特点

箱线图

column = df.columns
fig = plt.figure(figsize=(10,10), dpi=128)  # 指定绘图对象宽度和高度
for i in range(9):
    plt.subplot(3,3, i + 1)  # 2行3列子图
    sns.boxplot(data=df[column[i]], orient="v",width=0.5)  # 箱式图
    plt.ylabel(column[i], fontsize=12)
plt.tight_layout()
plt.show()

年龄都集中在第二个区间,其他变量虽然有的有异常值,但是都还好,分布较为均匀

核密度图

fig = plt.figure(figsize=(10,10), dpi=128)  # 指定绘图对象宽度和高度
for i in range(9):
    plt.subplot(3,3, i + 1)  # 2行3列子图
    sns.kdeplot(data=df[column[i]],color='blue',shade= True)  
    plt.ylabel(column[i], fontsize=12)
plt.tight_layout()
plt.show()

 分布都还比较服从正态分布,没有很极端

下面对y分不同的类时画x的小提琴图

fig = plt.figure(figsize=(10,10), dpi=128)  # 指定绘图对象宽度和高度
for i in range(9):
    plt.subplot(3,3, i + 1)  # 2行3列子图
    ax = sns.violinplot(x='婚育意愿',y=column[i],width=0.8,saturation=0.9,lw=0.8,palette="Set2",orient="v",inner="box",data=df)
    plt.xlabel((['婚育意愿等级']),fontsize=12) 
    plt.ylabel(column[i], fontsize=12)
plt.tight_layout()
plt.show()

可以分类看出一些结论,比如从第一个图性别上来看,婚育意愿等级为0,也就是婚育意愿等级低的,大多数性别取值都为2,也就是不愿意婚育的人女性偏多。而婚育意愿等级高的性别比例较为均衡 ,男性跟女性都有。

从第二个图年龄来看,婚育意愿等级为0,也就是婚育意愿等级低的人群中年龄取值为2的很多,也就是在21岁到27岁这部分年轻人的婚育意愿都比其他年龄的区间段的人低。

从学历上来看,学历越低的人群,婚育意愿越高。

.......其他的变量类似这样分析,

画皮尔逊相关系数热力图

corr = plt.subplots(figsize = (8,8),dpi=128)
corr= sns.heatmap(df.corr(),annot=True,square=True)

很多x之间的相关系数都不是很高。说明模型应该不会出现多重共线性问题。 和婚育意愿正相关性最高的变量是年龄,说明年龄越大的人婚育意愿越强烈。 和婚育意愿负相关性最高的变量是性别和学历,说明女性(取值为2)比男性(取值1)婚育意愿低。学历越高婚育意愿越低


开始逻辑回归

导入包,取出X和y,数据标准化,写出回归方程式

from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
import statsmodels.api as sm

X=df.iloc[:,:-1]
y=df.iloc[:,-1]

#标准化,方便可以对比系数
scaler = StandardScaler()
scaler.fit(X)
X_s = scaler.transform(X)
X_s=pd.DataFrame(X_s,columns=X.columns)

all_columns = "+".join(df.columns[:-1])
print('x是:'+all_columns+'\n')
formula = '婚育意愿——' + all_columns
print('逻辑回归方程为:'+formula)

 拟合模型

model=sm.Logit(y,X_s)
results=model.fit() 

 展示模型系数

pd.DataFrame(results.params, columns=['Coefficient']).style.highlight_min()

从回归系数可以看出,对于婚育意愿影响最大的是性别,并且是负相关。说明性别取为女性的样本人群更不愿意婚育。

还有学历和二次元文化参与度,新竞技文化参与度都是负的,说明学历越高,越喜欢二次元,越喜欢搞新竞技,就越不愿意婚育。

其他的变量——年龄,偶像文化,宠物文化,音乐艺术参与度,和婚育都是成正相关。说明年龄越大,还有偶像宠物音乐艺术文化参与度越高,越愿意婚育。

查看模型整体信息

results.summary()

从逻辑回归的显著性来看,和前面结论一致。在p=0.1的显著性水平下,只有性别和新竞技文化参与度是通过了显著性检验。

说明性别和新经济文化参与度对于婚育意愿影响程度是有具有显著性影响的,并且都是负影响。即女性更不愿意婚育,越喜欢弄新竞技文化的人群就越不愿意婚育。


结论

结论是性别是最大的影响因素,女性更不喜欢婚育,婚育意愿比男性更低。

20-27岁的年轻人比其他年龄段的人更不喜欢婚育。

学历越高越不喜欢婚育。

然后是越喜欢打电子竞技的人具有更低的婚育欲望。


创作不易,看官觉得写得还不错的话点个关注和赞吧,本人会持续更新python数据分析领域的代码文章~(需要定制代码可私信)

调查问卷中的逻辑回归是一种统计分析方法,通常用于预测分类变量(如“同意”、“不同意”或“可能”等选项)基于连续变量(如被调查者的年龄、收入等)。下面是制作逻辑回归模型的基本步骤: 1. **数据收集**:首先,设计分发调查问卷,收集包含受访者属性以及他们对某些问题的回答的数据。 2. **数据预处理**: - 数据清洗:去除缺失值、异常值不一致的数据。 - 变量编码:将分类变量转换为数值形式(比如二进制编码,0/1表示不同答案)。 3. **特征选择**:根据领域知识相关性分析,选取可能影响分类结果的重要特征。 4. **建立模型**: - 使用统计软件(如SPSS, R, Python(例如pandas库的`get_dummies`或scikit-learn库))创建逻辑回归模型模型的目标变量通常是二元的(0或1代表不同的类别)。 5. **拟合模型**:输入特征到模型中,模型会估计每个特征对结果的影响程度,得出权重(系数)。 6. **模型评估**: - 训练集上计算性能指标,如准确率、精确率、召回率、AUC-ROC曲线等。 - 对测试集进行验证,防止过拟合。 7. **模型解释**:理解模型中的系数,了解哪些因素对预测结果有显著影响。 8. **调整模型**:如果模型表现不佳,可能需要尝试正则化、改变模型参数或尝试其他算法(如决策树、随机森林)。 9. **报告结果**:编写研究报告,清晰地阐述研究目的、模型构建过程以及预测性能。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阡之尘埃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值