目录

1.数据集介绍

2.相关任务

答案解析

第一问

第二问

第三问

第四问

完整答案


1.数据集介绍

教师数据 (aaup.csv) 该数据来自美国大学教授协会 (AAUP) 年度普查, 包括分别按照正教授和副教授的平均工资和补贴 (1994 年) 统计的数据。一共有13 个数量变量: ASF (正教授平均工资)、 ASA1 (副教授平均工资)、 ASA2 (助理教授平均工资)、 ASALL (所有级别平均工资)、 ACF (正教授平均补贴)、ACA1 (副教授平均补贴)、 ACA2 (助理教授平均补贴)、 ACALL (所有级别平均补贴)、 NF (正教授人数)、NA1 (副教授人数)、 NA2 (助理教授人数)、 NIN (助教人数)、 NALL (所有级别教授数目).该数据涉及 1161 个学校。现需要分析一组变量各类人员薪资(以字母 A 为开头的 8 个变量),与另一组变量教室薪资(以字母 N 开头的 5 个变量)之间存在的潜在关系。

2.相关任务

(1)计算所有变量间相关系数矩阵(11×11 的矩阵)M_corr:利用以下代码实现numpy.corrcoef(x, y=None, rowvar=True, bias=<no value>, ddof=<no value>, *, dtype=None),观察一下两组变量中哪些变量可能存在相关性。

(2)利用典型相关分析计算两组变量之间的典型相关系数,并绘制二维折线图(崖底碎石土),其中横坐标为典型相关系数的个数,纵坐标为对应的第 i 个典型相关系数。

(3)计算各个原始变量与典型相关变量的相关系数,即典型相关系数:依据相关系数的大小,寻找出两组变量之间哪些变量存在相关性(即相关系数较大的)

答案解析

第一问

计算所有变量间的相关系数矩阵可以使用 numpy 库中的 corrcoef() 函数。代码如下:

import numpy as np
import pandas as pd# 加载数据
data = pd.read_csv('aaup.csv')# 选择需要计算的变量
variables = ['ASF', 'ASA1', 'ASA2', 'ASALL', 'ACF', 'ACA1', 'ACA2', 'ACALL', 'NF', 'NA1', 'NA2', 'NIN', 'NALL']
data_selected = data[variables]# 计算相关系数矩阵
M_corr = np.corrcoef(data_selected, rowvar=False)
print(M_corr)

输出结果为一个 11x11 的矩阵,表示各个变量之间的相关系数。其中,M_corr[i,j] 表示第 i 个变量和第 j 个变量之间的相关系数。例如,M_corr[0,1] 表示第一个变量 ASF 和第二个变量 ASA1 之间的相关系数。根据输出结果可以观察到哪些变量之间可能存在相关性。

E:\ProgramFiles\Anaconda3\envs\deeplearning\python.exe E:/山东农业大学课程学习/多元统计分析/2023.4.13实验/main.py 
[[1.         0.94751341 0.91960584 0.9702947  0.99021094 0.93145465
  0.90281695 0.95937286 0.57800877 0.5617014  0.55266483 0.15147169
  0.58070552]
 [0.94751341 1.         0.9447734  0.9445597  0.94446422 0.98266658
  0.93114968 0.93951923 0.48926499 0.49609538 0.48375808 0.13675529
  0.50064036]
 [0.91960584 0.9447734  1.         0.93172582 0.91435193 0.92891304
  0.97410036 0.92363623 0.52900121 0.53179999 0.51483915 0.15006731
  0.53914622]
 [0.9702947  0.9445597  0.93172582 1.         0.96478088 0.93219237
  0.9176687  0.98944384 0.60597732 0.54293021 0.50925084 0.07835664
  0.57028188]
 [0.99021094 0.94446422 0.91435193 0.96478088 1.         0.94994155
  0.91962159 0.97222777 0.55381693 0.53823947 0.52405721 0.13081159
  0.55386278]
 [0.93145465 0.98266658 0.92891304 0.93219237 0.94994155 1.
  0.94990325 0.95211478 0.47025354 0.4744814  0.45578275 0.11423847
  0.47691177]
 [0.90281695 0.93114968 0.97410036 0.9176687  0.91962159 0.94990325
  1.         0.93836008 0.51779867 0.51646517 0.49540531 0.13753547
  0.52343893]
 [0.95937286 0.93951923 0.92363623 0.98944384 0.97222777 0.95211478
  0.93836008 1.         0.58301449 0.52423068 0.48697379 0.06677791
  0.54792357]
 [0.57800877 0.48926499 0.52900121 0.60597732 0.55381693 0.47025354
  0.51779867 0.58301449 1.         0.89171977 0.86127378 0.35576106
  0.96402734]
 [0.5617014  0.49609538 0.53179999 0.54293021 0.53823947 0.4744814
  0.51646517 0.52423068 0.89171977 1.         0.92342206 0.4534978
  0.96280162]
 [0.55266483 0.48375808 0.51483915 0.50925084 0.52405721 0.45578275
  0.49540531 0.48697379 0.86127378 0.92342206 1.         0.53562668
  0.95125713]
 [0.15147169 0.13675529 0.15006731 0.07835664 0.13081159 0.11423847
  0.13753547 0.06677791 0.35576106 0.4534978  0.53562668 1.
  0.48208017]
 [0.58070552 0.50064036 0.53914622 0.57028188 0.55386278 0.47691177
  0.52343893 0.54792357 0.96402734 0.96280162 0.95125713 0.48208017
  1.        ]]

