精华内容
下载资源
问答
  • 目标是始终如一地识别与回归相关的变量。 这不仅适用于预测变量,也适用于响应。 为此,发现了多元回归和典型相关之间的新关系。 随后,构造了其等效最小二乘类型公式,然后可以直接应用完善的自适应 LASSO 类型...
  • 主成分分析与典型相关分析 判别分析 聚类分析 Bayes统计分析 4.1主成分分析 4.1.1总体主成分的求法   求主成分归结为求样本(XXX)的协方差矩阵Σ\SigmaΣ的特征值和特征向量问题,具体由如下结论:   设Σ\...

    《数据分析方法》–梅长林 各章原理及R语言实现

    1. 数据描述性分析
    2. 回归分析
    3. 方差分析
      4. 主成分分析与典型相关分析
    4. 判别分析
    5. 聚类分析
    6. Bayes统计分析

    4.1主成分分析

    4.1.1总体主成分的求法

      求主成分归结为求样本(XX)的协方差矩阵Σ\Sigma的特征值和特征向量问题,具体由如下结论:

      设Σ\SigmaX=(X1,X2,...,Xp)TX=(X_1,X_2,...,X_p)^T的而协方差矩阵,其特征值按大小顺序排列为λ1λ2...λp0\lambda_1 \geq \lambda_2 \geq ...\geq \lambda_p \geq 0,相应的正交单位化向量为 e1,e2,...,epe_1,e_2,...,e_p,则XX的第kk个主成分可表示为

    Yk=ekTX=ek1X1+ek2X2+...+ekpXp,k=1,2,...,p,Y_k = e_k ^ TX=e_{k1}X_1 + e_{k2}X_2 + ... + e_{kp}X_p, \quad k=1,2,...,p,

      其中ek=(ek1,ek2,...,ekp)Te_k=(e_{k1},e_{k2},...,e_{kp})^T,并且我们知道ek1X1,ek2X2,...,ekpXpe_{k1}X_1 , e_{k2}X_2 , ... , e_{kp}X_p相互独立,这时有:

    {Var(Yk)=ekTΣek=λkekTek=λk,k=1,2,...,p,Cov(Yj,Yk)=ejTΣek=λkejTek=0,jk,\begin{cases} &Var(Y_k) = e_k^T\Sigma e_k = \lambda_k e_k^Te_k = \lambda _k, \quad k=1,2,...,p,\\ &Cov(Y_j, Y_k) = e_j^T\Sigma e_k = \lambda_k e_j^Te_k = 0, \quad j\neq k, \end{cases}

      事实上,令P=(e1,e2,...,ep)P=(e_{1},e_{2},...,e_{p}),则PP为正交矩阵,且

    PTΣP=Λ=Diag(λ1,λ2,...,λp)P^T\Sigma P=\Lambda=Diag(\lambda_1 , \lambda_2 , ..., \lambda_p),

      其中Diag(λ1,λ2,...,λp)Diag(\lambda_1 , \lambda_2 , ..., \lambda_p)表示对角矩阵(因为协方差矩阵是实对称矩阵,所以可以正交对角化)。

      若Y1=a1TXY_1=a_1^TXXX的第一主成分,其中a1Ta1=1a^T _ 1a_1=1(约束条件:a的模为1,要不方差可以无穷大)令

    z1=(z11,z12,...,z1p)T=PTa1z_1=(z_{11},z_{12}, ...,z_{1p})^T=P^Ta_1

      则z1Tz1=a1TPPTa1=a1Ta1=1,z_1^Tz_1=a_1^TPP^Ta_1=a_1^Ta_1=1,且

    Var(Y1)=a1TΣa1=z1TPTΣPz1=λ1z112+λ2z122+...+λpz1p2λ1z1Tz1=λ1\begin{aligned} Var(Y_1)&=a_1^T\Sigma a_1 = z_1^TP^T\Sigma Pz_1\\&= \lambda_1z_{11} ^2 + \lambda_2 z_{12} ^ 2 + ... + \lambda_pz_{1p} ^ 2 \\& \leq \lambda_1z_1^Tz_1=\lambda_1 \end{aligned}

      并且当z1=(1,0,..,0)Tz_1=(1,0,..,0)^T时,等号成立,这时

    a1=Pz1=e1a_1=Pz_1=e_1,

      由此可知,在约束条件a1Ta1=1a_1^Ta_1=1之下,当a1=e1a_1=e_1时,Var(Y1)Var(Y_1)达到最大,且

    maxa1TΣa1{Var(Y1)}=Var(e1TX)=e1TΣe1=λ1\mathop{max}\limits_{a_1^T\Sigma a_1} \{Var(Y_1)\}=Var(e_1^TX)=e_1^T\Sigma e_1=\lambda_1

      设Y2=a2TY_2=a_2^TXX的第二主成分,则应有

    a2Ta2=1Cov(Y2,Y1)=a2TΣe1=λ1a2Te1=0,Y2Y1a_2^Ta_2=1且Cov(Y_2,Y_1)=a_2^T\Sigma e_1=\lambda_1a_2^Te_1=0,(Y_2、Y_1相互独立)
      即a2Te1=0.a_2^Te_1=0.
    z2=(z21,z22,...,z2p)T=PTa2z_2=(z_{21},z_{22}, ...,z_{2p})^T=P^Ta_2

      则z2Tz2=1z_2^Tz_2=1,而由a2Te1=0a_2^Te_1=0即有

    a2Te1=z2TPTe1=z21e1Te1+z22e2Te1+...+z2pepTe1=z21=0a_2^Te_1=z_2^TP^Te_1=z_{21}e_1^Te_1+z_{22}e_2^Te_1+...+z_{2p}e_p^Te_1=z_{21}=0

      故

    Var(Y2)=a2TΣa2=z2TPTΣPz2=z2TΛz2=λ1z212+λ2z222+...+λpz1p2=λ2z222+...+λpz1p2λ2z2Tz2=λ2\begin{aligned} Var(Y_2)&=a_2^T\Sigma a_2 = z_2^TP^T\Sigma Pz_2=z_2^T\Lambda z_2\\&= \lambda_1z_{21} ^2 + \lambda_{2}z_{22} ^ 2 + ... + \lambda_pz_{1p} ^ 2 \\&= \lambda_{2}z_{22} ^ 2 + ... + \lambda_pz_{1p} ^ 2 \leq \lambda_2 z_2^Tz_2 = \lambda_2 \end{aligned}

      当z2=(0,1,0,...,0)Tz_2=(0,1,0,...,0)^T时,即a2=Pz2=e2a_2=Pz_2=e_2时,满足a2Ta2=1a_2^Ta_2=1,且Cov(Y2,Y1)=λ1a2Te1=0Cov(Y_2, Y_1)=\lambda_1a_2^Te_1=0,并且使Var(Y2)=λ2Var(Y_2)=\lambda_2达到最大

    4.1.2总体主成分的性质

    (1)主成分的协方差矩阵及总方差

    (2)主成分的贡献率与累计贡献率

    (3)主成分YIY_IXjX_j的相关系数 Cov(X)=Σ=(σij)p×pCov(X)=\Sigma=(\sigma_{ij})_{p\times p}

    4.1.3 R语言根据原理自己实现

    求协方差矩阵

    [120250002]\begin{bmatrix} 1 & -2 & 0\\ -2 & 5 & 0 \\ 0 & 0 & 2 \end{bmatrix}
    的各主成分

    ## 生成协方差矩阵
    df = matrix(c(1, -2, 0, -2, 5, 0, 0, 0, 2), ncol=3)
    df
    
    A matrix: 3 × 3 of type dbl
    1-20
    -2 50
    0 02

    利用R语言的内置函数eigen求特征值特征向量
    用法:
    eigen(x, symmetric, only.values = FALSE, EISPACK = FALSE)

    参数 说明
    x a numeric or complex matrix whose spectral decomposition is to be computed. Logical matrices are coerced to numeric.
    symmetric if TRUE, the matrix is assumed to be symmetric (or Hermitian if complex) and only its lower triangle (diagonal included) is used. If symmetric is not specified, isSymmetric(x) is used.
    only.values if TRUE, only the eigenvalues are computed and returned, otherwise both eigenvalues and eigenvectors are returned.
    EISPACK logical. Defunct and ignored.

    结果有两个:

    1. values:特征值
    2. vectors:特征向量
    ## 特征向量
    eigen(df)$vectors
    
    A matrix: 3 × 3 of type dbl
    -0.382683400.9238795
    0.923879500.3826834
    0.000000010.0000000
    ## 特征值
    eigen(df)$values
    
    1. 5.82842712474619
    2. 2
    3. 0.17157287525381

    所以X的三个主成分为:

    Y1=e1TX=0.383X1+0.924X2;Y2=e2TX=X3;Y3=e3TX=0.924X1+0.383X2;\begin{aligned} Y_1 &= e_1^TX = -0.383X_1+0.924X_2;\\ Y_2 &= e_2^TX = X_3;\\ Y_3 &= e_3^TX = 0.924X1+0.383X_2; \end{aligned}

    由上述结果可知,第一主成分的贡献率为:

    5.835.83+2.00+0.17=73\frac{5.83}{5.83 +2.00 + 0.17}=73%

    前两主成分的累计贡献率为:
    5.83+2.005.83+2.00+0.17=989\frac{5.83+2.00}{5.83 +2.00 + 0.17}=989%

    因此,若用前两个主成分代替原来的三个变量,其信息损失仅为2%,是很小的。

    4.1.4 R语言内置方法

    R中作为主成分分析最主要的函数是 princomp() 函数

    1. princomp() 主成分分析 可以从相关阵或者从协方差阵做主成分分析
    2. summary() 提取主成分信息
    3. loadings() 显示主成分分析或因子分析中载荷的内容
    4. predict() 预测主成分的值
    5. screeplot() 画出主成分的碎石图
    6. biplot() 画出数据关于主成分的散点图和原坐标在主成分下的方向

    1.princomp()

    ## princomp()
    df = data.frame(x1=rnorm(100), x2=rnorm(100), x3=rnorm(100))
    df.pr=princomp(df,cor=FALSE) # cor=TRUE:以X的相关系数矩阵做主成分分析,其实就是X的标准化变量的主成分
    df.pr
    
    Call:
    princomp(x = df, cor = FALSE)
    
    Standard deviations:
       Comp.1    Comp.2    Comp.3 
    1.0784416 0.9679190 0.8492227 
    
     3  variables and  100 observations.
    

    其中Standard deviations代表各主成分的标准差,即根号特征值(特征值是主成分的方差)

    2.summary()

    summary(df.pr,loadings=TRUE) 
    
    Importance of components:
                             Comp.1    Comp.2    Comp.3
    Standard deviation     1.078442 0.9679190 0.8492227
    Proportion of Variance 0.412266 0.3320949 0.2556392
    Cumulative Proportion  0.412266 0.7443608 1.0000000
    
    Loadings:
       Comp.1 Comp.2 Comp.3
    x1         0.998       
    x2 -0.120        -0.991
    x3  0.992        -0.121
    

    其中Proportion of Variance是各主成分的贡献率

    Cumulative Proportion是累计贡献率

    Loadings是特征向量

    3.predict()

    predict(df.pr, data.frame(x1=c(1, 2), x2=c(3, 4), x3=c(4, 5))) # 预测自给的数据
    #predirc(df.pr) # 预测已有数据的主成分
    
    A matrix: 2 × 3 of type dbl
    Comp.1Comp.2Comp.3
    3.7700270.9634912-3.532819
    4.6717941.9991897-4.588350

    4.loadings()

    loadings(df.pr)
    
    Loadings:
       Comp.1 Comp.2 Comp.3
    x1         0.998       
    x2 -0.120        -0.991
    x3  0.992        -0.121
    
                   Comp.1 Comp.2 Comp.3
    SS loadings     1.000  1.000  1.000
    Proportion Var  0.333  0.333  0.333
    Cumulative Var  0.333  0.667  1.000
    

    5.screeplot()

    ## 条形碎石图
    screeplot(df.pr)
    
    ## 折现碎石图
    screeplot(df.pr, type='lines')
    

    6.biplot()

    ## 主成分散点图
    biplot(df.pr)
    

    4.2 典型相关分析

    ## 相关系数矩阵
    CorX `= matrix(c(1, 0.571, 0.875, 0.571, 1, 0.781, 0.875, 0.781, 1), ncol=3)
    CorY = matrix(c(1, 0.671, 0.785, 0.671, 1, 0.932, 0.785, 0.932, 1), ncol=3)
    CorXY = matrix(c(0.714, 0.840, 0.914, 0.380, 0.681, 0.591, 0.626, 0.819, 0.870), ncol=3)
    CorYX = t(CorXY)
    
    # 求负二次幂
    fuermi<-function(Sigma){
      lamda <- solve(eigen(Sigma)$vectors)%*%Sigma%*%(eigen(Sigma)$vectors)
      sqrt(diag(lamda))
      lamda_sqrt <- matrix(c(sqrt(diag(lamda))[1],0,0,0,sqrt(diag(lamda)[2]),0, 0, 0, sqrt(diag(lamda)[3])),nrow = 3,ncol = 3)
      Sigma_sqrt <- (eigen(Sigma)$vectors)%*%lamda_sqrt%*%solve(eigen(Sigma)$vectors)  
      return(solve(Sigma_sqrt))
    }
    
    A2 = fuermi(CorX) %*% CorXY %*% solve(CorY) %*% CorYX %*% fuermi(CorX)
    B2 = fuermi(CorY) %*% CorYX %*% solve(CorX) %*% CorXY %*% fuermi(CorY)
    
    e1 = eigen(A2)$vectors
    e2 = eigen(B2)$vectors
    
    rho1 = eigen(B2)$values[1]
    rho2 = eigen(B2)$values[2]
    rho3 = eigen(B2)$values[3]
    
    # 典型相关系数
    c(rho1, rho2, rho3)
    
    1. 1.2116851534277
    2. 0.229934013998988
    3. 0.0274354332393604
    ## X的典型相关变量系数
    e1
    
    A matrix: 3 × 3 of type dbl
    -0.3287070 0.2380847 0.9139296
    -0.3796076-0.9193985 0.1029784
    -0.8647831 0.3130849-0.3925915
    ## Y的典型相关变量系数
    e2
    
    A matrix: 3 × 3 of type dbl
    -0.60894743-0.2898345 0.7383624
    0.04600424-0.9421908-0.3319037
    -0.79187539 0.1681441-0.5870783

      希望我的文章对您有所帮助,同时也感谢您能抽出宝贵的时间阅读,打公式不易,如果您喜欢的话,欢迎点赞、关注、收藏。您的支持是我创作的动力,希望今后能带给大家更多优质的文章

    展开全文
  • 针对线性典型相关分析法不能揭示变量间非线性关系 ,因而不适用于混沌系统等问题 ,将核典型相关分析与径向基函数神经网络相结合 ,提出了一种改进的核典型相关分析方法以解决映射空间样本未知及逆矩阵求解困难等问题。...
  • 典型相关分析matlab实现代码数据分析与人工智能 数据分析和回归(2013年秋季)R 数据分析和回归,多元回归和相关,残差分析,方差分析和稳健性。 高级数据分析(2014年Spring)R 总结和显示高维数据的可视化技术,...
  • 典型关联分析

    2015-05-07 08:01:00
    对于线性回归式Y=wtX,y中的每个特征都x的所有特征相关联,但无法表示y的各个特征之间的联系。 为此需要将整体表示成Y和X各自特征间的线性组合,也就是考察aTx和bTy之间的关系,用相关系数表示, 因此,问题就...

      对于线性回归式Y=wtX,y中的每个特征都与x的所有特征相关联,但无法表示y的各个特征之间的联系。

      为此需要将整体表示成Y和X各自特征间的线性组合,也就是考察aTx和bTy之间的关系,用相关系数表示,

      因此,问题就转化为求一组a,b使得相关系数最大,用拉格朗日求解。

    转载于:https://www.cnblogs.com/573177885qq/p/4483790.html

    展开全文
  • 本篇博客我们开始介绍线性回归算法相关的问题,正所谓不同的特征数据有不同的算法来对待,今天我们要研究的这个算法正好是具有线性特征的数据所具有的特征,前面算法的一个典型特征是由于它输出为连续值,在处理这...

    前言

           前面介绍了回归家族中的逻辑回归,本篇博客我们开始介绍线性回归算法相关的问题,正所谓不同的特征数据有不同的算法来对待,今天我们要研究的这个算法正好是具有线性特征的数据所具有的特征,与前面算法的一个典型特征是由于它输出为连续值,在处理这类问题时当然用线性回归算法是最好的,让我们进入正题了解这一算法的特性。

    案例

           我们以一个预测一个人银行会给他带多少款的例子,银行在带给某一个人钱时并不是每个人带给的钱都一样,其中影响因素众多,比如你认识银行领导或有关系或有车房抵押那么你比别人借的钱也多,在这里我们假设只与两个因素有关,工资和年龄,如下图:
    这里写图片描述

           在得到上面样本数据后,我们的意图是通过已知的数据抽象、归纳也许其它一些方法得到一个模型可以预测后面其它人的贷款金额,来方便银行业务开展避免出现大的漏洞,在生成模型时 每个样本用x来表示,样本中每个特征用x1、x2表示,特征的影响程度用参数cte表示,即可得出二元一次方程如下:
    这里写图片描述
           为了方便用数学中的表示方式,上面式子可以进一步化简,设x0=1,cte0*x0=cte0,并不影响结果,转化如下

    这里写图片描述

           上面的n表示n个特征相加,累加这里转化为了向量和逆矩阵相乘,表示为了矩阵方式 即对于一个样本的预测结果值,既然是预测结果那么值得可能性应该有三种大于真实值、等于真实值、小于真实值,这个真实值减去预测值即误差,也即真实值=预测值+误差 ,如下i表示样本的索引下标:
    这里写图片描述

           这里我们引入了误差的概念,假设各个样本互相独立且互相不影响,则误差服从高斯正太分布,公式如下:
    这里写图片描述
           然后 误差=真实值-预测值 ,并利用最小二乘法求最大似然函数L ,推导公式如下:
    这里写图片描述
           一般遇到连乘的式子,我们经常会用到取对数方式因子我们通过两边取对数方式继续分解公式,一到达到求使得函数L取的最大值的ct0值,如下:
    这里写图片描述
           分解之后如下:
    这里写图片描述
           上面式子中,前面的部分是常数不会影响式子的极致,可以省略,如下:

    这里写图片描述
           上面是化简之后的式子,需要继续求这个例子的极值,前面已经提及了h0(xi)表示预测值,yi表示真实值,这种累加符号可以转化为矩阵想成,进而对矩阵求导的思路求极值,如下
    这里写图片描述
           求导过程可以参考如下链接:求导公式
    https://en.wikipedia.org/wiki/Matrix_calculus#Scalar-by-vector_identities
    这里写图片描述

    代码

           如下代码是实现了上面最终推导出来的矩阵式子,其中大X表示样本矩阵,实现思路和式子如下:

    def loadDataSet(filename):
        '''
        :param filename:路径文件
        :return:训练样本数据集数组、训练分类标签数组
        '''
        # 特征个数索引
        numFeat = len(open(filename).readline().split('\t'))-1
        # 数组保存样本
        dataMat = []
        # 数组保存标签
        labelMat = []
    
        fr = open(filename)
        # 循环每一个样本
        for line in fr.readlines():
            lineArr = []
            curLine = line.strip().split('\t')
            for i in range(numFeat):
                lineArr.append(float(curLine[i]))
            dataMat.append(lineArr)
            labelMat.append(float(curLine[-1]))
        return dataMat,labelMat
    
    
    def standRegres(xArr,yArr):
        '''
         采用最小二乘法求最佳回归系数
        :param xArr: 特征矩阵
        :param yArr: 标签
        :return:
        '''
        xMat = np.mat(xArr)
        yMat = np.mat(yArr).T
        xTx = xMat.T * xMat
        # 判断矩阵是否可以求逆
        if np.linalg.det(xTx) == 0.0:
            print "this matrix is singular,bannot do inverse"
            return
        ws = xTx.I * (xMat.T * yMat)
        return ws
    
    def createGraph(xArr,yArr,ws):
        xMat = np.mat(xArr)
        yMat = np.mat(yArr)
        # 预测值
        yHat = xMat*ws
        fig = plt.figure()
        ax = fig.add_subplot(111)
        # 绘制原始数据散点
        ax.scatter(xMat[:,1].flatten().A[0],yMat.T[:,0].flatten().A[0])
    
        xCopy= xMat.copy()
        xCopy.sort(0)
        yHat = xCopy * ws
        ax.plot(xCopy[:,1],yHat)
    
        # 比较相关系数
        print "相关系数=%s" % np.corrcoef(yHat.T,yMat)
        plt.show()
    

    局部加权线性回归

           线性回归经常会出现欠拟合现象,由于样本的规则并非全是直线,有时样本如果是曲线的预测出来将不准确,如下图样本为例说明:

    这里写图片描述
           为了解决这种样本现象问题,想出来一种策略,给待预测点的周围点添加权重,离待测点越近的点赋予权重越大,越远的点权重越小,这样预测出来的模型就会充分考虑到每个样本点附近点因素避免欠拟合问题产生,叫做局部加权回归
    公式如下:
    这里写图片描述
    其中W称为核函数,这里使用的是高斯核 ,如下
    这里写图片描述

    代码实现

    def lwlr(testPoint,xArr,yArr,k=1.0):
        '''
    
        :param testPoint: 测试点集
        :param xArr: 特征坐标矩阵
        :param yArr: 样本类别值
        :param k:高斯核权重衰减系数
        :return: 测试点对应的结果集 testPoint* ws
        '''
        # 对指定点进行局部加权回归
        xMat = np.mat(xArr)
        yMat = np.mat(yArr).T
        m = np.shape(xMat)[0]
        # 采用向量方式计算高斯核
        weights = np.mat(np.eye((m)))
        for j in range(m):
            diffMat = testPoint - xMat[j,:]
            weights[j,j] = np.exp(diffMat*diffMat.T/(-2.0*k**2))
        xTx = xMat.T * (weights * xMat)
        if np.linalg.det(xTx) == 0.0:
            print "This matrix is singular ,cannot do inverse"
            return
        ws = xTx.I * (xMat.T * (weights * yMat))
        return testPoint * ws
    
    
    def lwlrTest(testArr,xArr,yArr,k=1.0):
        '''
         对指定点集进行局部加权回归
        :param testArr:测试点集
        :param xArr:特征矩阵
        :param yArr:标签
        :param k:高斯核衰减系数
        :return:测试点集对应的结果集
        '''
    
        m = np.shape(testArr)[0]
        yHat = np.zeros(m)
        for i in range(m):
            yHat[i] = lwlr(testArr[i],xArr,yArr,k)
        return yHat

           在局部加权回归中,可以通过核函数中k值得大小来控制权重值的大小,由此来调节模型复杂度,避免产生过拟合或欠拟合问题出现。

           在复杂的样本数据集中有时还会遇到样本个数小于特征数的情况,你们这种情况该如何处理呢,这时就用到了岭回归,遇到这种情况时为什么不能继续用线性或者局部加权呢,因为公式涉及到了求逆,矩阵求逆时会出错,至于为什么下面在讨论

    岭回归

           岭回归是在求解公式xTx后面加上 λI 使求逆部分可顺利求解,I是单位矩阵,对角线都为1看起来像一个岭,在岭回归里面一般需要数据标准化以及取不同的λ值需要多次测试和验证,具体实现请百度,还有其他的缩减系数的方法如lasso ,主要在于控制w和λ关系。

    概念理解

    • 方差(variance)

    概率论统计学中方差用来表示随机变量的离散程度的变量,在数学中用于衡量期望的偏离程度,在实际中衡量偏离程度有实际价值,公式如下:
    这里写图片描述

    • 偏差
             偏差又称为表观误差,是指个别测定值与测定的平均值之差,它可以用来衡量测定结果的精密度高低,在统计学中,偏差可以用于两个不同的概念,即有偏采样与有偏估计。一个有偏采样是对总样本集非平等采样,而一个有偏估计则是指高估或低估要估计的量。
    • 误差
             误差是测量值与真值之间的差值。用误差衡量测量结果的准确度,用偏差衡量测量结果的精密度;误差是以真实值为标准,偏差是以多次测量结果的平均值为标准。
             误差与偏差的含义不同,必须加以区别。但是由于在一般情况下,真实值是不知道的(测量的目的就是为了测得真实值),因此处理实际问题时常常在尽量减小系统误差的前提下,把多次平行测量值当作真实值,把偏差当作误差。

    总结

           线性回归从线性角度提出了处理样本数据的理论方法,在实际问题中有很多应用场景,需要多加以思考和应用才能灵活应用,发生个人的理论还是知识都是一点点积累逐步向前发展而来,在像远方追求的同时,只有安排好时间,有一个明确的目标和时间管理才能到达始终。

    题外思考

    故事一则
           有一对师徒,徒弟对老禅师说:“师傅,我太累,可也没见什么成就,是什么原呀?
           老禅师沉思了片刻,说:“你把平常化缘的钵拿过来。小徒弟就把那个钵取来了,老禅师说:“好,把它放在这里吧,你再去给我拿几个核桃过来装满。小徒弟不知道傅的用意,捧了一堆核桃进来。这十来个核桃一放到碗里,整个碗就都装满了。
           老禅师问小徒弟:“你还能拿更多的核桃往碗里放吗?拿不了了,这碗眼看已经满了,再放核核桃进去就该往下滚了。师傅说’确定碗已经满了是吗?你再捧些大米过
    来。小徒弟又捧来了一些大米,他沿着核桃的缝隙把大米倒进碗里,竟然又放了很多大米进去,一直放到都开始往外掉了。小徒弟才停了下来,突然间好像有所悟:“哦,原来碗刚才还没有满。“那现在满了吗?“现在满了你再去取些水来。小徒弟又去拿水,他拿了一瓢水往碗里倒,在少半碗水倒进去之后,这次连缝隙都被填满了。老禅师问小徒弟:“这次满了吗?小徒弟看着碗满了,但却不敢回答,他不
    知道师傅是不是还能放进去东西。老禅师笑着说:“你再去拿一勺盐过来。老禅师又把盐化在水里,水一点儿都没溢出去。小徒弟似有所悟。老禅师问他:’,你说这
    说明了什么呢?
           小和尚说:“我知道了,这说明了时间只要挤挤总是会有的。老禅师却笑着摇了摇头,说:“这并不是我想要告诉你的。接着老禅师又把碗里的那些东西倒回到了
    盆里,腾出了一只空碗。老禅师缓缓地操作,边倒边说:“刚才我们先放的是核桃,现在我们倒着来,看看会怎么样?老禅师先放了一勺盐,再往里倒水,倒满之后,当再往碗里放大米的时候,水已经开始往外溢了,而当碗里装满了大米的时候,老禅师问小徒弟:“你看,现在碗里还能放得下核桃吗?
    老禅师说:“如果你的生命是一只碗,当碗中全都是这些大米般细小的事情时,你的那些大核桃又怎么放得进去呢?小徒弟这次才彻底明白了。
    如果您整日奔波,异常的忙碌,那么,您很有必要想一想:“我们怎样才能先将核桃装进生命当中呢?如果生命是一只碗,又该怎样区别核桃和大米呢?
    如果每个人都清楚自己的核桃是什么,生活就简单轻松了。我们要把核桃先放进生命的碗里去,否则一辈子就会在大米、芝麻、水这些细小的事情当中,核桃就放不进去了。
           生命是一只空碗,但是应该先放进去什么呢?什么才是你的核桃呢?
           请大家思考自己的核桃大米各式什么,相信各有各的事情,如果想有所成就势必要区分哪些是自己生活中的核桃,哪些又是小米一类的事情,一个人如果想有所成就,有所事实,务必要将大的事情成为自己的主导,而不是每天为一些小米一样的事情茫茫碌碌,为生活所累,提高生活质量和生活追求。

    展开全文
  • 为了获得在煤柱留设研究中相对比较准确的预测公式,基于多元回归分析法,在总结全国各典型煤矿断层防隔水煤柱相关资料的基础上,以水头压力、煤层厚度、安全系数、煤体抗拉强度为主要影响因子,研究了煤矿断层防隔水煤柱...
  • 0.偏最小二乘回归集成了多元线性回归、主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是: 注意检验,各种检验参数:有关回归的检验以及有关多元分析...

    PLSR的基本原理与推导,我在这篇博客中有讲过。

     

    0.
    偏最小二乘回归集成了多元线性回归、主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是:

    • 注意检验,各种检验参数:有关回归的检验以及有关多元分析的检验
    • 系数众多,容易混淆
    • 要清楚原理才能写好论文
    • 注意matlab函数plsregress的众多返回值
    • 例如累计贡献度,建模时最好列出表格


    1.

    问题:

    自变量组 X = [x1,x2…xn]  (n组自变量)

    因变量组 Y = [y1,y2,…yp]   (p组因变量)

    考虑到X、Y内部之间的多重相关性,可以使用PLSR建立Y对X的多元回归模型。这是一种多对多回归的模型

     

    偏最小二乘回归的实现步骤:

    1. X、Y标准化。若考虑标准化的不对等特性,考虑实现对应分析。
    2. 求相关系数矩阵。可以把X、Y统一放到一个增广矩阵中,实现求列向量之间的相关系数矩阵(corrcoef实现无需标准化,直接使用原始数据)
    3. 求主成分对。(求出自变量与因变量的成分,类似于典型相关分析)这里对数其实是min(n-1,p)。求出<u1,v1>、<u2,v2>… 实际上,u、v是原始变量标准化后的线性组合、即投影。
    4. 计算贡献率表格。计算前k个主成分u对原始变量X的贡献率、v对Y的贡献率(函数直接返回结果)。
    5. 根据贡献率表格,选取k个主成分对。一般累计贡献率达到90%合适。
    6. 求出原始变量X对这k个主成分u的回归方程以及Y对u的(不是v!)回归方程。
    7. 根据6的结果,可以求出因变量组Y与自变量组X的回归方程,但这其实是标准化了的(常数项一定是0),进一步可以还原为真实原始变量的回归方程,这也是我们所要求得的。
    8. 模型的解释与检验。
      • 首先得进行一个回归检验:判定系数R方的检验(接近于1)。计算每一个回归方程的R方,可以列出表格。
      • 之后进行交叉有效性检验:交叉系数Qh方 = 1 – (PRESS(h) / SS(h-1))。这是从主成分分析的角度的检验,即检验提取的k个主成分。(这个检验比较复杂,详细看推导)

    2.

    MATLAB实现命令:

    [XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = plsregress(X,Y,ncomp)

    param:

      X: 标准化后的原始X数据,每行一个数据组,每列是一项指标,即一个自变量

      Y:标准化后的原始Y数据,每行一个数据组,每列是一项指标,即一个因变量

      ncomp:选取的主成分对数

    return:

      XL:自变量的负荷量矩阵。维度是(自变量数*ncomp)。每行是原始数据X对主成分u的回归表达式的系数

      YL:因变量的负荷量矩阵。维度是(自变量数*ncomp)。每行是原始数据Y对主成分u的回归表达式的系数

     

      XS:对应于主成分u的得分矩阵(得分说的是主成分的值)。每列是一个主成分得分向量。

        如:每一列是一个主成分ui的值!列数是主成分数。

        说明:主成分u1是个列向量.

      YS:对应于主成分v的得分矩阵。每列是一个v对原始数据Y的线性组合的系数

     

      BETA:最终的回归表达式系数矩阵。每一列对应的,是一个yi对X的回归表达式系数。

     

      PCTVAR:两行的矩阵。

        第一行的每个元素代表着自变量提出主成分,相应主成分u的贡献率。(特征值之比,详细见主成分推导)

        第二行的每个元素代表着因变量提出主成分,相应主成分v的贡献率。这个贡献率其实是主成分对原始变量的解释能力大下。

      MSE:两行的矩阵。剩余标准差矩阵。第一行的第j个元素对应着自变量与他的前j-1个提出成分之间的剩余标准差。第二行对应因变量。

      stats:返回4个值。结构体:stats。

          W — A p-by-ncomp matrix of PLS weights so that XS = X0*W.

            W = a\XS。 W每行是一个主成分得分向量的系数,如:

          T2 — The T2 statistic for each point in XS.

          Xresiduals — The predictor residuals, that is, X0-XS*XL'.

          Yresiduals — The response residuals, that is, Y0-XS*YL'.

     

     


    3.

    案例实现:


    求Y对X的偏最小二乘回归方程:

    原始数据:

    (前三列为X变量,后两列为Y变量,共20组样本。以下数据保存为pz.txt与matlab源文件同一文件夹下)

     

    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 
     1 % PLSR 偏最小二乘
     2 
     3 clc,clear
     4  ab0 = load('pz.txt');
     5  mu = mean(ab0);%均值
     6 sig = std(ab0);% 标准差
     7 rr = corrcoef(ab0) %相关系数矩阵
     8 ab = zscore(ab0); %数据标准化
     9 a = ab(:,[1:3]); %标准化的X
    10  b = ab(:,[4:end]); %标准化的Y
    11  % pls命令需要标准化变量
    12 [XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] = plsregress(a,b)
    13  contr = cumsum(PCTVAR,2) %每行累计求和,即计算累计贡献率
    14 XL
    15  YL
    16  XS
    17  YS
    18  xw = a\XS %自变量提出主成分系数,每列对应一个成分,这个就是stats.W
    19  yw = b\YS %因变量提出的主成分系数
    20 ncomp = input('输入主成分个数')
    21 [XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2] = plsregress(a,b,ncomp)
    22  n = size(a,2);% n是自变量个数
    23 m = size(b,2);
    24  %求原始数据回归方程常数项
    25 beta3(1,:) = mu(n+1:end) - mu(1:n)./sig(1:n)*BETA2([2:end],:).*sig(n+1:end);
    26  %求原始数据x1,x2...xn的系数,每一列是一个回归方程
    27 beta3([2:n+1],:) = (1./sig(1:n))'*sig(n+1:end).*BETA2([2:end],:)
    28  bar(BETA2','k') %画直方图


    求解结果(部分)

    假设采用2个主成分

    ncomp =

         2

    系数:
    XL2 =

       -4.1306    0.0558
        -4.1933    1.0239
         2.2264    3.4441


    YL2 =

        2.1191   -0.9714
         2.5809   -0.8398
         0.8869   -0.1877

    主成分得分(每列一个主成分):
    XS2 =

       -0.1036   -0.2050
        -0.1241   -0.0577
        -0.1463    0.1807
         0.1110    0.2358
        -0.0785   -0.3927
        -0.0369    0.0249
        -0.2263    0.0263
         0.1199    0.0730
         0.2765    0.2263
         0.1874   -0.0577
         0.0588   -0.2428
         0.1198   -0.2420
         0.1913    0.2625
        -0.7077    0.2635
        -0.1327   -0.3375
        -0.1208    0.1803
        -0.0633    0.0707
         0.1933   -0.2712
         0.1690   -0.1291
         0.3131    0.3917


    YS2 =

       -1.2834    0.1794
        -4.6311    1.3388
        -0.2845   -0.6256
        -1.2265    0.6851
         1.6002   -1.0788
        -4.5120    1.5408
        -2.9777   -0.0114
        -2.7548    1.5473
         3.9469   -0.4253
        10.4846   -2.6373
         1.4139   -0.6681
         4.8549   -1.1547
         5.2890   -1.0550
        -7.6800   -0.1989
        -5.1793    1.2090
         4.5405   -2.0460
        -6.4973    2.0374
         4.2728   -0.6046
         5.5489   -1.3537
        -4.9251    3.3215

     

    标准化数据回归方程系数(可以看到常数项系数是0)
    BETA2 =

        0.0000    0.0000    0.0000
        -0.0773   -0.1380   -0.0603
        -0.4995   -0.5250   -0.1559
        -0.1323   -0.0855   -0.0072

     

    贡献率:
    PCTVAR2 =

        0.6948    0.2265
         0.2094    0.0295

     

    剩余标准差:
    MSE2 =

        2.8500    0.8699    0.2242
         2.8500    2.2531    2.1689


    stats2 =

                 W: [3x2 double]
                 T2: [20x1 double]
         Xresiduals: [20x3 double]
         Yresiduals: [20x3 double]

     

    最终的回归方程系数矩阵,每列一个方程:
    beta3 =

       47.0375  612.7674  183.9130
        -0.0165   -0.3497   -0.1253
        -0.8246  -10.2576   -2.4964
        -0.0970   -0.7422   -0.0510

     

    画出回归系数直方图:

    image

    还可以用预测的方法做精度分析,在此略过。

    转载于:https://www.cnblogs.com/duye/p/9395298.html

    展开全文
  • 大数据分析如何使用线性回归进行预测建模?在R编程中,预测模型对于预测将来的结果和估计不... 1)收集一些问题相关的数据(越多越好)。  2)如果需要,将数据清理,扩充和预处理为方便的形式。  3)对数据进行探索性
  • 本书重点介绍了各种多元统计分析方法的基本原理及其应用,包括方差分析、多元线性回归、Logistic回归分析、生存分析、主成分分析、因子分析、聚类分析、判别分析以及典型相关分析等。每一章详细讨论了统计分析方法的...
  • 1. 常用的多元统计分析方法有哪些?...2. 简单相关分析、复相关分析和典型相关分析有何不同?并举例说明之。 简单相关分析:简单相关分析是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象探讨其相
  • SAS 统计分析与应用从入门到精通

    热门讨论 2013-07-01 23:43:07
    《SAS统计分析与应用从入门到精通(第2版)》重点介绍了各种多元统计分析方法的基本原理及其应用,包括方差分析、多元线性回归、Logistic回归分析、生存分析、主成分分析、因子分析、聚类分析、判别分析以及典型相关...
  • 笔记内容整理自Mooc,欢迎一起学习 多元统计分析概述 变量之间相依性分析 构造预测模型,进行预报控制 ...典型相关分析 看着有点激动哈哈哈,之前建模一知半解,都是用spss搞的,一点激情都没有...
  • 书中首先简要介绍了多元线性回归、主成分分析和典型相关分析的基本知识,并重点讨论了变量多重相关性在回归建模中的危害。在此基础上,本书详细介绍了偏最小二乘回归的线性非线性方法,其中包括了偏最小二乘回归...
  • 针对该问题,提出一种使用核偏最小二乘法来预测故障原因的方法,该方法克服了传统线性回归方法的缺陷,在高维的非线性空间对数据进行分析,同时,该方法也吸收了典型相关分析和主成分分析方法的特点,为分析提供了...
  • ②數据分析部分,包括回归分析、时间序列分析、频谱分析、阿仑方差分析和随机系统的Kalman 滤波等方法;③惯导系统的标定技术部分,结合作者的部分科研成果,详细介紹了捷联惯导系统的标定模型、分立标定方法以及系统級...
  • 采用回归分析方法,研究城市化土地利用变化的相关关系及城市化进程对土地利用变化的影响程度。分析结果显示,诚市化耕地、居民点及工矿用地、交通用地和未利用地间有显著的相关性,表明城市化的快速发展是造成农业...
  • 本书将统计分析方法快速实现工程数据处理的应用软件工具融为一体,既从理论层面上介绍了假设检验、方差分析、回归分析、正交实验设计、判别分析等常用统计分析方法的基本原理和应用,同时又在配书盘中给出了快速...
  • 数据分析方法

    2015-01-03 10:44:12
    《数据分析方法》是为高等院校信息计算科学专业本科生“数据分析课程”编写的教材,内容涉及常用统计数据分析的基本内容方法,包括数据的描述性分析、线性回归分析、方差分析、主成分分析和典型相关分析、判别...
  • 第7章 聚类分析及R使用

    千次阅读 2020-05-01 13:14:11
    第4章 多元相关与回归分析 第5章 广义与一般线性模型 第6章 判别分析及R使用 第7章 聚类分析及R使用 7.1 聚类分析介绍 7.2 系统聚类法 7.3 快速聚类法 第8章 主成分分析及R使用 第9章 因子分析及R使用 第10...
  • 《数据分析方法》是为高等院校信息计算科学专业本科生“数据分析课程”编写的教材,内容涉及常用统计数据分析的基本内容方法,包括数据的描述性分析、线性回归分析、方差分析、主成分分析和典型相关分析、判别...
  • task3 线性回归

    2021-01-18 23:13:25
    线性回归引言一、数据可视化二、线性回归基于自变量因变量的线性回归三、主成分分析归一化问题四、回归分析的局限性五、总结六、练习 引言 真实数据集中不同维度的数据通常具有高度的相关性,这是因为不同的属性...
  • SAS系统和数据分析 中文教材 260页 第一章 SAS系统简介 第二章 SAS程序编写基础 第三章 SAS图形 第四章 概率论数理统计基础知识 ...第六章 主要分、因子和典型相关分析 第七章 判别和聚类分析 第八章 时间序列分析
  • 《应用多元统计分析》为北京大学数学科学学院概率统计系“应用多元统计分析”课程使用多年的...第十章 典型相关分析 第十一章 偏最小二乘回归分析 附录 矩阵代数 部分习题参考解答或提示 参考文献 主要符号说明 索引
  • MATLAB程序设计与典型应用(源程序)

    热门讨论 2013-07-04 20:54:16
    数字滤波器的分析与实现... 273 9.3.1 数字滤波器知识... 273 9.3.2 数字滤波器的分析与实现... 274 9.4 IIR数字滤波器的设计法... 278 9.4.1 冲激响应不变法... 278 9.4.2 双线性变换法... 279 9.4.3 IIR数字滤波器...
  • 采用栅格分析方法,提出“自然山水网络”、“历史发展网络”、“道路交通网络”、“用地性质网络”4个子网络,采用单因素方差分析、相关分析、重回归分析,逐一分析各层网络之间的相互关系,根据主观满意度求得景观...
  • 对应分析 (CA) 是典型相关分析 (CCA) 的一个特例,其中一组条目(类别而不是变量)另一组相关。 此外,它可以看作是主成分分析 (PCA) 的一个特例,它用于由连续测量组成的表,而 CA 用于列联表。 CA 从表格数据...
  • 《实用多元统计分析(第四版)》...第三部分:协方差结构分析,其中包括主成分分析,因子分析与对协方差矩阵结构的推断,典型相关分析;第四部分:分类和分组方法,其中包括判别与分类,聚类、距离方法与多维标度变换。
  • 通过MATLAB实现偏最小二乘回归预测

    千次阅读 2019-09-23 22:17:33
    偏最小二乘回归是一种新的多元统计数学分析方法,将多元线性回归典型相关分析和主成分分析进行有机结合。 建模原理: 假定p有自变量x1,x2,…,xp(这个就是特征值)和q个因变量y1,y2,…,y3(这个就是你要预测的值)...
  • 第3~12章介绍SPSS 23的各种统计方法,包括描述性统计分析 、均值比较T检验、非参数检验、方差分析、相关分析回归分析、聚类和判别分析、主成分分析和因子分析、时间序列分析、信度分析;第13章介绍图表的创建...

空空如也

空空如也

1 2 3 4 5 6
收藏数 105
精华内容 42
关键字:

典型相关分析与回归分析