clear;clc;

pz = load('pz.txt');

mu = mean(pz);       % 均值

sig = std(pz);           % 方差

rr = corrcoef(pz);      % 相关系数

data = zscore(pz);     % 数据标准化

% data = (pz - mu(ones(20, 1), :))./sig(ones(20, 1), :);

n = 3;                        % 自变量个数

m = 3;                       % 因变量个数

x0 = pz(:, 1:n);

y0 = pz(:, n + 1:end);

e0 = data(:, 1:n);

f0 = data(:, n + 1:end);

num = size(e0, 1);      % 样本点个数

chg = eye(n);          % w到w*变换矩阵的初始化

for i = 1:n

%%%  以下计算w,w*和t的得分向量

matrix = e0'*(f0*f0')*e0;

[vec, val] = eig(matrix);     % 特征值和特征向量

val = diag(val);

[val, ind] = sort(val, 'descend');

w(:, i) = vec(:, ind(1));   % 提取最大特征值和对应的特征向量

w_star(:, i) = chg*w(:, i);                   % 计算w*的取值

t(:, i) = e0*w(:, i);                               % 计算成分ti的得分

alpha = e0'*t(:, i)/(t(:, i)'*t(:, i));           % 计算alpha_i

chg = chg*(eye(n) - w(:, i)*alpha');      % 计算w到w*的变换矩阵

e = e0 - t(:, i)*alpha';                            % 计算残差

e0 = e;

%%% 以下计算ss(i)的值

beta = [t(:, 1:i), ones(num, 1)]\f0;            % 求回归方程的系数

beta(end, :) = [];                                      % 删除回归分析的常数项

cancha = f0 - t(:, 1:i)*beta;                     % 残差

ss(i) = norm(cancha)^2;                           % 误差平方和

%%% 以下计算press(i)

for j = 1:num

t1 = t(:, 1:i);

f1 = f0;

she_t = t1(j, :);              % 保存舍去的第j个样本点

she_f = f1(j, :);

t1(j, :) = [];                     % 删除第j个观测值

f1(j, :) = [];

beta1 = [t1, ones(num - 1, 1)]\f1;        % 求回归分析的系数

beta1(end, :) = [];              % 删除回归分析的常数项

cancha = she_f - she_t*beta1;          % 残差

press_i(j) = norm(cancha)^2;

end

press(i) = sum(press_i);

if i > 1

Q_h2(i) = 1 - press(i)/ss(i - 1);

else

Q_h2(i) = 1;

end

if Q_h2(i) < 0.0975

fprintf('提出的成分个数r=%d', i);

r = i;

break;

end

end

beta_z = [t(:, 1:r), ones(num, 1)]\f0;            % 求Y关于t的回归系数

beta_z(end, :) = [];                                       % 删除常数项

xishu = w_star(:, 1:r)*beta_z;     % 求Y关于标准数据X的回归系数,每一列是一个回归方程

mu_x = mu(1:n);

mu_y = mu(n + 1:end);

sig_x = sig(1:n);

sig_y = sig(n + 1:end);

for i = 1:m

ch0(i) = mu_y(i) - mu_x./sig_x*sig_y(i)*xishu(:, i);     % 计算原始数据的回归方程的常数项

end

for i = 1:m

xish(:, i) = xishu(:, i)./sig_x'*sig_y(i);    % 计算原始数据的回归方程的系数,每一列是一个回归方程

end

sol = [ch0; xish];    % 回归方程的系数,每一列是一个方程,每一列的第一个数是常数项

disp('回归方程的系数,每一列是一个方程,每一列的第一个数是常数项');

disp(sol);

save mydata x0 y0 num xishu ch0 xish

%%%

subplot(2, 2, 1);

bar(xishu');

ch0 = repmat(ch0, num, 1);

yhat = ch0 + x0*xish; %计算y 的预测值

y1max = max(yhat);

y2max = max(y0);

ymax = max([y1max; y2max]);

cancha = yhat - y0; %计算残差

subplot(2, 2, 2)

plot(0:ymax(1), 0:ymax(1), yhat(:, 1), y0(:, 1), '*')

subplot(2, 2, 3)

plot(0:ymax(2), 0:ymax(2), yhat(:,2), y0(:,2), 'O')

subplot(2, 2, 4)

plot(0:ymax(3), 0:ymax(3), yhat(:,3), y0(:,3), 'H')

pz.txt内容

191 36 50   5 162   60

189 37 52   2 110   60

193 38 58 12 101 101

162 35 62 12 105   37

189 35 46 13 155   58

182 36 56   4 101   42

211 38 56   8 101   38

167 34 60   6 125   40

176 31 74 15 200   40

154 33 56 17 251 250

169 34 50 17 120   38

166 33 52 13 210 115

154 34 64 14 215 105

247 46 50   1   50   50

193 36 46   6   70   31

202 37 62 12 210 120

176 37 54   4   60   25

157 32 52 11 230   80

156 33 54 15 225   73

138 33 68   2 110   43

结果:

untitled.png

(18.68 KB, 下载次数: 9)

2017-5-16 09:03 上传

matlab 做偏回归分析,偏最小二乘回归分析|MATLAB 数学统计与优化|MATLAB技术论坛 - Powered by Discuz!...相关推荐

  1. matlab 期权图,欧式看涨期权定价作图|MATLAB 程序化交易(量化投资)|MATLAB技术论坛 - Powered by Discuz!...

    function Call_Option_Pricing_Plot(varargin) %  copyright by fantuanxiaot %  关注fantuanxiaot的量化分析新浪博客: ...

  2. 常用零件形状 matlab,汽车零部件的形状优化|Simulink 快速原型、实时仿真和测试|MATLAB技术论坛 - Powered by Discuz!...

    CAESES为复杂汽车零部件探索和优化设计提供综合软件解决方案.结合专业知识和CFD软件工具,CAESES不仅能大幅提升汽车零部件及产品的性能,还能大大节省时间和成本. CAESES是传统CAD和仿真 ...

  3. matlab数组数据绘图命令,基本绘图命令、数组与数据拟合|Mathematica MathCAD 论坛|MATLAB技术论坛 - Powered by Discuz!...

    2.2        基本绘图命令.数组与数据拟合 2.2.1        基本绘图命令 1. 二维作图函数Plot Plot[函数或函数组,{自变量,下限,上限},选项] 例:画y=sinx在[ ...

  4. 光伏出力预测的神经网络matlab编程,神经网络预测光伏出力|MATLAB 神经网络|MATLAB技术论坛 - Powered by Discuz!...

    %晴天预测 clc; clear; %clear; close all; ptrain = Columns 1 through 8 93.6908  115.1887   22.5978   96.1 ...

  5. matlab rof算法,ROF|MATLAB 其它技术应用|MATLAB技术论坛 - Powered by Discuz!

    谢谢您的回复 那个程序是下的 %% ROFdenoise % %  This denoising method is based on total-variation, originally prop ...

  6. matlab 计算一组数据的方差分析,多因素方差分析|MATLAB 数学统计与优化|MATLAB技术论坛 - Powered by Discuz!...

    一般来讲,使用anovan函数进行多因素方差分析时,调用格式是第二种形式,{A,B,C,D}里面是没有编码的形式,返回一个方差分析表的形式,不过如果要求精度高的话,似乎不能显示更多的小数点位数. 不过 ...

  7. 全志t3linux驱动_全志A20GPIO驱动分析|Android驱动及系统开发交流区|研发交流|雨滴科技技术论坛 - Powered by Discuz!...

    虽然成功控制了PH17脚输出高低电平,但是我感觉什么都没有获取到(关于Linux的字符设备驱动). 打算把驱动直接编译进内核,首先看看怎样把自己的驱动添加到内核配置界面上.打开内核配置界面,在lich ...

  8. 偏最小二乘回归分析原理详解和案例分析实例

    偏最小二乘回归分析原理详解 背景 偏最小二乘回归分析 Partial least squares regression analysis 基本思想 建模步骤 步骤一:分别提取两变量组的第一对成分,并使 ...

  9. 【Matlab学习手记】偏最小二乘回归

    功能:偏最小二乘回归分析. 结果图 源代码 function [sol, yhat] = PLS_Regress(x, y) % 函数功能:偏最小二乘回归 % ==================== ...

最新文章

  1. ROP简单 ret2syscall
  2. 在html中三个图片切换,轻松搞定网页中的图片切换
  3. 接入上文,StarWind V2V Image Converter:虚拟机镜像转换工具,如何使用转化之后的 VMware VMDK 文件
  4. 首尔最高旋转餐厅后厨一探究竟
  5. 胖球为李佳琦做数据?官方回应:系不实信息 已提出了投诉举报
  6. java实现省市区的联动,chosen实现省市区三级联动
  7. oracle数据库提示无监听,【原创】PL/SQL连数据库提示无监听程序
  8. 用sublime Text2来开发ruby on rails项目
  9. 负载电流对电感值和电感尺寸的影响 // 《精通开关电源设计》P50:负载电流对电感值和电感尺寸的影响
  10. spss常态检验_科学网—如何在SPSS中进行正态分布检验?
  11. 配置单交换机VLAN划分
  12. 如何快速调整参考文献格式
  13. dede织梦批量导入关键词
  14. 使用 Go 构建 Kubernetes 应用
  15. Greenplum数据库查看表倾斜的方法总结
  16. 熬夜再战Android之修炼Kotlin-为什么要搞她?
  17. Hive的学习和使用
  18. 关于印发《湖南省首版次软件产品认定管理办法》的通知
  19. 关于cocos2d-x项目防止八门神器等修改工具的一种解决办法
  20. 杨婷:腾讯云在线教育解决方案分享

热门文章

  1. Wi-Fi 安全协议 - RSN
  2. solidworks正版多少钱_一套solidworks正版价格
  3. 小白怎样学习数据分析?
  4. 手机网站支付宝接入iframe无法唤醒支付宝app
  5. 鸿蒙系统体验效果,搭载鸿蒙操作系统的智能家居,实现一键体验全场景效果
  6. 计算机二级Python 真题(基础题)
  7. java计算机毕业设计ssm大学生心理健康平台
  8. Windows Media Player播放AVI视频文件时,只有声音,没有图像,问题解决
  9. FFMPEG之 Ubuntu系统上配置MP3和AMR编解码工具
  10. MATSIM使用教程