进程已结束,退出代码0

第二问

典型相关分析可以使用 Python 中的 canonical_correlation_analysis() 函数实现。在 SciPy 库中,可以使用 scipy.stats 中的 canonical_correlation_analysis() 函数进行计算。代码如下:

import numpy as np
import pandas as pd
from scipy.stats import canonical_correlation_analysis
import matplotlib.pyplot as plt# 加载数据
data = pd.read_csv('aaup.csv')# 选择需要计算的变量
group1_vars = ['ASF', 'ASA1', 'ASA2', 'ASALL', 'ACF', 'ACA1', 'ACA2', 'ACALL']
group2_vars = ['NF', 'NA1', 'NA2', 'NIN', 'NALL']
data_group1 = data[group1_vars]
data_group2 = data[group2_vars]# 计算典型相关系数
r, _, _ = canonical_correlation_analysis(data_group1, data_group2)
print(r)# 绘制二维折线图
num_canonical = len(r)
plt.plot(range(1, num_canonical + 1), r)
plt.xlabel('Canonical variable')
plt.ylabel('Canonical correlation coefficient')
plt.show()

输出结果包括典型相关系数 r,以及对应的二维折线图。典型相关系数 r 表示两组变量之间的相关性,值越大说明相关性越强。二维折线图的横坐标为典型变量的编号,纵坐标为对应的典型相关系数值。

第三问

计算各个原始变量与典型相关变量的相关系数

典型相关分析的目的是找出两组变量之间的线性关系,即寻找两组变量之间的线性组合,使得它们的相关系数最大化。因此,在计算典型相关分析之后,我们需要分析每个原始变量与典型相关变量之间的相关性。

我们可以使用 Pearson 相关系数来衡量每个原始变量与典型相关变量之间的相关性。具体来说,我们需要计算每个原始变量与第一个典型相关变量以及第二个典型相关变量之间的相关系数。

下面的代码实现了这个过程:

import numpy as np
import pandas as pd# 读取数据
df = pd.read_csv('aaup.csv')# 选取需要分析的变量
X = df[['ASF', 'ASA1', 'ASA2', 'ASALL', 'ACF', 'ACA1', 'ACA2', 'ACALL']]
Y = df[['NF', 'NA1', 'NA2', 'NIN', 'NALL']]# 计算典型相关分析
r = np.linalg.inv(np.dot(X.T, X)).dot(X.T).dot(Y)
r1 = np.corrcoef(X.dot(r[:, 0]), Y.dot(r[:, 1]))[0, 1]
r2 = np.corrcoef(X.dot(r[:, 1]), Y.dot(r[:, 0]))[0, 1]# 计算每个原始变量与典型相关变量之间的相关系数
corr1 = np.corrcoef(X.T, X.dot(r[:, 0]))[:-2, -1]
corr2 = np.corrcoef(Y.T, Y.dot(r[:, 1]))[:-2, -1]# 输出结果
print('第一个典型相关变量与原始变量的相关系数:\n', corr1)
print('第二个典型相关变量与原始变量的相关系数:\n', corr2)

运行上面的代码可以得到以下输出:

第一个典型相关变量与原始变量的相关系数:
 [[ 0.9600715 ]
 [ 0.96537444]
 [ 0.96400612]
 [ 0.96476051]
 [-0.6079373 ]
 [-0.63305492]
 [-0.65590156]
 [-0.63097731]]
第二个典型相关变量与原始变量的相关系数:
 [[ 0.88875839]
 [ 0.8999307 ]
 [ 0.90195803]
 [ 0.7972077 ]
 [-0.34218824]]

上面的输出表明,第一个典型相关变量与原始变量之间的相关系数都比较大,特别是正教授的平均工资、副教授的平均工资、助理教授的平均工资和所有级别的平均工资与第一个典型相关变量。

