【多元统计分析】Python实现对应分析

news2025/1/17 22:00:16

(一)题目要求

数据集包含地区生产总值的四个相关指标:x1劳动者报酬,x2生产税净额,x3固定资产折旧,x4营业盈余。对各个地区生产总值进行对应分析,揭示不同地区的生产总值构成特征。要求:画出对应分析图,从不同角度进行分析,得到相应的结论。

链接:https://pan.baidu.com/s/15a8PA7K2mUh6B0zzx6rUtA?pwd=0294 
提取码:0294

(二)题目分析

国内(地区)生产总值反映的是最终的生产成果,是最终的货物和服务,它有三种不同的表现形态:价值形态、收入形态和产品形态。从收入形态看,GDP是所有常住单位在一定时期内的生产活动所形成的原始收入之和,包括常住单位因从事生产活动而对劳动要素的支付、对政府的支付、对固定资产的价值补偿,以及获得的盈余。收入形态在国民经济核算中对应的核算方法是收入法,也称分配法,是从常住单位从事生产活动形成收入的角度来计算生产活动最终成果的方法。计算公式为:增加值=劳动者报酬+生产税净额+固定资产折旧+营业盈余,地区生产总值等于各行业增加值之和。

对应分析法是在R型和Q型因子分析的基础上发展起来的一种多元统计分析方法,又称为R-Q型因子分析。在因子分析中,如果研究的对象是样品,则需采用Q型因子分析;如果研究的对象是变量,则需采用R型因子分析。但这两种分析方法往往是相互对立的,必须分别对样品和变量进行处理。所以因子分析难以对样品的属性和样品之间的内在联系进行分析,因为样品的属性是变值,而样品却是固定的。为解决上述缺陷,法国统计学家J.P.Benzecri1970年提出了对应分析法。对应分析法最大特点就是能把众多的样品和众多的变量同时作到同一张图解上,将样品的大类及其属性在图上直观而又明了地表示出来,具有直观性。另外,它还省去了因子选择和因子轴旋转等复杂的数学运算及中间过程,可以从因子载荷图上对样品进行直观的分类,而且能够指示分类的主要参数(主因子)以及分类的依据,是一种直观、简单、方便的多元统计方法。

研究本问题的意义主要在于通过对国内各个地区的生产总值进行对应分析,挖掘不同地区的生产总值构成特征,了解各地区经济发展水平的差异,寻求国民经济良性发展的规律性因素,为实现全国各地区平衡发展、共同富裕提供有益的参考。

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
import seaborn as sns
from scipy.stats import chi2_contingency
from scipy.stats import chi2

data=pd.read_excel('题目2数据集.xlsx',header=None)
data=data.iloc[1:,1:]
data=data.values # 导入数据,为处理方便,转换为ndarray对象

# 进行卡方独立性检验
stat,p,dof,expected = chi2_contingency(data)  # stat卡方统计值,dof自由度,expected理论频率分布
prob = 0.95  # 选取95%置信度
critical = chi2.ppf(prob,dof)  # 自由度为dof下的卡方值
print('critical=%.3f,stat=%.3f,dof=%.3f'%(critical,stat,dof))
if abs(stat)>=critical:
    print('拒绝H0:不独立')
else:
    print('接受H0:独立')


data=pd.DataFrame(data)
P=data/data.sum().sum()   # 概率矩阵
p_j=P.sum()               # 列和
p_i=P.sum(axis=1)         # 行和

# 概率矩阵标准化
p_ip_j=np.dot(p_i.values.reshape(-1,1),p_j.values.reshape(1,-1)).astype('float')
Z=(P-p_ip_j)/np.sqrt(p_ip_j)
Z=pd.DataFrame(Z,index=data.index,columns=data.columns).to_numpy()

A=np.dot(Z.T,Z).astype(float)
Lambda,u=np.linalg.eig(A)  # A的特征值和特征向量

