OLS回归-python实现

背景说明:帕累托系数是用来衡量城市规模位序分布的统计量,回归的目的是计算全国31个省份每个省份每一年的帕累托系数,每一个帕累托系数由某个省份某年中所有城市的观测值回归得到

1.回归方程

ln(rank−1/2)=A−ξ×lnsize+μ

变量说明:size是指城市的人口数据,rank是值城市的位序(desc),A是截距,μ是误差

2.数据说明

输入数据:省份-年份-城市-人口                   面板数据(excel文件形式)

期望输出数据:省份-年份-帕累托系数          面板数据(excel文件形式)

3.主要使用的第三方库

statsmodels 是一个 Python 库,用于拟合统计模型、进行统计测试以及统计数据探索和可视化。它是一个非常强大的工具,可以用于众多的统计数据分析任务,从简单的线性回归到复杂的时间序列分析都能胜任

ols回归

import statsmodels.api as sm    
# 进行OLS回归
X = sm.add_constant(x)
model = sm.OLS(Y, X)    # 生成模型
results = model.fit()    # 进行回归并得到回归结果

其中x是自变量,add_constant是添加截距的,这是因为常用的统计库都默认没有截距项(只接受x,y两个参数),所以添加截距项的时候是要给自变量加的,然后生成一个新的自变量,本质是给自变量的旁边再加一列截距列

回归结果的获取
 

results = model.fit()

# 输出模型的系数result.params有结果的各种系数(包括截距和ln_size的系数),
print("截距:", results.params['const'])  # 模型的截距
print("ln_size的系数:", results.params['ln_size'])  # ln_size的系数

# 输出R方值(模型拟合度的衡量指标)
print("R方值:", results.rsquared)

# 输出调整后的R方值(考虑了自变量数量的拟合度衡量)
print("调整后的R方值:", results.rsquared_adj)

# 输出系数的p值(用于检验系数的统计显著性)
print("截距的p值:", results.pvalues['const'])
print("ln_size的p值:", results.pvalues['ln_size'])

# 输出系数的置信区间
print("ln_size的置信区间:", results.conf_int().loc['ln_size'])

# 输出模型的整体统计摘要
print(results.summary())

# 输出模型残差
print(results.resid)

# 使用模型进行预测(假设有新的数据 new_x)
new_x = [/* 新数据 */]
new_data = sm.add_constant(new_x)
predictions = results.predict(new_data)
print("预测值:", predictions)

4.实现代码

import pandas as pd
import numpy as np
import statsmodels.api as sm

def calculate_pareto_coefficient(df):
    """
    计算帕累托系数
    :param df: DataFrame,包含某个省份某年的所有城市及其人口数据
    :return: 帕累托系数
    """
    # 按人口数量降序排序并计算排名
    df = df.sort_values(by='城市区域人口数量', ascending=False)
    df['rank'] = range(1, len(df) + 1)

    # 应用帕累托回归公式
    df['ln_rank'] = np.log(df['rank'] - 0.5)
    df['ln_size'] = np.log(df['城市区域人口数量'])

    # 进行OLS回归
    X = sm.add_constant(df['ln_size'])
    model = sm.OLS(df['ln_rank'], X)
    results = model.fit()

    # 提取帕累托系数
    return -results.params['ln_size']

if __name__ == '__main__':
    # 加载数据
    data = pd.read_excel('省份_年份_城市_人口_panel_data.xlsx')

    # 计算每个省份每年的帕累托系数
    pareto_coefficients = data.groupby(['province', '年份']).apply(calculate_pareto_coefficient)

    # 将Series转换为DataFrame
    pareto_coefficients_df = pareto_coefficients.reset_index()
    pareto_coefficients_df.columns = ['Province', 'Year', 'Pareto_Coefficient']

    # 将结果保存到新的Excel文件
    pareto_coefficients_df.to_excel('pareto_coefficients.xlsx', index=False)

5.代码重点解析

对于代码中的calculate_pareto_coefficient中的回归部分已经解释的比较清楚了,调用函数谁不会啊,最麻烦的还是回归前的数据整理部分。下面详细解释

由于数据是面板数据,所以没有办法直接用dataframe的index和column来直接索引出想要的数据,每一次的回归需要的都是某一省份某一年的所有城市数据,那么我们每一次回归都要筛选出这种维度的数据来,所以要对原始的df进行两次分组,先按省份再按年份,之后每一组都是某个省份某个年份的数据,且分组后每组中包含了匹配的所有数据,形成一个新的df,并不会改变原数据的结构,每组数据都会作为实参传入calculate_pareto_coefficient函数中

# 计算每个省份每年的帕累托系数
pareto_coefficients = data.groupby(['province', '年份']).apply(calculate_pareto_coefficient)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/774739.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云仓酒庄天津分公司:深化业务常态化运营

标题:云仓酒庄天津分公司:深化业务常态化运营,以沙龙为纽带,构建价值叠加的酒业新生态 在当今复杂多变的经济环境中,传统酒业面临着前所未有的挑战与机遇。随着数字化转型的加速和消费者偏好的日益多元化,…

JAVA--JSON转换工具类

JSON转换工具类 import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackso…

2024年保安员职业资格考试题库大数据揭秘,冲刺高分!

186.安全技术防范是一种由探测、()、快速反应相结合的安全防范体系。 A.保安 B.出警 C.延迟 D.监控 答案:C 187.安全技术防范是以()和预防犯罪为目的的一项社会公共安全业务。 A.预防灾害 B.预防损失 C.预防失…

