kf=read.csv('d:/kf.csv') # 读取康复数据
kf
sl=as.matrix(kf[,1:3]) #生成生理指标矩阵
xl=as.matrix(kf[,4:6]) #生成训练指标矩阵
x=sl
x
y=xl
y
x0=scale(x)
x0
y0=scale(y)
y0
m=t(x0)%*%y0%*%t(y0)%*%x0
m
eigen(m)
w1=eigen(m)$vectors[,1]
v1=t(y0)%*%x0%*%w1/sqrt(as.matrix(eigen(m)$values)[1,])
v1
t1=x0%*%w1 #第一对潜变量得分向量
t1 # 以上为第一步(1)分别提取两变量组的第一对成分,并使之相关性达最大。
u1=y0%*%v1
u1 #第一对潜变量得分向量
library("pracma")
α1=inv(t(t1)%*%t1)%*%t(t1)%*%x0 #也可由t(x0)%*%t1/norm(t1,'2')^2算得α1 #α1在pls中称为模型效应负荷量
β1=inv(t(t1)%*%t1)%*%t(t1)%*%y0 #也可由t(y0)%*%t1/norm(t1,'2')^2算得β1
t(x0)%*%t1/norm(t1,'2')^2 # norm(t1,'2')为svd(t1)即t1的最大奇异值,也可用sqrt(t(t1)%*%t1)求得
t(y0)%*%t1/norm(t1,'2')^2 # 以上为第二步(2)建立y对T1的回归及x对T1的回归。
α1
β1
lm(x0~t1) #验证α1即为x0做应变量,t1做自变量的最小二回归的t1的回归系数(分别为weight、waist和pulse的回归系数,共3个)
lm(y0~t1) #验证β1即为y0做应变量,t1做自变量的最小二回归的t1的回归系数(分别为chins、situps和jumps的回归系数,共3个)
B=t(x0)%*%u1%*%inv(t(t1)%*%x0%*%t(x0)%*%u1)%*%t(t1)%*%y0 #保留第一对潜变量对应的标准化自变量x和标准化应变量y的pls回归系数矩阵(该矩阵公式参见‘KernelPartialLeastSquaresRegressionin Reproducing KernelHilbert Space’p102)

B
library("pls")
pls1=plsr(y0~x0,ncomp=1,validation='LOO',jackknife=T)
coef(pls1) #上式中B的求解等价于R的pls包中保留一个主成分的结果,系数为标准化回归系数,可以通过逆标准化过程还原为原始自变量x和应变量y的回归系数。以下保留2个主成分的结果中有具体逆标准化过程。
px0=t1%*%α1 #求x0的预测值矩阵
E1=x0-px0 #求x0的残差矩阵
py0=t1%*%β1 #求y0的预测值矩阵
F1=y0-py0 # #求y0的残差矩阵   
m2=t(E1)%*%F1%*%t(F1)%*%E1 #(3)用残差阵E1和F1代替x0和y0重复以上步骤。
eigen(m2)
w2=eigen(m2)$vectors[,1]
w2
v2=t(F1)%*%E1%*%w2/sqrt(as.matrix(eigen(m2)$values)[1,])
v2
t2=E1%*%w2
t2
u2=F1%*%v2
u2
α2=inv(t(t2)%*%t2)%*%t(t2)%*%E1 #也可由t(E1)%*%t2/norm(t2,'2')^2算得α2
β2=inv(t(t2)%*%t2)%*%t(t2)%*%F1 #也可由t(F1)%*%t2/norm(t2,'2')^2算得β2
α2
β2
library("pls")
pls1=plsr(y0~x0,ncomp=2,validation='LOO',jackknife=T) #以下为R中pls包运算结果,显示回归结果(包括预测值误差平方和PRESS与变异解释度),与上述纯算法结果进行对比和补充, 
summary(pls1) #其中对于解释变量潜变量T1对应变量y的总变异解释的比例为chins(23.26%)、situps(35.06%)和jumps(4.14%)等价于SAS中对y的综合结果20.9447≈mean(23.26%,35.06%,4.14%)四舍五入造成的。2 comps列显示的为引入第二解释变量潜变量后的对应变量y的总变异解释的比例。
coef(pls1) #以应变量situps为例得situps关于各自变量的回归方程(*表示标准化):situps*=-0.13846688weight*-0.52444579waist*-0.08542029pulse* 据此标准化回归方程可以推导出原始变量y与x的回归方程:(situps-mean(situps))/sd(situps)=-0.13846688*(weight-mean(weight))/sd(weight)-0.52444579*(waist-mean(waist))/sd(waist)-0.08542029*(pulse-mean(pulse))/sd(pulse)——>situps=sd(situps)[-0.13846688*(weight-mean(weight))/sd(weight)-0.52444579*(waist-mean(waist))/sd(waist)-0.08542029*(pulse-mean(pulse))/sd(pulse)]+mean(waist)
sd(y[,2])*-0.1384668393/sd(x[,1]) #weight的回归系数
sd(y[,2])*-0.52444579/sd(x[,2]) #waist的回归系数
sd(y[,2])*-0.08542029/sd(x[,3]) #pulse的回归系数
sd(y[,2])*(-0.13846688*-mean(x[,1])/sd(x[,1])+-0.52444579*-mean(x[,2])/sd(x[,2])+-0.08542029*-mean(x[,3])/sd(x[,3]))+mean(y[,2]) #原始变量y与x的回归方程截距
model="SITUPS=612.56712-0.35088WEIGHT-10.24768WAIST-0.74122PULSE——耶!与SAS给出的结果完全一致。"
model
jack.test(pls1) #即对coef(pls1)生成的系数进行假设检验
scores(pls1) #即求第一解释潜变量的得分向量t1=x0%*%w1和第二解释变量潜变量的得分向量t2=E1%*%w2
loadings(pls1) #即求α1
plot(pls1)
validationplot(pls1) #validationplot()函数可以画出PLS模型在不同主成分数下对应的RMSEP(由留一交叉验证法算得的均方预测误差根)
predict(pls1) #即求py0=t1%*%β1
#关于决定系数算法还需研究

