博客
关于我
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/

你可能感兴趣的文章
NLP学习笔记:使用 Python 进行NLTK
查看>>
NLP度量指标BELU真的完美么?
查看>>
NLP的不同研究领域和最新发展的概述
查看>>
NLP的神经网络训练的新模式
查看>>
NLP采用Bert进行简单文本情感分类
查看>>
NLP问答系统:使用 Deepset SQUAD 和 SQuAD v2 度量评估
查看>>
NLP项目:维基百科文章爬虫和分类【02】 - 语料库转换管道
查看>>
NLP:使用 SciKit Learn 的文本矢量化方法
查看>>
nmap 使用方法详细介绍
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
nmap指纹识别要点以及又快又准之方法
查看>>
Nmap渗透测试指南之指纹识别与探测、伺机而动
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NMF(非负矩阵分解)
查看>>
nmon_x86_64_centos7工具如何使用
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.7 Parameters vs Hyperparameters
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>