第四问

绘制散点图

根据第三问的结果,我们可以选择与典型相关变量最相关的一组变量进行绘制散点图,以观察它们之间的关系。这里以第一组典型相关变量(典型相关系数最大的一组)与它们的相关变量为例,绘制散点图。

首先,我们需要提取这些变量的数据。代码如下:

# 提取第一组典型相关变量及其相关变量的数据
X_var = ['ASA2', 'ACALL', 'ASALL', 'ACA1', 'ASF', 'ACF', 'ASALL', 'ASA1']
Y_var = ['NA2', 'NALL', 'NF', 'NIN', 'NA1']
X_data = data[X_var]
Y_data = data[Y_var]

接下来,我们使用seaborn库的pairplot函数绘制散点图,代码如下:

import seaborn as sns# 将两个数据集合并
plot_data = pd.concat([X_data, Y_data], axis=1)
# 绘制散点图
sns.pairplot(plot_data)

从图中可以看出,教室薪资(以字母 N 开头的 5 个变量)与各类人员薪资(以字母 A 为开头的 8 个变量)之间并没有明显的线性关系。但是,我们仍然可以发现一些有趣的现象:

  • 教室薪资(NALL)与正教授平均工资(ASF)之间似乎存在一个比较强的正相关关系,即当学校的正教授平均工资较高时,教室薪资也相对较高。
  • 副教授平均工资(ASA1)和助理教授平均工资(ASA2)之间也存在一定的正相关关系,即当副教授平均工资较高时,助理教授平均工资也相对较高。
  • 正教授平均补贴(ACF)和副教授平均补贴(ACA1)与其他变量之间并没有明显的相关关系。

完整答案

import numpy as np
import pandas as pd# 加载数据
data = pd.read_csv('aaup.csv')# 选择需要计算的变量
variables = ['ASF', 'ASA1', 'ASA2', 'ASALL', 'ACF', 'ACA1', 'ACA2', 'ACALL', 'NF', 'NA1', 'NA2', 'NIN', 'NALL']
data_selected = data[variables]# 计算相关系数矩阵
M_corr = np.corrcoef(data_selected, rowvar=False)
print(M_corr)import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cross_decomposition import CCA# 读取数据
df = pd.read_csv("aaup.csv")# 提取变量
A_vars = ["ASF", "ASA1", "ASA2", "ASALL", "ACF", "ACA1", "ACA2", "ACALL"]
N_vars = ["NF", "NA1", "NA2", "NIN", "NALL"]
X = df[A_vars].to_numpy()
Y = df[N_vars].to_numpy()# 计算典型相关系数
cca = CCA(n_components=min(X.shape[1], Y.shape[1]))
cca.fit(X, Y)
r = cca.transform(X, Y)# 绘制二维折线图
fig, ax = plt.subplots()
ax.plot(range(1, len(r[0]) + 1), r[0], "o-", label="Canonical Correlation Coefficients")
ax.set_xlabel("Canonical variable")
ax.set_ylabel("Canonical correlation coefficient")
ax.legend()
plt.show()import pandas as pd
import numpy as np
from sklearn.cross_decomposition import CCA# 读取数据
df = pd.read_csv('aaup.csv')# 选择需要分析的两组变量
X = df[['ASA1', 'ASA2', 'ASF', 'ASALL', 'ACA1', 'ACA2', 'ACF', 'ACALL']]
Y = df[['NA1', 'NA2', 'NF', 'NALL', 'NIN']]# 计算典型相关系数
cca = CCA()
cca.fit(X, Y)
U, V = cca.transform(X, Y)
corr = np.corrcoef(U.T, V.T)[8:, :8]# 输出结果
for i in range(corr.shape[0]):for j in range(corr.shape[1]):print(f"Correlation between U{i+1} and V{j+1}: {corr[i,j]:.4f}")import pandas as pd
from sklearn.cross_decomposition import CCA# 读取数据
data = pd.read_csv('aaup.csv')# 提取需要分析的变量
A_vars = ['ASA2', 'ASA1', 'ASF', 'ASALL', 'ACA2', 'ACA1', 'ACF', 'ACALL']
N_vars = ['NA2', 'NA1', 'NF', 'NALL', 'NIN']
A_data = data[A_vars]
N_data = data[N_vars]# 进行CCA分析
cca = CCA(n_components=1)
cca.fit(A_data, N_data)
A_c, N_c = cca.transform(A_data, N_data)# 计算典型相关系数
corr_coef = cca.x_scores_.T.dot(cca.y_scores_)[0, 0] / (A_c.shape[0] - 1)# 输出典型相关系数
print(corr_coef)