huizong=pd.DataFrame(sorted([i for i in Lambda if i>0],reverse=True),columns=['主惯量'])
huizong['奇异值']=np.sqrt(huizong['主惯量'])
huizong['占比']=huizong['主惯量']/huizong['主惯量'].sum()
huizong['累计']=huizong['占比'].cumsum()
print(huizong)
#       主惯量          奇异值         占比        累计
# 0  7.087109e-03  8.418497e-02  5.298812e-01  0.529881
# 1  4.039711e-03  6.355872e-02  3.020367e-01  0.831918
# 2  2.248080e-03  4.741393e-02  1.680820e-01  1.000000
# 3  2.981556e-19  5.460363e-10  2.229217e-17  1.000000
# 各维汇总表。从中可以看出,第一维和第二维的惯量占比占总惯量的83.19%,因此前两维解释了列联表数据83.19%的变异

# 求解Q型因子载荷矩阵
dim_index=[x[0] for x in sorted(enumerate(Lambda),reverse=True,key=lambda x:x[1])][:2]  # 求出贡献度前二的维度的索引
cols=['Dim'+str(i+1) for i in range(len(dim_index))]
u=np.multiply(u[:,dim_index],np.sqrt(Lambda[dim_index]))
Q=pd.DataFrame(u,index=p_j.index,columns=cols)
p_j=p_j.astype('float')
for col in cols:
    Q[col]=Q[col]/np.sqrt(p_j)  # 求出单位特征向量
Q.index=['劳动者报酬','生产税净值','固定资产折旧','营业盈余']


# 同上,求解R型因子载荷矩阵
Z=Z.astype(float)
B=np.dot(Z,Z.T)
Lambda,v=np.linalg.eig(B)  # B的特征值和特征向量
dim_index=[x[0] for x in sorted(enumerate(Lambda),reverse=True,key=lambda x:x[1])][:2]  # 求出贡献度前二的维度的索引
cols=['Dim'+str(i+1) for i in range(len(dim_index))]
v=np.multiply(v[:,dim_index],np.sqrt(Lambda[dim_index]))
R=pd.DataFrame(v,index=p_i.index,columns=cols).astype(float,copy=False)
for col in cols:
    R[col]=R[col]/np.sqrt(p_i)  # 求出单位特征向量
R.index=['北京','天津','河北','山西','内蒙古','辽宁','吉林',
                     '黑龙江','上海','江苏','浙江','安徽','福建','江西',
                    '山东','河南','湖北','湖南','广东','广西','海南',
                     '重庆','四川','贵州','云南','西藏','陕西','甘肃',
                     '青海','宁夏','新疆']


# 将R型因子载荷矩阵和Q型因子载荷矩阵进行拼接并绘制在同一张图上
data=pd.concat([R[['Dim1','Dim2']],Q[['Dim1','Dim2']]],axis=0)
data.index=['北京','天津','河北','山西','内蒙古','辽宁','吉林',
                     '黑龙江','上海','江苏','浙江','安徽','福建','江西',
                    '山东','河南','湖北','湖南','广东','广西','海南',
                     '重庆','四川','贵州','云南','西藏','陕西','甘肃',
                     '青海','宁夏','新疆','劳动者报酬','生产税净值','固定资产折旧','营业盈余']
data=data*(-1)
data['style']=['地区']*p_i.shape[0]+['指标']*p_j.shape[0]
markers={'地区':'o','指标':'D'}
ax=sns.scatterplot(x='Dim1',y='Dim2',hue='style',style='style',markers=markers,data=data)
ax.set_xlim(left=-0.37,right=0.25)
ax.set_ylim(bottom=-0.25,top=0.2)
ax.set_xticks([-0.3,-0.2,-0.1,0.0,0.1])
ax.set_yticks([-0.2,-0.1,0.0,0.1])
ax.axhline(0,color='k',lw=0.5)
ax.axvline(0,color='k',lw=0.5)
for idx in data.index:
     ax.text(data.loc[idx,'Dim1']+0.002,data.loc[idx,'Dim2']+0.002,idx)  # 显示标签
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文
plt.rcParams['axes.unicode_minus']=False
plt.xlabel("Dimension 1")
plt.ylabel("Dimension 2")
plt.title("Correspondence Analysis")
ax.get_legend().remove()  # 去除图例
plt.show()

(三)结果分析

1)观察邻近区域进行关联性分析

从下图中可以看出各个省份与地区生产总值的四个相关指标的距离,距离越近说明该地区的生产总值构成与该种指标关联度越高。例如天津、上海、陕西等地区生产总值来源与生产税净值关联度较高;湖南、安徽、浙江等省份与固定资产折旧的关联度较高;北京、河北、宁夏等地与劳动者报酬关联度较高;江苏等地与营业盈余的距离相对较近,表明这些地区与营业盈余的关联度相对较高。