StreamSets: 数据采集工具详解

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 欢迎关注微信公众号:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&a…

【EI会议/稳定检索】2024年应用数学、化学研究与物理工程国际会议(AMPE 2024)

2024 International Conference on Applied Mathematics, Chemical Research, and Physical Engineering 2024年应用数学、化学研究与物理工程国际会议(AMPE 2024) 【会议信息】 会议简称:AMPE 2024 大会时间:点击查看 截稿时间:官网查看 大…

【T+】畅捷通T+产品,将原财务报表中的模板转换到财务报表菜单下。

【问题描述】 畅捷通T3产品中账套使用行业性质是【新会计准测制度】升级到畅捷通T+产品, 行业性质默认为【2001年企业会计制度】, 但是升级成功后,账套的财务报表下没有对应报表模板,需要手工编辑,太费劲了。 并且在T+产品中新建账套,行业性质选择【2001年企业会计制度】…

verilog行为建模(一):基本概念

目录 1.行为描述2.过程(procedural)块3.过程赋值(procedural assignment)4.过程时序控制5.简单延时6.边沿敏感时序7.wait语句 微信公众号获取更多FPGA相关源码: 1.行为描述 行为级描述是对系统的高抽象级描述。在这个级别,表达的是输入和输出之间转换…

比 PIP 快 100 倍的安装工具

uv 是一个由 Rust 开发的 pip 工具,比 pip 快 100 倍,难以置信,不过真的是快太多了。 安装 在 Mac 上直接通过 brew install uv 安装即可。 venv 创建运行环境,默认当前目录下 .venv uv venv 依赖安装 uv pip install -r re…

【Mathematica14.0】快速从下载安装到使用

目录 1.简介 2.下载安装 下载 安装 3.一小时掌握mathematica使用 单元模式 内置函数 符号表达式 迭代器 赋值 通配符及查找替换 函数定义 匿名函数(拉姆达表达式) 函数映射 函数式与运算符 函数自定义选项 图形可视化 交互式界面 数值…

深度神经网络语言识别

「AI秘籍」系列课程: 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识 使用 DNN 和字符 n-gram 对一段文本的语言进行分类(附 Python 代码) 资料来源,flaticon:htt…

京东金融大数据分析平台总体架构:剖析和解读

京东金融大数据分析平台总体架构:剖析和解读 在现代金融行业中,大数据分析已成为决策支持和业务创新的重要工具。京东金融凭借其强大的大数据分析平台,成功地将海量数据转化为洞察力,为企业和用户提供优质服务。本文将深入探讨京…

浅谈反射机制

1. 何为反射? 反射(Reflection)机制指的是程序在运行的时候能够获取自身的信息。具体来说,反射允许程序在运行时获取关于自己代码的各种信息。如果知道一个类的名称或者它的一个实例对象, 就能把这个类的所有方法和变…

VMware替换关键技术:核心业务系统中,访存密集型应用的性能优化

越来越多用户采用虚拟化、超融合以及云平台环境来承载其核心业务,核心业务的高并发对性能的要求尤为严格,在VMware替换的热潮下,原VMware用户也更为关注新平台在核心业务上的性能表现是否对标,或实现超越。深信服将通过系列解析&a…

当心!不要在SpringBoot中再犯这样严重的错误

1. 简介 在Spring Boot中,Configuration注解用于声明配置类,以定义和注册Bean对象。这些Bean对象可以是普通的业务组件,也可以是特殊的处理器,如BeanPostProcessor或BeanFactoryPostProcessor,用于在Spring容器中对其…

OCC显示渲染性能分析及优化方案

1.背景介绍 君方智能设计平台(ShipMaker),使用OCC中的图形构造功能和图形渲染功能。OCC的图形渲染采用Opengl API 并且将所有图形渲染相关的逻辑放置在TKOpenGL模块中。 性能场景1: 大场景中包含2万个构件,超过300万三角面片时,…

景区智慧公厕解决方案,公厕革命新方式

在智慧旅游的浪潮下,景区智慧公厕解决方案正悄然引领着一场公厕革命,不仅革新了传统公厕的管理模式,更以智能化、人性化的服务理念,为游客提供了前所未有的舒适体验。作为智慧城市建设的重要一环,智慧公厕解决方案正逐…

跟《经济学人》学英文:2024年07月06日这期 Central banks are winning the battle against inflation

Central banks are winning the battle against inflation. But the war is just getting started Politics and protectionism will make life difficult 原文: The trajectory of inflation has not given central bankers much cause for celebration in rece…

时间同步协议详解:从原理到应用的全方位解析

作者介绍 随着信息技术的飞速发展,时间同步技术在通信、导航、电力等多个领域发挥着越来越重要的作用。从日常生活到高精尖的科学实验,精确的时间同步都是确保系统正常运行和任务成功完成的关键因素。本文将对几种主流的时间同步技术进行介绍和对比分析&…

剪画小程序:自媒体工具推荐:视频文案提取!

各位小伙伴,你们好啊! 上周五观看《歌手 2024》第八期时,我再次被何炅老师幽默风趣的主持风格所折服。他的每一句话都仿佛带着魔力,让现场气氛热烈非凡,实在令人羡慕不已! 何炅老师的口才之所以如此出色&a…

代码随想录算法训练营第四十四天|188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

188.买卖股票的最佳时机IV 题目链接:188.买卖股票的最佳时机IV 文档讲解:代码随想录 状态:不会 思路: 在股票买卖1使用一维dp的基础上,升级成二维的即可。 定义dp[k1][2],其中 dp[j][0] 表示第j次交易后持…