分析1996~2015年人口数据特征间的关系

分析1996~2015年人口数据特征间的关系人口数据总共拥有6个特征,分别为年末总人口、男性人口、女性人口、城镇人口、乡村人口和年份。查看各个特征随着时间推移发生的变化情况可以分析男女人口比例、城乡人口变化的方向。程序所用到的数据:链接:https://pan.baidu.com/s/1TB3vmiOUZ4ll0wZYi3876w提取码:58vo程序代码:import numpy as npimport matplotlib.pyplot as plt#使用numpy库读取人口数据data
摘要由CSDN通过智能技术生成

分析1996~2015年人口数据特征间的关系

人口数据总共拥有6个特征,分别为年末总人口、男性人口、女性人口、城镇人口、乡村人口和年份。查看各个特征随着时间推移发生的变化情况可以分析男女人口比例、城乡人口变化的方向。

所需文件:populations.npz
链接:https://pan.baidu.com/s/1TB3vmiOUZ4ll0wZYi3876w
提取码:58vo

注意:
所需文件放入指定磁盘(也可自定义位置,但需要在代码上修改文件位置)

程序代码:

import numpy as np
import matplotlib.pyplot as plt

#使用numpy库读取人口数据
data=np.load(‘E:/Data/populations.npz’,allow_pickle=True)
print(data.files)#查看文件中的数组
print(data[‘data’])
print(data[‘feature_names’])

plt.rcParams[‘font.sans-serif’]=‘SimHei’#设置中文显示
name=data[‘feature_names’]#提取其中的feature_names数组,视为数据的标签
values=data[‘data’]#提取其中的data数组,视为数据的存在位置

p1=plt.figure(figsize=(12,12))#确定画布大小
pip1=p1.add_subplot(2,1,1)#创建一个两行一列的子图并开始绘制
#在子图上绘制散点图
plt.scatter(values[0:20,0],values[0:20

  • 7
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要导入所需的库和数据: ```python import pandas as pd import matplotlib.pyplot as plt # 读取数据 data = pd.read_csv('population.csv') ``` 接下来,可以先通过散点图来初步观察各特征关系: ```python # 散点图 plt.scatter(data['year'], data['births'], label='births') plt.scatter(data['year'], data['deaths'], label='deaths') plt.scatter(data['year'], data['migration'], label='migration') plt.scatter(data['year'], data['natural_increase'], label='natural increase') plt.legend() plt.xlabel('year') plt.ylabel('population') plt.title('Population Characteristics') plt.show() ``` 这段代码会生成一个散点图,横坐标是份,纵坐标是人口数量,四种颜色分别代表出生人口、死亡人口、迁移人口和自然增长人口。从图中可以看出,自然增长人口和出生人口呈现正相关关系,而死亡人口和迁移人口与自然增长人口和出生人口呈现负相关关系。 接下来,可以使用线性回归模型来更准确地分析特征关系。这里使用OLS(ordinary least squares)方法进行线性拟合: ```python import statsmodels.api as sm # 线性回归 x = data[['births', 'deaths', 'migration']] y = data['natural_increase'] x = sm.add_constant(x) model = sm.OLS(y, x).fit() print(model.summary()) ``` 这段代码会输出线性回归的统计结果。其中,R-squared(R方)的值可以表明模型的拟合程度,值越接近1越好。此外,t值和P值可以用来判断自变量对因变量的影响是否显著,一般认为P值小于0.05时,该自变量对因变量的影响是显著的。 最后,可以画出线性回归的拟合直线和残差图来进一步分析模型的拟合效果: ```python # 拟合直线 fig, ax = plt.subplots() ax.scatter(y, model.fittedvalues) ax.plot([y.min(), y.max()], [y.min(), y.max()], 'k--', lw=4) ax.set_xlabel('natural increase') ax.set_ylabel('predicted natural increase') ax.set_title('Natural Increase Prediction') plt.show() # 残差图 fig, ax = plt.subplots() ax.scatter(model.fittedvalues, model.resid) ax.set_xlabel('predicted natural increase') ax.set_ylabel('residuals') ax.set_title('Natural Increase Residuals') plt.show() ``` 这段代码会生成两张图,第一张是拟合直线图,横坐标是实际自然增长人口,纵坐标是预测自然增长人口,黑色虚线为理论直线(即实际值等于预测值),拟合程度越好的点越靠近理论直线。第二张图是残差图,横坐标是预测自然增长人口,纵坐标是残差(即实际值与预测值之的差),理论上残差应该随机分布在0线附近,不应该呈现任何规律性。如果残差存在规律,说明模型存在欠拟合或过拟合的问题。 综上,通过matplotlib和statsmodels库,可以方便地进行数据分析和模型拟合,帮助我们更好地理解数据特征关系

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值