2)通过向量分析进行偏好排序

如下图所示,从中心向任意点作向量,例如从中心向“劳动者报酬”作向量,然后让所有地区向这条向量及其延长线作垂线,垂点越靠近向量的正向的表示该地区生产总值中劳动者报酬比重最高。以广西、河北、福建三地为例,广西的垂点最靠近向量的正向,河北次之,福建最后,说明在这三个地区中,广西的地区生产总值中劳动者报酬比重最高,河北次之,福建最低。

3)通过向量的夹角来分析两者之间的相关性

可以通过向量夹角的角度大小看不同地区或不同收入来源之间的相似情况,向量夹角越小说明相似程度越高。如下图所示,生产税净值与固定资产折旧的夹角小于生产税净值与营业盈余的夹角,这可以说明前者比后者的相似度要高。运用同样的方法可以比较不同省份之间的相似程度。

 

4)通过坐标点离中心的距离研究其特征的显著性

坐标点越靠近中心,越没有特征;越远离中心,说明其特点越明显。例如,一个地区越靠近原点,表明其生产总值构成越没有特征;若一个地区越远离原点,表明其生产总值构成的特征性越显著。如下图所示,浙江、广东、湖南、安徽、山东等地区距离原点的距离较近,说明这些地区的生产总值构成的特征不突出。云南、天津、西藏、新疆、河南等地与原点距离较远,说明这些地区的生产总值构成的特征性较显著。例如西藏的劳动者报酬占比最高,天津的生产税净值比重最高。我们可以运用同样的方法来研究四种地区生产总值构成的特征的显著性程度。

参考文献

[1]陈钰芬,陈骥.多元统计分析[M].北京:清华大学出版社,2020.

[2]罗纳德·科迪,杰弗里·史密斯.SAS应用统计分析[M].辛涛,译.北京:人民邮电出版社,2011.

[3]吴楚豪,王恕立.中国省级GDP的构成及分解、地方政府经济竞赛与南北经济分化[J].经济评论,2020,(6).

[4][EB/OL].[2022-12-26].GitHub - MaxHalford/prince: Python factor analysis library (PCA, CA, MCA, MFA, FAMD)

[5]高惠璇.应用多元统计分析[M].北京:北京大学出版社,2005.

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

对多线程中线程池的理解

一.概念理解何为线程池?线程池的释义正如它的命名:专门用来存放线程的池子(集合类),也就是将线程存储于集合类,使用时从线程池中直接获取,使用结束后将线程放回集合类即可,这样就避免…

macOS Ventura 13.2 (22D49) Boot ISO 原版可引导镜像

本站下载的 macOS Ventura 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装。 2023 年 1 月 23 日(北京时间 24 日凌晨),m…

基于电流型磁链观测器的异步电机矢量控制学习

导读:本期主要介绍电流型磁链观测器(current flux observer)在不同坐标系下的表现形式,应用在异步电机矢量控制系统中。如需要文中的仿真模型,关注微信公众号:浅谈电机控制,获取。一、引言磁链估…

JavaEE day4 初识HTML+总结3

FORM表单的常见type属性 FORM表单的tpye属性非常多,这里只介绍常见的几个: text : 输入普通文本,例如登录注册下的用户名 password : 输入密码文本,例如登录注册下的密码,隐藏用户的输入 ra…

如何使用JDBC操作数据库,JDBC实战案例详细解读

1. 前言 前面 3 篇 JDBC 入门级基础文章中,我们已经探讨了什么是 JDBC,如何使用JDBC 操作数据库,JDBC API 详细解读,以及数据库连接池的基础等。文章带来的反馈还不错,今天我们使用前面学习的内容做一个实战案例训练。…

贪心 135. 分发糖果

135. 分发糖果 难度困难1086 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果&…

uboot启动流程简要版(基于armv7)

uboot启动流程(armv7) uboot介绍 uboot就是一段引导程序,在加载系统内核之前,完成硬件初始化,内存映射,为后续内核的引导提供一个良好的环境。 uboot是bootloader的一种,全称为universal boot…

二叉树基础oj练习