转自:http://my.oschina.net/u/1272414/blog/214881

偏最小二乘回归分析建模步骤的R实现(康复俱乐部20名成员测试数据)+补充pls回归系数矩阵的算法实现的更多相关文章

  1. 【数学建模】偏最小二乘回归分析(PLSR)

    PLSR的基本原理与推导,我在这篇博客中有讲过. 0.偏最小二乘回归集成了多元线性回归.主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是: ...

  2. 【建模应用】PLS偏最小二乘回归原理与应用

    @author:Andrew.Du 声明:本文为原创,转载请注明出处:http://www.cnblogs.com/duye/p/9031511.html,谢谢. 一.前言 1.目的: 我写这篇文章的 ...

  3. 偏最小二乘回归(PLSR)- 1 概览

    1. 概览 偏最小二乘算法,因其仅仅利用数据X和Y中部分信息(partial information)来建模,所以得此名字.其总体处理框架体现在下面两图中. 建议先看第2部分,对pls算法有初步了解后 ...

  4. 偏最小二乘回归(PLSR)- 2 标准算法(NIPALS)

    1 NIPALS 算法 Step1:对原始数据X和Y进行中心化,得到X0和Y0.从Y0中选择一列作为u1,一般选择方差最大的那一列. 注:这是为了后面计算方便,如计算协方差时,对于标准化后的数据,其样 ...

  5. 预测分析建模 Python与R语言实现

    预测分析建模 Python与R语言实现 目录 前言 第1章 分析与数据科学1第2章 广告与促销10第3章 偏好与选择24第4章 购物篮分析31第5章 经济数据分析42第6章 运营管理56第7章 文本分 ...

  6. Python 建模步骤

    #%% #载入数据 .查看相关信息 import pandas as pd import numpy as np from sklearn.preprocessing import LabelEnco ...

  7. 【数学建模】day08-数理统计III

    2. 回归分析 回归分析与曲线拟合区分. 曲线拟合是,根据得到的若干有关变量的一组数据,寻找因变量与(一个或几个)自变量之间的一个函数,使这个函数对那组数据拟合得好.通常,函数的形式可以由经验.先验知 ...

  8. 数据质量、特征分析及一些MATLAB函数

    MATLAB数据分析工具箱 MATLAB工具箱主要含有的类别有: 数学类.统计与优化类.信号处理与通信类.控制系统设计与分析类.图像处理类.测试与测量类.计算金融类.计算生物类.并行计算类.数据库访问 ...

  9. 建模分析之机器学习算法(附python&R代码)

    0序 随着移动互联和大数据的拓展越发觉得算法以及模型在设计和开发中的重要性.不管是现在接触比较多的安全产品还是大互联网公司经常提到的人工智能产品(甚至人类2045的的智能拐点时代).都基于算法及建模来 ...

随机推荐

  1. phpcms 笔记

      首先是要把首页分为三个部分  : 导航部分 .尾部和首页中间部分  用了三个不同的文件 header.html ; index.html; footer.html   在使用phpcms之前 首先 ...

  2. Twitter数据抓取的方法(二)

    Scraping Tweets Directly from Twitters Search Page – Part 2 Published January 11, 2015 In the previo ...

  3. ios app网址说明

    URLforBrowser = 'https://itunes.apple.com/cn/app/wan-huo-shi-shang-zhu-li-ren/id1077705***'; URLfori ...

  4. WebForm捆绑压缩js和css(WebForm Bundling and Minification)

    .net framework 4以上,可以使用Microsoft.AspNet.Web.Optimization 新建4.0项目 Nuget搜索optimization,安装第一个包 加入Bundle ...

  5. java复习(3)---字符串、数组

    String有很多方法,复习一下,把一些很少用的稍微过遍手,加强记忆,方便以后工程上直接使用 (1)length() 返回长度 (2)indexOf() 返回字符串中字符的下标  如:s.indexO ...

  6. [.NET] 《Effective C#》读书笔记(二)- .NET 资源托管

    <Effective C#>读书笔记(二)- .NET 资源托管 简介 续 <Effective C#>读书笔记(一)- C# 语言习惯. .NET 中,GC 会帮助我们管理内 ...

  7. CTF中怎看phpinfo

    CTF中怎么看phpinfo 在比赛中经常遇到phpinfo,这个页面可以看到很多配置信息,我们需要在这么多信息中,着重看一下几个内容: 1.allow_url_fopen和allow_url_inc ...

  8. 573. Squirrel Simulation

    Problem statement: There's a tree, a squirrel, and several nuts. Positions are represented by the ce ...

  9. asp.net 母版-页脚制作

    1.母版创建流程略过. 2.创建母版页css:Site.css body { } .linkButton{ text-decoration:none; color:whitesmoke; } 3.母版 ...

  10. webstorm html碎片整理功能

    我们用字符串形式写html模板时,或者向某标签添加html内容时,如下,如果这个str更加的长,一旦里面少了一个单引号,少了一个加号,基本报错还看不懂,一脸懵逼... // 假定后台传给我们的数据为 ...