1.9统计(stat)

这篇博客介绍了Spark MLlib库中的统计分析方法,包括核密度估计(KDE)的概念和应用,以及相关性分析如皮尔森和斯皮尔曼相关系数的计算。此外,还探讨了假设检验的基础,如卡方检验和Kolmogorov-Smirnov检验,用于检验数据分布和独立性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.9 统计(stat)

1.9.1 核密度估计(KDE(Kernel Density Estimation))

由给定样本集合求解随机变量的分布密度函数问题是概率统计学的基本问题之一。解决这一问题的方法包括参数估计和非参数估计。

参数估计又可分为参数回归分析和参数判别分析。在参数回归分析中,人们嘉定数据分布符合某种特定的性态,如线性、指数性态等,然后在目标函数族中寻找特定的解,即确定回归模型中的未知参数。在参数判别分析中,人们需要假定作为判别依据的、随机取值的数据样本在各个可能的类别中都服从特定的分布。参数模型的这种基本假定与实际的物理模型之间常常存在较大的差距,这些方法并非总能取得令人满意的结果。针对上述缺陷,提出了非参数估计方法,即核密度估计方法。由于核密度估计方法不利用有关数据分布的先验知识,对数据分布不附加任何假定,是一种从数据样本本身出发研究数据分布特征的方法,因而在统计学理论和应用领域受到高度重视。

核密度估计(KDE(Kernel Density Estimation))在概率论中是用来估计未知的密度函数的一种方法,属于分参数检验方法之一。主要是根据密度函数来计算集合中各个项的分布情况。其中密度函数是以各个数值为中心进行计算。所谓核密度估计,就是采用平滑的峰值函数(“核”)来拟合观察到的数据点,从而对真实的概率分布曲线进行模拟。

x1, x2......xn为独立同分布F的n个样本点,设其概率密度函数为f,核密度估计为下:

K(.)为核函数(非负、积分为1,符合概率密度性质,

clc; clear; close all; % 输入数据 (5种温度 × 4次试验) data = [55.0, 58.0, 57.4, 57.1; % 温度1 54.4, 56.8, 52.4, 56.0; % 温度2 54.0, 54.1, 54.3, 54.0; % 温度3 56.4, 57.0, 56.6, 57.0; % 温度4 56.1, 57.0, 56.1, 54.0]; % 温度5 [k, n] = size(data); N = k * n; group_means = mean(data, 2); grand_mean = mean(data(:)); SST = sum((data(:) - grand_mean).^2); SSB = n * sum((group_means - grand_mean).^2); SSW = 0; for i = 1:k SSW = SSW + sum((data(i,:) - group_means(i)).^2); end % 计算自由度 df_between = k - 1; % 组间 df_within = N - k; % 组内 df_total = N - 1; % 总自由度 MSB = SSB / df_between; MSW = SSW / df_within; % 计算F统计量 F_stat = MSB / MSW; % 计算p值 p_value = 1 - fcdf(F_stat, df_between, df_within); % 输出结果 fprintf(&#39;===== 方差分析结果 =====\n&#39;); fprintf(&#39;总平方和 (SST): %.4f\n&#39;, SST); fprintf(&#39;组间平方和 (SSB): %.4f\n&#39;, SSB); fprintf(&#39;组内平方和 (SSW): %.4f\n&#39;, SSW); fprintf(&#39;组间均方 (MSB): %.4f\n&#39;, MSB); fprintf(&#39;组内均方 (MSW): %.4f\n&#39;, MSW); fprintf(&#39;F统计量: %.4f\n&#39;, F_stat); fprintf(&#39;P值: %.6f\n&#39;, p_value); % 假设检验结论 alpha = 0.05; if p_value < alpha fprintf(&#39;\n结论: 在显著性水平 α=%.2f 下拒绝原假设(p<α)\n&#39;, alpha); fprintf(&#39;温度对产品收率有显著影响 (p=%.6f)\n&#39;, p_value); else fprintf(&#39;\n结论: 在显著性水平 α=%.2f 下不拒绝原假设(p>α)\n&#39;, alpha); fprintf(&#39;温度对产品收率无显著影响 (p=%.6f)\n&#39;, p_value); end % 可视化结果 figure; boxplot(data&#39;, &#39;Labels&#39;, {&#39;Temp1&#39;, &#39;Temp2&#39;, &#39;Temp3&#39;, &#39;Temp4&#39;, &#39;Temp5&#39;}); title(&#39;不同温度下产品收率分布&#39;); xlabel(&#39;温度水平&#39;); ylabel(&#39;收率 (%)&#39;); grid on; figure; hold on; errorbar(1:k, group_means, std(data, 0, 2)/sqrt(n), &#39;o-&#39;, &#39;LineWidth&#39;, 1.5, &#39;MarkerSize&#39;, 8); plot(xlim, [grand_mean grand_mean], &#39;r--&#39;, &#39;LineWidth&#39;, 1.5); hold off; title(&#39;不同温度下收率均值比较&#39;); xlabel(&#39;温度水平&#39;); ylabel(&#39;收率均值 (%)&#39;); legend(&#39;各温度均值±标准误&#39;, &#39;总均值&#39;, &#39;Location&#39;, &#39;best&#39;); xticks(1:k); xticklabels({&#39;Temp1&#39;, &#39;Temp2&#39;, &#39;Temp3&#39;, &#39;Temp4&#39;, &#39;Temp5&#39;}); grid on; figure; subplot(1, 2, 1); bar([SSB, SSW]); set(gca, &#39;XTickLabel&#39;, {&#39;组间变异 (SSB)&#39;, &#39;组内变异 (SSW)&#39;}); title(&#39;变异来源分解&#39;); ylabel(&#39;平方和&#39;); subplot(1, 2, 2); bar(F_stat); title(&#39;F统计量&#39;); ylabel(&#39;F值&#39;); line(xlim, [finv(1-alpha, df_between, df_within), finv(1-alpha, df_between, df_within)], ... &#39;Color&#39;, &#39;r&#39;, &#39;LineStyle&#39;, &#39;--&#39;); legend(&#39;F统计量&#39;, &#39;临界值&#39;, &#39;Location&#39;, &#39;northwest&#39;); grid on; 不改变源代码,做的过程当中一般要有一个方差齐性检验的过程,直接假定5种温度水平下的收率数据具有相同的方差
最新发布
07-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值