matlab - 如何计算拟合函数的 p 值?
问题描述
我已经为我的数据拟合了 3 个高斯函数的混合,它非常适合。我的问题是拟合在数字上的定义有多好。是不是可以用p值来定义。如果是,那么我如何从拟合函数本身进行计算。
g = fittype( @(c1,c2,p5,p6,p3,p4,p1,p2, x) (c1)*(1/(p6*sqrt(2*pi)))*exp(-((x-p5).^2)./(2*(p6.^2))) + ...
(c2)*(1/(p4*sqrt(2*pi)))*exp(-((x-p3).^2)./(2*(p4.^2))) + ...
(1-c1-c2)*(1/(p2*sqrt(2*pi)))*exp(-((x-p1).^2)./(2*(p2.^2))) );
%xr and yr is data (basically normalized histogram)
[fE,GE,O] = fit(xr',yr',g,'StartPoint',startingVals);
%O gives me following quantity.
numobs: 50
numparam: 8
residuals: [50×1 double]
Jacobian: [50×8 double]
exitflag: 3
firstorderopt: 7.763960157882235e-04
iterations: 24
funcCount: 225
cgiterations: 0
algorithm: 'trust-region-reflective'
stepsize: 0.002272922321389
message: 'Success, but fitting stopped because change in residual…'
这里没有 p 值。如何计算谢谢。
解决方案
您可以使用该corrcoef
函数查看matlab 文档。
基本上,如果您有数据y
,以及拟合函数的预测数据Y
,您只需:
[R,p] = corrcoef(y, Y);
这将为您提供 R 值,以及高斯拟合后数据与预测数据之间相关性的 p 值,因此基本上您的拟合效果如何。
y
并且Y
必须对应相同的输入值:
假设这f
是您的数据的“功能”。它验证
y = f(x)
, (对于x
您的每个值都有一个测量值y
)。
那么你必须有Y = f_fitted(x)
,f_fitted
是你适合的高斯函数。
推荐阅读
- sql - 为在另一列上具有相同值的分区中的每个前导行获取一行
- android - 获取美国格式的用户电话号码
- mqtt - 将 mosquitto_sub 的输出重定向到 .txt 文件并在每次更新时覆盖
- ruby - 我将如何使用 Ruby 在 Windows 中获取当前屏幕的方向?
- python - 如何使用 3D 训练数据构建二元分类器
- google-sheets - 将 Google Sheet 连接到 Photoshop
- remix - 无法使用@chainlink 验证智能合约
- javascript - 使用 pop 方法清空数组中的所有元素
- deep-learning - dropout 正则化技术是否会影响神经网络中的测试执行时间?
- php - PHPmailer SMTP在真实服务器上不起作用