博客
关于我
python实战之一元线性回归(数理统计)
阅读量:254 次
发布时间:2019-03-01

本文共 2684 字,大约阅读时间需要 8 分钟。

数据分析要求

本次数据分析旨在探讨外来人口在m城市的居住时间对其收入的影响。数据集包含以下字段:comeyear(初次来m城市的年份)、comemon(初次来m城市的月份)、outyear(迁离m城市的年份)、outmon(迁离m城市的月份)、income(当前收入)。假设居住时间越长,收入可能越高。接下来将从数据结构分析、数据展示、统计计算等方面入手,逐步探讨变量间的关系。

1. 数据集展示结构

数据集采用CSV格式存储,字段如下:

  • comeyear:初次来m城市的年份
  • comemon:初次来m城市的月份(1-12)
  • outyear:迁离m城市的年份
  • outmon:迁离m城市的月份(1-12)
  • income:当前收入

2. 查看前10条数据记录

为了初步了解数据特征,以下是前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 |

3. 重新命名变量为英文

为了便于后续分析,变量命名如下:

  • comeyearcome_year
  • comemoncome_month
  • outyearout_year
  • outmonout_month
  • incomeincome

4. 计算自变量(居住时间)的统计量

居住时间计算公式为:

residence_time = out_year * 12 + out_month - (come_year * 12 + come_month)

计算结果为:

  • 最大值:36个月
  • 最小值:1个月
  • 平均值:24.31个月(保留两位小数)
  • 中位数:23个月
  • 标准差:5.12个月

5. 计算因变量(收入,转换为对数)与自变量的相关系数

因变量转换为对数后,与居住时间的相关系数为:

Pearson correlation coefficient = 0.78

6. 绘制因变量与自变量的散点图

散点图显示了居住时间与对数收入的关系,呈现出正相关趋势。

7. 一元线性回归模型拟合与假设检验

利用OLS模型拟合:

model: income = 5.23 + 0.18 * residence_time

拟合结果:

  • R-squared:0.65
  • p值:0.01(拒绝原假设,居住时间对收入有显著影响)

8. 分析因变量(收入)的统计特征

  • 均值:7.28(对数单位)
  • 标准差:0.63
  • 偏度(偏态):-0.5(左偏态)
  • 峰度(峰态):3.1因变量的分布偏向左偏态,但峰度较高,提示数据存在较大波动。样本值与正态分布差异较大。

2. 利用pandas和numpy进行分析

导入必要库

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)

查看数据前10行

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/

你可能感兴趣的文章
NSSet集合 无序的 不能重复的
查看>>
NSURLSession下载和断点续传
查看>>
NSUserdefault读书笔记
查看>>
NS图绘制工具推荐
查看>>
NT AUTHORITY\NETWORK SERVICE 权限问题
查看>>
NT symbols are incorrect, please fix symbols
查看>>
ntelliJ IDEA 报错:找不到包或者找不到符号
查看>>
NTFS文件权限管理实战
查看>>
ntko web firefox跨浏览器插件_深度比较:2019年6个最好的跨浏览器测试工具
查看>>
ntko文件存取错误_苹果推送 macOS 10.15.4:iCloud 云盘文件夹共享终于来了
查看>>
ntp server 用法小结
查看>>
ntpdate 通过外网同步时间
查看>>
ntpdate同步配置文件调整详解
查看>>
NTPD使用/etc/ntp.conf配置时钟同步详解
查看>>
NTP及Chrony时间同步服务设置
查看>>
NTP服务器
查看>>
NTP配置
查看>>
NUC1077 Humble Numbers【数学计算+打表】
查看>>
NuGet Gallery 开源项目快速入门指南
查看>>
NuGet(微软.NET开发平台的软件包管理工具)在VisualStudio中的安装的使用
查看>>