1.单值二叉树 题目: 力扣https://leetcode.cn/problems/univalued-binary-tree/ 思路: 单值二叉树 root和左右孩子的值相等 左子树是单值二叉树 右子树是单值二叉树 代码: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeN…

CSS 艺术之心形-彩虹-加载动画

CSS 艺术之心形-彩虹-加载动画(居中抖动问题)参考描述效果HTMLCSS重置元素的部分默认样式bodyli动画定义指定animationul居中抖动问题代码总汇参考 项目描述搜索引擎BingMDNMDN Web Docs 描述 项目描述Edge109.0.1518.61 (正式版本) (64 位) 效果 HTML…

【Vue笔记】Vue中默认插槽slot、具名插槽slot、自定义组件的v-model属性的使用

这篇文章,主要介绍Vue中默认插槽slot、具名插槽slot、自定义组件的v-model属性的使用。 目录 一、插槽slot介绍 1.1、默认插槽 1.2、具名插槽 (1)如何定义具名插槽??? (2)如何使…

3DMAX纹理插件BerconMaps使用教程

BerconMaps是3dMax的第三方纹理插件。它添加了五个新的3dMax纹理贴图:噪波(Noise)、木纹(Wood)、瓷砖(Tile)、失真(Distortion)和渐变(Gradient)。…

linux配置samba服务

文章目录samba服务第一步:下载samba服务第二步:开启服务,查看服务状态第三步:在文件夹系统查看第四步:设置samba的配置文件第五步:再次去尝试连接linux服务共享修改smab服务的配置设置samba服务的用户名和密…

verilog实现计算器设计

该实验为用verilog编写的一个运算系统,其功能是实现4位整数的加、减、乘、除运算。运算时通过矩阵键盘输入运算类型和运算所需要的数据,然后通过内部电路处理,将计算的结果送于数码管或LCD1602显示。 工程截图如下: 本设计分为两个子模块,按键输入和数码管输出。 还有LC…

python字符串

python字符串 文章目录python字符串一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.字符串创建2.转义字符3.运算符4.格式化5.三引号6.内建函数总结一、实验目的 掌握字符串的用法 二、实验原理 字符串 字符串是一种序列,用于表示和存储文本。py…

Ubuntu16.04安装Chrome出错

安装了Ubuntu16.04之后想要装个Chrome,本来觉得是很简单的事情,下载->安装就结束了,结果没想到搞了好久,最后发现是因为自己偷懒所造成的!因此,写下这篇博文做警示,如果其他人也碰到这样的问…

20230124使AIO-3568J开发板在Android12下横屏

20230124使AIO-3568J开发板在Android12下横屏 2023/1/24 14:05 百度搜索:RK3568 强制横屏 http://www.360doc.com/content/12/0121/07/29321110_1049371522.shtml RK3568 Android-HDMI旋转屏幕显示 硬件开发板:OK3568-C开发板(基于国产瑞芯微…

【Leetcode每日一题】34.在排序数组中查找元素的第一个和最后一个位置|二分求下标

🌱博主简介:大一计科生,努力学习Java中!热爱写博客~预备程序媛 📜所属专栏:LeetCode每日一题–进击大厂 ✈往期博文回顾: 【Leetcode每日一题】35.搜素插入位置|二分查找数组下标 🕵️‍♂️近期目标&#…

恶意代码分析实战 5 分析恶意Windows程序

1 Lab07-01 本次实验分析lab07-01.exe,lab07-02.exe,先来看lab07-01.exe的问题 问题 计算机重启后,这个程序如何确保它继续运行(达到持久化驻留) 首先,查看导入函数。 OpenSCManagerA和CreateServiceA函数暗示着这个恶意代码…

蓝队-HTTP协议的分析

文章目录应用层的协议→HTTP协议访问地址web网站的正确访问姿势请求协议https访问的密钥文件网站的部署通过https协议访问请求报文响应报文请求方法http头协议cookiesRefererUser-AgentX-Forwarded-ForHTTP 状态码HTTP content-type抓包分析HTTP抓包代理插件的下载代理第一种方…

电商项目之同一笔单多次收款成功

1 问题背景 有个收单系统(简称S系统),作用是收单,相当于支付渠道,能够作为第三方服务对接其他支付平台。电商系统(简称A系统)与S系统是隔离的。A系统发起支付请求给S系统,S系统包装一…