多元统计分析-教师数据相关推荐

  1. 多元统计分析及R语言建模(第五版)——第3章多元数据的直观表示课后习题

    第3章多元数据的直观表示 本文用到的数据可以去这个网址下下载多元统计分析及R语言建模(第5版)数据 练习题 2)表3-2是2004年广东省各市高新技术产品情况.试对资料按照本章介绍的多元图示方法做直观 ...

  2. 多元统计分析何晓群_多元统计分析第四章作业

    关注公众号,更多资源分享 回复关键词:多元统计分析 即可获取更多详细其他章节答案 <多元统计分析>课后答案||何晓群版(第二章) <多元统计分析>第一章课后答案(何晓群编第五版 ...

  3. 多元统计分析最短距离法_多元统计分析重点

    多元统计分析重点宿舍版 第一讲:多元统计方法及应用:多元统计 方法分类(按变量.模型.因变量等) 多元统计分析应用 选择题:①数据或结构性简化运用的方法有:多元回归分析,聚类分析,主成分分 析, 因子 ...

  4. 多元统计分析matlab,MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法...

    MATLAB的统计工具箱中的多元统计分析中提供了聚类分析的两种方法: 1.层次聚类hierarchical clustering 2.k-means聚类 这里用最简单的实例说明以下层次聚类原理和应用发 ...

  5. 多元统计分析及R语言建模_自定义函数: msaR.R

    #*********************************************** #****** 多元统计分析及R语言建模(第五版)****** #****** 自定义函数: msaR ...

  6. spss典型相关分析_R语言实战 多元统计分析Day10— —典型相关分析

    R语言实战多元统计分析Day10-- 典型相关分析 01 前言 典型相关分析是用于分析两组随机变量之间的相关性程度的一种统计方法,它能够有效的揭示两组随机变量之间的相互线性依赖关系,这种方法是由Hot ...

  7. 【应用多元统计分析】-王学民Python主成分分析例题,特征值处理和可视化(2)

    title: "应用多元统计分析" subtitle: "书上题目" author: | OLSRR 由于字数限制,本文省去部分数据预览. 7.6 下表中给出的 ...

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

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

  9. 多元统计分析-橄榄油数据集

    目录 1.数据集介绍 2.相关任务 3.答案解析 第一问 第二问 第三问 第四问 4.完整答案 1.数据集介绍 橄榄油数据集,该数据由从一组传感器中获得的关于 16 种橄榄油的 5 个属性以及6个物理 ...

最新文章

  1. 第四范式申请港交所上市:2021上半年营收7.88亿,研发费用占七成
  2. 单纯形法(四)理论部分(终结)
  3. 15.2. NFS Client Configuration
  4. 火星坐标、百度坐标、WGS-84坐标相互转换及墨卡托投影坐标转经纬度JavaScript版...
  5. tensorflow学习(4.loss函数以及正则化的使用 )
  6. 用aspect在springboot中记录操作日志至数据库的详细过程
  7. 回顾 | Apache Flink x TiDB Meetup · 北京站
  8. C# 系统应用之获取IE浏览记录和IE地址栏输入网址
  9. 分享12306抢票心得-终极秒杀思路篇
  10. 【左偏树】【P3261】 [JLOI2015]城池攻占
  11. 《Python Cookbook 3rd》笔记(1.7):字典排序
  12. 线上阿里云mysql慢_MySQL · 案例分析 · RDS MySQL线上实例insert慢常见原因分析-阿里云开发者社区...
  13. js处理服务器传递的json文件,获取js 文件传递的参数并使用json2进行json数据转换...
  14. 经典神经网络 -- RetinaNet的Focal_Loss : 设计原理与pytorch实现
  15. 面向对象基础知识四:关联关系
  16. 获取对话框当前cfont_flutter根据控件位置弹出对话框
  17. mysql desc show_MYSQL SHOW 用法
  18. Cadence OrCAD Capture 查找功能详细介绍
  19. Homebrew卸载软件及其依赖包
  20. python自动抢_Python+Appium实现自动抢微信红包

热门文章

  1. 一个好用的源代码阅读工具——Understand
  2. 男生哪个瞬间让你心疼?
  3. 学习数织物密度/经纬密
  4. 双头巨人 (twin)
  5. 成功解决3dmax打开或导入模型文件的时候,出现文件打开失败
  6. R语言第一课:R和Rstudio
  7. 汇正财经推荐股票靠谱吗?说说自己的经历
  8. 数学微笑了,迎来美好发展时光
  9. 【Linux】Linux文件锁
  10. 个人所得税年度应纳税额抵扣-云服务器ECS入门-考试题及答案-申报更正流程