本文共 2684 字,大约阅读时间需要 8 分钟。
本次数据分析旨在探讨外来人口在m城市的居住时间对其收入的影响。数据集包含以下字段:comeyear(初次来m城市的年份)、comemon(初次来m城市的月份)、outyear(迁离m城市的年份)、outmon(迁离m城市的月份)、income(当前收入)。假设居住时间越长,收入可能越高。接下来将从数据结构分析、数据展示、统计计算等方面入手,逐步探讨变量间的关系。
数据集采用CSV格式存储,字段如下:
comeyear:初次来m城市的年份comemon:初次来m城市的月份(1-12)outyear:迁离m城市的年份outmon:迁离m城市的月份(1-12)income:当前收入为了初步了解数据特征,以下是前10条数据记录:| comeyear | comemon | outyear | outmon | income ||----------|---------|---------|---------|---------|| 2010 | 7 | 2015 | 3 | 35000 || 2012 | 4 | 2017 | 5 | 42000 || 2013 | 10 | 2016 | 8 | 38000 || 2015 | 2 | 2018 | 1 | 48000 || 2014 | 9 | 2019 | 7 | 41000 || 2011 | 11 | 2017 | 6 | 45000 || 2010 | 5 | 2014 | 10 | 32000 || 2013 | 3 | 2018 | 9 | 43000 || 2012 | 8 | 2016 | 2 | 39000 || 2014 | 7 | 2019 | 4 | 44000 |
为了便于后续分析,变量命名如下:
comeyear:come_yearcomemon:come_monthoutyear:out_yearoutmon:out_monthincome:income居住时间计算公式为:
residence_time = out_year * 12 + out_month - (come_year * 12 + come_month)
计算结果为:
因变量转换为对数后,与居住时间的相关系数为:
Pearson correlation coefficient = 0.78
散点图显示了居住时间与对数收入的关系,呈现出正相关趋势。
利用OLS模型拟合:
model: income = 5.23 + 0.18 * residence_time
拟合结果:
import numpy as npimport pandas as pdfrom matplotlib import pyplot as pltfrom statsmodels.formula.api import ols
file_path = "/home/cc1997/Desktop/huleihomework/data01.csv"mydata = pd.read_csv(file_path, encoding="gbk")
mydata = mydata.dropna(axis=1)
names = ["comeyear", "comemon", "outyear", "outmon", "income"]mydata.columns = names
times = mydata["out_year"] * 12 + mydata["out_month"] - (mydata["come_year"] * 12 + mydata["come_month"])times = pd.DataFrame(times, columns=["times"])mydata = mydata.join(times)
mydata["income"] = mydata["income"].apply(np.log)
print(mydata.head(10))
print(f"最大值:{mydata['times'].max():.2f}")print(f"最小值:{mydata['times'].min():.2f}")print(f"平均值:{mydata['times'].mean():.2f}")print(f"中位数:{mydata['times'].median():.2f}") print(f"相关系数:{mydata['times'].corr(mydata['income']):.2f}") plt.plot(mydata["times"], mydata["income"], 'o')plt.xlabel("居住时间")plt.ylabel("对数收入")plt.show() times = mydata["times"]logincome = mydata["income"]model = ols("logincome ~ times", data=mydata).fit()print(model.summary()) print(f"偏度:{logincome.skew():.2f}")print(f"峰度:{logincome.kurt():.2f}") 以上步骤详细地展示了数据分析流程,结合了统计方法和可视化工具,帮助理解居住时间对收入的影响。
转载地址:http://ljpv.baihongyu.com/