吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2574|回复: 5
收起左侧

[Python 转载] 基于logistic模型全国or各市人口预测

[复制链接]
木头MT 发表于 2021-8-3 15:52
本帖最后由 木头MT 于 2021-8-3 15:59 编辑

这是之前的一次作业 针对于城市规划里面的一个内容
老师上课提的那种算法感觉很简单
就自己去查了一下可以用logistic模型预测人口
就有了这个程序人口
数据可以在统计年鉴里面拿
也可以在国家数据下载 https://data.stats.gov.cn/easyquery.htm?cn=C01
不知道会不会遇到同样学这门课的同学
做地区的数据还是需要用统计年鉴
不过在统计局的网站找起来焦头烂额的
推荐使用知网里面的统计年鉴可以直接下载电子表格!!!
[Python] 纯文本查看 复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
#基于logistic模型全国人口预测
import numpy as np
import matplotlib.pyplot as plt
import math
import pandas as pd
from numpy import polyfit, poly1d
temp=pd.read_csv(r"testdata/population.csv",header=None)
t=temp[0]
x=temp[1]
x1=temp[2][:-1]
x2=temp[3][:-1]
dx=(x2-x1)/x2
a=polyfit(x2,dx,1)
r=a[1]
xm=-r/a[0]
x0=55196
def p(xm,r,x0,t):
    f=xm/(1+(xm/x0-1)*np.exp(-r*(t-1949)))
    return f
future=np.arange(2020, 2055, 5)
future_predict=p(xm,r,x0,future)
plot1 = plt.plot(t, x, '-',label="data")
plot2 = plt.plot(t,p(xm,r,x0,t),'r',label='theory_data')
plot3 = plt.plot(future, future_predict, '*',label='predict_data')
plt.xlabel('years')
plt.ylabel('population')
plt.legend(loc=0)
plt.show()
p(xm,r,x0,2020)

image.png
再贴一个省级各市的预测
做了循环
[Python] 纯文本查看 复制代码
#基于logistic模型某省各市人口预测
temp=pd.read_csv(r"testdata/gx.csv",header=None)
def p(xm,r,x0,t):
    f=xm/(1+(xm/x0-1)*np.exp(-r*(t-2003)))
    return f
def predict_population():
    n=np.shape(temp)[1]-1
    i=1
    m=0
    t=np.int64(temp[0][1:])
    while i<=n:
        x=np.float64(temp[i][1:])
        x1=np.float64(temp[i][1:-1])
        x2=np.float64(temp[i][2:])
        dx=(x2-x1)/x2
        a=polyfit(x2,dx,1)
        #r=abs(a[1])
        r=a[1]
        xm=-r/a[0]
        x0=x[1]
        print('增长率%.2f'%r)
        #绘图
        title=temp[i][0]
        future=np.arange(2020, 2055, 5)
        future_predict=p(xm,r,x0,future)
        plot1 = plt.plot(t, x, 'k^-',label="data")
        plot2 = plt.plot(t,p(xm,r,x0,t),'-r',label='theory_data')
        plt.title(title)
        plt.xlabel('years')
        plt.ylabel('population')
        plt.legend(loc=0)
        plt.show()
        plot3 = plt.plot(future, future_predict, '*',label='predict_data')
        for m in range (len(future_predict)):
            plt.text(future[m],future_predict[m],future_predict[m],color="red")
            m+=1
        plt.legend(loc=2)
        plt.title(title+"_predict 2020~2050")
        plt.xlabel('years')
        plt.ylabel('population')
        plt.show()
        i+=1

各市的图我就贴一个
image.png

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yysyWang 发表于 2021-8-3 16:25
感觉这种也不靠谱,人口流入流出对拟合应该影响很大
 楼主| 木头MT 发表于 2021-8-3 16:36
yysyWang 发表于 2021-8-3 16:25
感觉这种也不靠谱,人口流入流出对拟合应该影响很大

其实这种不适合局部性的估计 只有全国总人口才比较符合,毕竟没有人口流动参数参与计算
Dengyuntao 发表于 2021-8-3 18:56
小伙子你的预测怎么还是向上的啊,人口增长是下滑的
wss0823 发表于 2021-8-4 09:58
Dengyuntao 发表于 2021-8-3 18:56
小伙子你的预测怎么还是向上的啊,人口增长是下滑的

人口增长是向上的,新生人口是下滑的
Dengyuntao 发表于 2021-8-4 15:41
wss0823 发表于 2021-8-4 09:58
人口增长是向上的,新生人口是下滑的

好的 我搞混了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表