本篇介绍AI&Python金融数据统计分析基础。
一.AI&Python基础语法
1️⃣AI&Python数据类型(上)
2️⃣AI&Python数据类型(下)
3️⃣AI&Python逻辑判断与循环
4️⃣AI&Python函数的应用
5️⃣AI&Python面向对象的编程
二.AI&Python金融数据统计分析
在当今数据驱动的金融世界中,掌握AI与统计分析融合的能力变得前所未有的重要。本章将带领读者探索AI赋能Python金融数据分析统计基础,涵盖从集中趋势、离散程度到分布形态及变量间关系的统计测度;各式各样的回归模型,包括线性、多项式及Logistic回归,并引入时间序列分析中的ARIMA模型。此外,我们将开启机器学习之旅,探讨其概念、类型和常用算法,为读者提供必要的工具和方法论,以应对日益复杂的市场挑战。本章将结合AI编码工具通义灵码的智能编码能力,进行全面讲解。
AI&Python金融统计分析基础
集中趋势是指一组数据向某一中心值靠拢的程度,集中趋势的测度也就是寻找数据水平的代表值或中心值。常用的集中趋势指标有均值、中位数、众数等。
(1)均值(Mean)
均值是通过将所有观测值相加然后除以观测值的数量来计算。均值利用了数据集中的全部信息,并且对每个观测值的变化都很敏感,因此在存在极端值时可能会受到影响。
(2)中位数(Median)
中位数是当一组数值按顺序排列时位于中间位置的数值;如果观测值数量为偶数,则中位数是中间两个数值的平均。中位数不受极端值的影响,相比均值更加稳定,尤其是在数据呈现偏斜分布时。
(3)众数(Mode)
众数是指在数据集中出现频率最高的数值。众数不依赖于数据的全部信息,可能缺乏稳定性,特别是在数据分布较为均匀或者多峰的时候。
下表总结了集中趋势指标的的特性与适用情况。
【实例1】现有Excel数据集regression_data.xlsx,其中的工作表<Sheet1>为100家公司20X4年的营业收入(万元)、研发人数(人)、研发支出(万元)与广告支出(万元)的数据,请根据数据,做集中趋势的测度的数据分析。
【分析解答】(1)从本地加载数据查看整体数据。
import pandas as pd #未安装请pip install pandasregression_test=pd.read_excel('D:/AIpython/regression_data.xlsx','Sheet1',header=0,index_col=0)print(regression_test) #输出数据形式
输出结果:
根据输出结果,可以使用AI编码工具通义灵码简要分析基础数据。
(2)计算均值、中位数、众数与分位数。
接【实例1】上文代码,计算集中趋势测度的指标。这时,我们可以直接使用内置的基础数据运算函数dataframe.mean(),dataframe.median()与dataframe.mod()。将前述基础数据和需求描述提交至通义灵码,通义灵码会智能生成初始版本代码。若生成的代码存在报错或未达预期效果,通义灵码支持通过多轮迭代优化代码质量。最终优化完成后输出的代码如下:
#均值计算mean_values=regression_test.mean()#中位数计算median_values=regression_test.median()#众数计算mode_values=regression_test.mode().iloc[0]print('均值:\n',mean_values)print('中位数:\n',median_values)print('众数:\n',mode_values)
输出结果:
上述输出结果分别为营业收入、研发人数、研发支出与广告支出的均值、中位数与众数。
离散程度的测度,也称为变异程度或分散程度的测度,是用来描述一组数据值之间的差异大小或分布范围的统计量。它帮助我们了解数据集中的个体数值相对于集中趋势(如平均数、中位数)的偏离情况。本小结介绍常见的离散程度指标有分位数(Quantiles)、方差、标准差与离散系数。
(1)分位数
分位数是一系列将数据分割成等概率区间的数值,其中最常用的是四分位数。第一四分位数(Q1):代表最小的25%的数据。第二四分位数(Q2),即中位数:代表50%的位置,把数据分成上下两半。第三四分位数(Q3):代表最大的75%的数据。分位数特别有用,因为它们可以告诉我们关于数据分布的更多信息,比如数据的分散程度以及是否存在异常值。
(2)方差
方差衡量的是每个数据点与均值之间差值的平方的平均数。对于样本方差,通常会使用n-1作为分母(Bessel's correction),以提供总体方差的无偏估计。
(3)标准差
标准差是方差的正平方根,表示了各数据点相对于平均数的平均距离。它的单位与原始数据相同,因此比方差更直观。
【实例2】接实例1信息,继续计算离散程度的指标。
【分析解答】可以使用分位数函数quantile()、方差函数var()以及标准差函数std()进行计算。将前述基础数据和需求描述提交至通义灵码,并经过多轮迭代优化代码。最终优化完成后的代码如下:
# 分位数 (25th, 50th, 75th)quantile_values = regression_test.quantile([0.25, 0.5, 0.75])print('分位数:\n',quantile_values)#方差variance_values = regression_test.var()print('方差:\n',variance_values)#标准差std_values = regression_test.std()print('标准差:\n',std_values)
输出结果:
当然,也可以直接使用描述性统计函数describe()来进行计算。
print('整体描述性统计descirbe:')Print(regression_test.describe())
输出结果:
根据计算结果,我们可以继续使用AI编码工具通义灵码分析输出结果。
分布形态的测度用于描述和量化数据集或概率分布的形状特征。这些测度能够帮助我们理解数据是否对称、尾部有多重,以及峰值是尖锐还是平缓。分布形态的测度指标包括偏态系数和峰度等。
(1)偏态系数
偏态是衡量数据分布不对称性的统计量。它告诉我们分布的尾巴是在左侧还是右侧更长。偏态的计算公式通常基于三阶中心矩,对于样本数据,可以使用以下公式:
(2)峰度
峰度用来描述数据分布陡峭或是平滑的情况。正态分布的峰度为3,峰度越大,代表分布越陡峭,尾部越厚(尖峰厚尾);峰度越小,分布越平滑。很多情况下,为方便计算,将峰度值减去3,因此正态分布的峰度变为0,方便比较。峰度的计算公式基于四阶中心矩,对于样本数据,超值峰度可以用以下公式计算:
【实例3】接实例1信息,继续计算偏度、峰度以及标准分数指标。
【分析解答】可以直接调用偏度skew()与kurtosis()函数进行计算。将前述基础数据和需求描述提交至通义灵码,并经过多轮迭代优化代码。最终优化完成后的代码如下:
#计算偏度skewness_values=regression_test.skew()#计算峰度kurtosis_values=regression_test.kurtosis()#计算标准分数(z-score)z_scores=(regression_test-regression_test.mean())/regression_test.std()print('偏度:\n',skewness_values)print('峰度:\n',kurtosis_values)print('标准分数:\n',z_scores)
输出结果:
相关系数是度量两个变量之间相关关系的统计量。最常用的相关系数是Pearson(皮尔逊)相关系数。相关系数的取值范围在[-1,1]之间。
【实例4】接实例1信息,继续对营业收入、研发人数、研发支出与广告支出之间进行相关性分析。
【分析解答】使用corr()函数可以直接计算相关系数。将前述基础数据和需求描述提交至通义灵码,并经过多轮迭代优化代码。最终优化完成后的代码如下:
#相关性分析correlation_matrix=regression_test.corr()print('相关性矩阵:\n',correlation_matrix)
输出结果:
使用通义灵码对计算结果进行分析。