精华内容
下载资源
问答
  • 统计方法判别分析: 判别分析在已知研究对象分成若干类型并已取得各种类型的一批已知样品的观测数据在此基础上根据某些准则建立判别式然后对未知类型的样品进行判别分类 距离判别法首先根据已知分类的数据分别计算...
  • 判别分析包括可用于分类和降维的方法。线性判别分析(LDA)特别受欢迎,因为它既是分类器又是降维技术。二次判别分析(QDA)是LDA的变体,允许数据的非线性分离。最后,正则化判别分析(RDA)是LDA和QDA之间的折衷。...

    原文链接:http://tecdat.cn/?p=5689

    原文出处:拓端数据部落公众号

    判别分析包括可用于分类和降维的方法。线性判别分析(LDA)特别受欢迎,因为它既是分类器又是降维技术。二次判别分析(QDA)是LDA的变体,允许数据的非线性分离。最后,正则化判别分析(RDA)是LDA和QDA之间的折衷。

    本文主要关注LDA,并探讨其在理论和实践中作为分类和可视化技术的用途。由于QDA和RDA是相关技术,我不久将描述它们的主要属性以及如何在R中使用它们。

    线性判别分析

    LDA是一种分类和降维技术,可以从两个角度进行解释。第一个是解释是概率性的,第二个是更多的程序解释,归功于费舍尔。第一种解释对于理解LDA的假设是有用的。第二种解释可以更好地理解LDA如何降低维数。

      

    Fisher的LDA优化标准

    Fisher的LDA优化标准规定组的质心应尽可能分散。这相当于找到一个线性组合ž= aŤX,使得aT相对于类内方差的类间方差最大化。 

    LDA模型的复杂性

    LDA的有效参数的数量可以通过以下方式导出。协方差矩阵不需要额外的参数,因为它已经由质心定义。由于我们需要估计K判别函数(以获得判定边界),这就产生了涉及p个元素的KK计算。因此,有效LDA参数的数量是Kp+K-1。 

    LDA摘要

    在这里,我总结了LDA的两个观点,并总结了该模型的主要特性。

    概率论

    LDA使用贝叶斯规则来确定观察样本属于k类的后验概率。由于LDA的正常假设,后验由多元高斯定义,其协方差矩阵假定对于所有类是相同的。新的点通过计算判别函数分类δk(后验概率的枚举器)并返回类k具有最大概率δk。判别变量可以通过类内和类间方差的特征分解来获得。

    费舍尔的观点

    根据Fisher,LDA可以理解为降维技术,其中每个连续变换是正交的并且相对于类内方差最大化类间方差。此过程将特征空间转换为具有K−1维度的投射空间。在对输入数据进行扩展之后,可以通过在考虑类先验的情况下确定投射空间中的最接近的质心来对新点进行分类。

    LDA的特性

    LDA具有以下属性:

    • LDA假设数据是高斯数据。更具体地说,它假定所有类共享相同的协方差矩阵。
    • LDA在K−1维子空间中找到线性决策边界。因此,如果自变量之间存在高阶相互作用,则不适合。
    • LDA非常适合于多类问题,但是当类分布不平衡时应该小心使用,因为根据观察到的计数来估计先验。因此,观察很少被分类为不常见的类别。
    • 与PCA类似,LDA可用作降维技术。请注意,LDA的转换本质上与PCA不同,因为LDA是一种考虑结果的监督方法。

    数据集

    为了举例说明线性判别分析,我们将使用语音识别数据集。该数据集对于展示判别分析很有用,因为它涉及五种不同的结果。

    library(RCurl)
    f <- getURL('phoneme.csv')
    df <- read.csv(textConnection(f), header=T)
    print(dim(df))
    ## [1] 4509  259

    为了以后评估模型,我们将每个样本分配到训练或测试集中:

    #logical vector: TRUE if entry belongs to train set, FALSE else
    train <- grepl("^train", df$speaker)
    # remove non-feature columns
    to.exclude <- c("row.names", "speaker""g")
    feature.df <- df[, !colnames(df) %<strong>in</strong>% to.exclude]
    test.set <- subset(feature.df, !train)
    train.set <- subset(feature.df, train)
    train.responses <- subset(df, train)$g
    test.responses <- subset(df, !train)$g

    在R中拟合LDA模型

    我们可以通过以下方式拟合LDA模型:

    library(MASS)
    lda.model <- lda(train.set, grouping = train.responses)

    LDA作为可视化技术

    我们可以通过在缩放数据上应用变换矩阵将训练数据转换为规范坐标。要获得与predict.lda函数返回的结果相同的结果,我们需要首先围绕加权平均数据居中:

    ## [1] TRUE

    我们可以使用前两个判别变量来可视化数据:

    绘制两个LDA维度中的数据显示三个集群:

    • 群集1(左)由aaao音素组成
    • 群集2(右下角)由dcliy音素组成
    • 群集3(右上角)由sh音素组成

    这表明两个维度​​不足以区分所有5个类别。然而,聚类表明可以非常好地区分彼此充分不同的音素。

    我们还可以使用plot.lda函数绘制训练数据到所有判别变量对的映射,其中dimen参数可用于指定所考虑的维数:

    为了可视化组的质心,我们可以创建自定义图:

    解释后验概率

    除了将数据转换为由分量x提供的判别变量之外,预测函数还给出后验概率,其可以用于分类器的进一步解释。例如:

    ## [1] "Posterior of predicted class 'sh' is: 1"
    ##        aa    ao   dcl    iy    sh
    ## aa  0.797 0.203 0.000 0.000 0.000
    ## ao  0.123 0.877 0.000 0.000 0.000
    ## dcl 0.000 0.000 0.985 0.014 0.002
    ## iy  0.000 0.000 0.001 0.999 0.000
    ## sh  0.000 0.000 0.000 0.000 1.000

    各个班级的后验表格表明该模型对音素aaao最不确定,这与我们对可视化的期望一致。

    LDA作为分类器

    如前所述,LDA的好处是我们可以选择用于分类的规范变量的数量。在这里,我们仍将通过使用多达四个规范变量进行分类来展示降级LDA的使用。

    ##   Rank Accuracy
    ## 1    1     0.51
    ## 2    2     0.71
    ## 3    3     0.86
    ## 4    4     0.92

    正如从变换空间的视觉探索所预期的那样,测试精度随着每个附加维度而增加。由于具有四维的LDA获得最大精度,我们将决定使用所有判别坐标进行分类。

    为了解释模型,我们可以可视化 分类器的性能:

    在图中,预期的音素以不同的颜色显示,而模型预测通过不同的符号显示。具有100%准确度的模型将为每种颜色分配单个符号。

    二次判别分析

    QDA是LDA的变体,其中针对每类观察估计单个协方差矩阵。如果事先知道个别类别表现出不同的协方差,则QDA特别有用。QDA的缺点是它不能用作降维技术。

    由于QDA估计每个类的协方差矩阵,因此它具有比LDA更多的有效参数。我们可以通过以下方式得出参数的数量。

    因此,QDA参数的有效数量是ķ- 1 + K.p + K.p (p + 1 )2K−1+Kp+Kp(p+1)2。

    由于QDA参数的数量在pp是二次的,因此当特征空间很大时,应小心使用QDA。

    QDA在R

    我们可以通过以下方式执行QDA:

    的QDA和LDA对象之间的主要区别是,QDA具有p×pp×p的变换矩阵对于每个类k∈{1,…,K}k∈{1,…,K}。这些矩阵确保组内协方差矩阵是球形的,但不会导致子空间减小。因此,QDA不能用作可视化技术。

    让我们确定QDA在音素数据集上是否优于LDA:

    ## [1] "Accuracy of QDA is: 0.84"
    
    QDA的准确度略低于全级LDA的准确度。这可能表明共同协方差的假设适合于该数据集。

    规范的判别分析

    由于RDA是一种正则化技术,因此当存在许多潜在相关的特征时。现在让我们评估音素数据集上的RDA。

    R中的RDA

     

    rda.preds <- predict(rda.model, t(train.set), train.responses, t(test.set))
    
    # determine performance for each alpha
    rda.perf <- vector(, dim(rda.preds)[1])
    for(i in seq(dim(rda.preds)[1])) {
        <span style="color:#888888"># performance for each gamma</span>
        res <- apply(rda.preds[i,,], 1, function(x) length(which(x == as.numeric(test.responses))) / length(test.responses))
        rda.perf[[i]] <- res
    }
    rda.perf <- do.call(rbind, rda.perf)
    rownames(rda.perf) <- alphas

    结论

    判别分析对于多类问题特别有用。LDA非常易于理解,因为它可以减少维数。使用QDA,可以建模非线性关系。RDA是一种正则化判别分析技术,对大量特征特别有用。

     如果您有任何疑问,请在下面发表评论。 

    展开全文
  • 主要包括对数据的描述性分析方法和解析性分析方法。解析性分析中主要代表是回归分析和判别分析。利用建立合理的解析性模型的方式,辨识系统中变量的内在联系,或判断样本点的总体及特性归属
  • 判别分析包括可用于分类和降维的方法。线性判别分析(LDA)特别受欢迎,因为它既是分类器又是降维技术。二次判别分析(QDA)是LDA的变体,允许数据的非线性分离。最后,正则化判别分析(RDA)是LDA和QDA之间的折衷。...

    判别分析包括可用于分类和降维的方法。线性判别分析(LDA)特别受欢迎,因为它既是分类器又是降维技术。二次判别分析(QDA)是LDA的变体,允许数据的非线性分离。最后,正则化判别分析(RDA)是LDA和QDA之间的折衷。

    本文主要关注LDA,并探讨其在理论和实践中作为分类和可视化技术的用途。由于QDA和RDA是相关技术,我不久将描述它们的主要属性以及如何在R中使用它们。

    线性判别分析

    LDA是一种分类和降维技术,可以从两个角度进行解释。第一个是解释是概率性的,第二个是更多的程序解释,归功于费舍尔。第一种解释对于理解LDA的假设是有用的。第二种解释可以更好地理解LDA如何降低维数。

      

    费舍尔的解释

    Fisher的LDA优化标准规定组的质心应尽可能分散。这相当于找到一个线性组合ž= aŤXZ=aTX,使得aTaT相对于类内方差的类间方差最大化。

    如前所述,类内方差是WW被汇集的协方差矩阵Σ^Σ^,这表明从它们的类质心的所有观察的偏差。如前所述,根据质心与总体平均值的偏差来定义类间方差。对于ZZ,类方差之间是aTBaaTBa与类内方差是一个Ťw ^一个ATWa。因此,可以通过瑞利商来优化LDA

     

     

    它定义了XX到新空间ZZ的最佳映射。需要注意的是Z∈R1×pZ∈R1×p,即,观测被映射到单个维度。为了获得额外的维度,我们需要解决的最优化问题的a1,…,aK−1a1,…,aK−1,其中每个连续akak构造是在正交WW以前的判别坐标。这导致线性变换G=(ZT1,ZT2,…,ZTK−1)∈Rp×qG=(Z1T,Z2T,…,ZK−1T)∈Rp×q,使我们可以从映射pp到qq经由尺寸XGXG。为什么我们考虑K−1K−1预测?这是因为由KK质心跨越的仿射子空间具有至多K−1K−1的等级。

     

    降低LDA

    LDA在缩小的子空间中执行分类。在执行分类时,我们不需要使用所有K−1K−1维度,而是可以选择较小的子空间HlHl其中l<K−1l<K−1。当使用l<K−1l<K−1,这称为降阶LDA。降级LDA的动机是,基于减少数量的判别变量的分类可以在模型过度拟合时提高测试集的性能。

    LDA模型的复杂性

    LDA的有效参数的数量可以通过以下方式导出。有KK手段μ^kμ^k被估计。协方差矩阵不需要额外的参数,因为它已经由质心定义。由于我们需要估计KK判别函数(以获得判定边界),这就产生了涉及p个元素的KK计算。另外,我们有ķ-1为自由参数ķ前科。因此,有效LDA参数的数量是Kp+(K-1)。 

    LDA摘要

    在这里,我总结了LDA的两个观点,并总结了该模型的主要特性。

    概率论

    LDA使用贝叶斯规则来确定观察xx属于kk类的后验概率。由于LDA的正常假设,后验由多元高斯定义,其协方差矩阵假定对于所有类是相同的。新的点通过计算判别函数分类δkδk(后验概率的枚举器)并返回类kk具有最大δkδk。判别变量可以通过类内和类间方差的特征分解来获得。

    费舍尔的观点

    根据Fisher,LDA可以理解为降维技术,其中每个连续变换是正交的并且相对于类内方差最大化类间方差。此过程将特征空间转换为具有K−1K−1维度的仿射空间。在对输入数据进行扩展之后,可以通过在考虑类先验的情况下确定仿射空间中的最接近的质心来对新点进行分类。

    LDA的特性

    LDA具有以下属性:

    • LDA假设数据是高斯数据。更具体地说,它假定所有类共享相同的协方差矩阵。
    • LDA在K−1K−1维子空间中找到线性决策边界。因此,如果自变量之间存在高阶相互作用,则不适合。
    • LDA非常适合于多类问题,但是当类分布不平衡时应该小心使用,因为根据观察到的计数来估计先验。因此,观察很少被分类为不常见的类别。
    • 与PCA类似,LDA可用作降维技术。请注意,LDA的转换本质上与PCA不同,因为LDA是一种考虑结果的监督方法。

    音素数据集

    为了举例说明线性判别分析,我们将使用音素语音识别数据集。该数据集对于展示判别分析很有用,因为它涉及五种不同的结果。

    <span style="color:#000000"><span style="color:#000000"><code><strong>library</strong>(RCurl)
    f <- getURL(<span style="color:#880000">'https://www.datascienceblog.net/data-sets/phoneme.csv'</span>)
    df <- read.csv(textConnection(f), header=<span style="color:#78a960">T</span>)
    print(dim(df))</code></span></span>
    ## [1] 4509  259

    数据集包含五个音素的数字化语音样本:aa(如暗中的元音),ao(作为水中的第一个元音),dcl(如在黑暗中),iy(作为的元音)和sh(如)。总共选择了4509个32毫秒的语音帧。对于每个语音帧,计算长度为256的对数周期图,在此基础上我们想要执行语音识别。标记为x.1x.256的256列标识语音特征,而列g扬声器 分别表示音素(标签)和扬声器。

    为了以后评估模型,我们将每个样本分配到培训或测试集中:

    <span style="color:#000000"><span style="color:#000000"><code><span style="color:#888888">#logical vector: TRUE if entry belongs to train set, FALSE else</span>
    train <- grepl(<span style="color:#880000">"^train"</span>, df$speaker)
    <span style="color:#888888"># remove non-feature columns</span>
    to.exclude <- c(<span style="color:#880000">"row.names"</span>, <span style="color:#880000">"speaker"</span>, <span style="color:#880000">"g"</span>)
    feature.df <- df[, !colnames(df) %<strong>in</strong>% to.exclude]
    test.set <- subset(feature.df, !train)
    train.set <- subset(feature.df, train)
    train.responses <- subset(df, train)$g
    test.responses <- subset(df, !train)$g</code></span></span>

    在R中拟合LDA模型

    我们可以通过以下方式拟合LDA模型:

    <span style="color:#000000"><span style="color:#000000"><code><strong>library</strong>(MASS)
    lda.model <- lda(train.set, grouping = train.responses)</code></span></span>

    让我们花一点时间来研究模型的相关组件:

    • 现有包含组先验πkπk和计数相应的组计数,NkNk。
    • 装置是质心基质M∈RK×pM∈RK×p,其分量是平均值矢量,μkμk。
    • 缩放是N×(K−1)N×(K−1)矩阵,它将样本转换为由K−1K−1判别变量定义的空间。
    • svd是奇异值,表示线性判别变量之间和组内标准差的比率。

    LDA作为可视化技术

    我们可以通过在缩放数据上应用变换矩阵将训练数据转换为规范坐标。要获得与predict.lda函数返回的结果相同的结果,我们需要首先围绕加权平均数据居中:

    ## [1] TRUE

    我们可以使用前两个判别变量来可视化数据:

    绘制两个LDA维度中的数据显示三个集群:

    • 群集1(左)由aaao音素组成
    • 群集2(右下角)由dcliy音素组成
    • 群集3(右上角)由sh音素组成

    这表明两个维度​​不足以区分所有5个类别。然而,聚类表明可以非常好地区分彼此充分不同的音素。

    我们还可以使用plot.lda函数绘制训练数据到所有判别变量对的映射,其中dimen参数可用于指定所考虑的维数:

    绘制所有维度对的训练数据表明,通过构造,捕获大部分方差。使用该图,我们可以获得关于我们应该为降低等级LDA选择的维数的直觉。请记住,LD1和LD2混淆AAAODCLIY。因此,我们需要额外的维度来区分这些群体。看一下这些图,似乎我们确实需要所有这四个维度,因为dcliy在LD1和LD3之间只是很好地分开,而当LD4与任何其他维度结合时,aaao只是很好地分开。

    为了可视化组的质心,我们可以创建自定义图:

    解释后验概率

    除了将数据转换为由分量x提供的判别变量之外,预测函数还给出后验概率,其可以用于分类器的进一步解释。例如:

    ## [1] "Posterior of predicted class 'sh' is: 1"
    ##        aa    ao   dcl    iy    sh
    ## aa  0.797 0.203 0.000 0.000 0.000
    ## ao  0.123 0.877 0.000 0.000 0.000
    ## dcl 0.000 0.000 0.985 0.014 0.002
    ## iy  0.000 0.000 0.001 0.999 0.000
    ## sh  0.000 0.000 0.000 0.000 1.000

    各个班级的后验表格表明该模型对音素aaao最不确定,这与我们对可视化的期望一致。

    LDA作为分类器

    如前所述,LDA的好处是我们可以选择用于分类的规范变量的数量。在这里,我们仍将通过使用多达四个规范变量进行分类来展示降级LDA的使用。

    ##   Rank Accuracy
    ## 1    1     0.51
    ## 2    2     0.71
    ## 3    3     0.86
    ## 4    4     0.92

    正如从变换空间的视觉探索所预期的那样,测试精度随着每个附加维度而增加。由于具有四维的LDA获得最大精度,我们将决定使用所有判别坐标进行分类。

    为了解释模型,我们可以可视化全等级分类器的性能:

    在图中,预期的音素以不同的颜色显示,而模型预测通过不同的符号显示。具有100%准确度的模型将为每种颜色分配单个符号。因此,当单个颜色表现出不同的符号时,会发现不正确的预测。使用该图,我们很快发现,当标记为aa的观察被错误地分类为ao时,大多数混淆发生,反之亦然。

    二次判别分析

    QDA是LDA的变体,其中针对每类观察估计单个协方差矩阵。如果事先知道个别类别表现出不同的协方差,则QDA特别有用。QDA的缺点是它不能用作降维技术。

    在QDA,我们需要估计ΣkΣk为每个类k∈{1,…,K}k∈{1,…,K}而不是假定Σk=ΣΣk=Σ如LDA。LDA的判别函数在xx是二次的:

     

    δķ(x )= - 12日志| Σķ| -12(x - μķ)ŤΣ- 1ķ(x - μķ)+ 日志πķ。δk(x)=−12log⁡|Σk|−12(x−μk)TΣk−1(x−μk)+log⁡πk.

     

    由于QDA估计每个类的协方差矩阵,因此它具有比LDA更多的有效参数。我们可以通过以下方式得出参数的数量。

    • 我们需要ķK类先验πķπk。由于Σķi = 1πķ= 1∑i=1Kπk=1,我们不需要为先验的一个参数。因此,先验者有ķ- 1K−1自由参数。
    • 由于有ķK质心,μkμk,与pp每个条目下,有KpKp与所述装置的参数。
    • 从协方差矩阵,ΣkΣk,我们只需要考虑对角线上直角三角形。协方差矩阵的这个区域有p(p+1)2p(p+1)2元素。由于KK需要估算这样的矩阵,所以有Kp(p+1)2Kp(p+1)2与协方差矩阵有关的参数。

    因此,QDA参数的有效数量是ķ- 1 + K.p + K.p (p + 1 )2K−1+Kp+Kp(p+1)2。

    由于QDA参数的数量在pp是二次的,因此当特征空间很大时,应小心使用QDA。

    QDA在R

    我们可以通过以下方式执行QDA:

    的QDA和LDA对象之间的主要区别是,QDA具有p×pp×p的变换矩阵对于每个类k∈{1,…,K}k∈{1,…,K}。这些矩阵确保组内协方差矩阵是球形的,但不会导致子空间减小。因此,QDA不能用作可视化技术。

    让我们确定QDA在音素数据集上是否优于LDA:

    ## [1] "Accuracy of QDA is: 0.84"

    QDA的准确度略低于全级LDA的准确度。这可能表明共同协方差的假设适合于该数据集。

    规范的判别分析

    RDA是LDA和QDA之间的折衷,因为它收缩ΣkΣk到合并方差ΣΣ通过定义

     

    Σ^ķ(α )= α &Sigma;^ķ+ (1 - α )Σ^Σ^k(α)=αΣ^k+(1−α)Σ^

     

    和更换Σķ与Σķα)中的判别函数。在此,α&Element;[0,1]是调谐参数确定是否协方差应该被独立地估计(α=1),还是应该被汇集(α=0)。Σ^ķΣ^kΣ^ķ(α )Σ^k(α)α &Element; [ 0 ,1 ]α∈[0,1]α = 1α=1α=0α=0

    另外Σ^Σ^也可朝向所述标量协方差通过要求缩水

     

    Σ^(γ)= γΣ^+ (1 - γ)σ^2 Σ^(γ)=γΣ^+(1−γ)σ^2I

     

    γ= 1γ=1γ=0γ=0Σ^kΣ^kΣ^(α ,γ)Σ^(α,γ)

    由于RDA是一种正则化技术,因此当存在许多潜在相关的特征时,它尤其有用。现在让我们评估音素数据集上的RDA。

    R中的RDA

     

    <span style="color:#000000"><span style="color:#000000"><code>rda.preds <- predict(rda.model, t(train.set), train.responses, t(test.set))
    <span style="color:#888888"># determine performance for each alpha:</span>
    rda.perf <- vector(<span style="color:#880000">"list"</span>, dim(rda.preds)[<span style="color:#880000">1</span>])
    <strong>for</strong> (i <strong>in</strong> seq(dim(rda.preds)[<span style="color:#880000">1</span>])) {
        <span style="color:#888888"># performance for each gamma</span>
        res <- apply(rda.preds[i,,], <span style="color:#880000">1</span>, <strong>function</strong>(x) length(which(x == as.numeric(test.responses))) / length(test.responses))
        rda.perf[[i]] <- res
    }
    rda.perf <- do.call(rbind, rda.perf)
    rownames(rda.perf) <- alphas</code></span></span>

     结论

    判别分析对于多类问题特别有用。LDA非常易于理解,因为它可以减少维数。使用QDA,可以建模非线性关系。RDA是一种正则化判别分析技术,对大量特征特别有用。除了这些方法之外,还存在基于判别式的其他技术,例如灵活判别分析,惩罚判别分析和混合判别分析。

    非常感谢您阅读本文,有任何问题请联系我们!

     

    大数据部落 -中国专业的第三方数据服务提供商,提供定制化的一站式数据挖掘和统计分析咨询服务

    统计分析和数据挖掘咨询服务:y0.cn/teradat(咨询服务请联系官网客服

    点击这里给我发消息QQ:3025393450

    【服务场景】  

    科研项目; 公司项目外包;线上线下一对一培训;数据采集;学术研究;报告撰写;市场调查。

    【大数据部落】提供定制化的一站式数据挖掘和统计分析咨询

     

    转载于:https://www.cnblogs.com/tecdat/p/10821260.html

    展开全文
  • SAS 判别分析

    千次阅读 2017-02-28 18:28:36
    /* 判别分析 - 冠心病人和正常人在指标舒张压和血浆胆固醇上的判别分析 */ TITLE '建立判别函数'; proc discrim data=GXB outstat=outgxb /*输出判别分析的结果,如均值、标准差、判别函数的系数等,用于下一步...

    分三个数据集:

     

    1.

    DATA XDT;
    	INPUT c x1-x5 @@;
    	CARDS;
    1 8.11 251.01 13.23 5.46 7.31
    1 9.36 185.39 9.02 5.66 5.99 
    1 9.85 249.58 15.61 6.06 6.11
    1 2.55 137.13 9.21 6.11 4.35 
    1 6.01 231.34 14.27 5.21 8.79
    1 9.64 231.38 13.03 4.86 8.53
    1 4.11 260.25 14.72 5.36 10.03
    1 8.90 259.51 14.16 4.91 9.79
    1 7.71 273.84 16.01 5.15 8.79
    1 7.51 303.59 19.14 5.70 8.53
    1 8.06 231.03 14.41 5.72 6.15
    2 6.80 308.90 15.11 5.52 8.49
    2 8.68 258.69 14.02 4.79 7.16
    2 5.67 255.54 15.13 4.97 9.43
    2 8.10 476.69 7.38 5.32 11.32
    2 3.71 316.12 17.12 6.04 8.17
    2 5.37 274.57 16.75 4.98 9.67
    3 5.22 330.34 18.19 4.96 9.61
    3 4.71 331.47 21.26 4.30 13.72
    3 4.71 352.50 20.79 5.07 11.00
    3 3.36 347.31 17.90 4.65 11.19
    3 8.27 189.59 12.74 5.46 6.94 
    ;
    PROC CANDISC OUT=OUTXDT    /*保存原始变量和典型变量,存储新的数据集*/
                  ANOVA         /*查看每个指标变量的一元方差分析结果*/
    			  DISTANCE;     /*要求计算类间的平方马氏距离并输出计算结果*/
    	CLASS c;                /*指定分类变量*/
    	VAR x1-x5;              /*指定指标变量*/
    RUN;
    PROC GPLOT DATA=OUTXDT;    /*画图体现判别分析的结果*/
    	PLOT CAN2*CAN1=c;
    RUN;
    


     

    2.

    DATA GXB;
    	do i=1 to 16;
    	do grp=1 to 2;
    	input id x1 x2@@;
    	output ; end; end;
    	cards;
    l 9.86 5.18 1 10.66 2.07
    2 13.33 3.73 2 12.53 4.45
    3 14.66 3.89 3 13.33 3.06
    4 9.33 7.10 4 9.33 3.94
    5 12.80 5.49 5 10.66 4.45
    6 10.66 4.09 6 10.66 4.92
    7 10.66 4.45 7 9.33 3.68
    8 13.33 3.63 8 10.66 2.77
    9 13.33 5.96 9 10.66 3.21
    10 13.33 5.70 10 10.66 5.02
    11 12.00 6.19 11 10.40 3.94
    12 14.66 4.01 12 9.33 4.92
    13 13.33 4.01 13 10.66 2.69
    14 12.80 3.63 14 10.66 2.43
    15 13.33 5.96 15 11.20 3.42
    16 . . 16 9.33 3.63
    ;
    /* 判别分析 - 冠心病人和正常人在指标舒张压和血浆胆固醇上的判别分析 */
    TITLE '建立判别函数';
    proc discrim data=GXB
                  outstat=outgxb   /*输出判别分析的结果,如均值、标准差、判别函数的系数等,用于下一步判别新样本*/
    			  simple         /*输出每一个指标变量的基本统计量和每一类内的基本统计量*/
    			  anova         /*输出每一个指标变量的一元方差分析结果,用于检验每个指标变量在每一类上的均值是否都相等*/
    			  manova        /*输出所有指标变量的多元方差分析结果,检验所有指标变量在每一类上的均值是否都相等*/
    			  pool=test     /*确定方差协方差矩阵V的形式,=TEST表示检验类间方差的一致性,方法是Bartlett的修正似然比检验法*/
    			  listerr       /*输出每个样本的回代结果,包括每个样本的事后概率及根据Bayes判别准则重新分类的准确率和错误率*/
    			  posterr;     /*输出用所建立的判别函数来判别样本分类时所产生的事后概率错误率估计。*/
    	class grp;             /*按照grp的值给数据分成两组*/
    	var x1 x2;             /*指定用来建立判别函数的指标变量,必须是连续型数值变量*/
    	priors prop;           /*指定事前概率等于样本估计值*/
    run;
    
    /*根据上述建立的判别函数模型对以下数据进行判别分析*/
    TITLE '依据上述判别函数进行测试';
    data GXBtest;
    	input x1 x2@@;
    	cards;
    9.06 5.68 11.66 2.17
    13.00 3.43 12.11 4.12
    12.66 2.82 12.63 3.26
    9.00 6.86 8.33 2.91
    12.12 5.19 11.12 4.22
    ;
    proc discrim data=outgxb     /*此处的data设置为上述判别函数的结果集*/
                  testdata=GXBtest    /*指定测试集为输入的测试数据*/
    			  testlist            /*输出被检验的新数据集中每个新样本的分类结果*/
    			  posterr;           /*用过程步discrim1中的判别函数来判别新样本时产生的事后概率错误率估计*/        
    	class grp;                  /*指示分组依据*/
    	var x1 x2;                 /*指定指标变量*/
    run;
    


     

    3.

    data xg;
    	do i=1 to 30;
    	do g=1 to 2;
    	input tc tg hdlc ldlc apoa apob@@;
    	output; end; end;
    	cards;
    245 157 38 168 1.10 1.01  174 140 47 120 0.84 0.57
    236 275 40 125 1.22 1.12  106 110 52 40 1.08 0.87 
    238 354 38 126 0.90 1.06  173 82 53 103 0.97 0.66 
    233 250 31 150 1.02 0.98  178 100 43 117 0.98 0.65
    240 149 35 170 1.26 1.13  198 112 53 123 0.98 0.72
    235 166 40 164 1.30 1.15  180 114 48 110 1.02 0.80
    204 365 38 90 1.33 0.95   134 60 36 84 0.98 0.58  
    200 95 43 100 1.24 0.98   204 118 63 119 1.02 0.84
    297 240 38 207 1.14 1.51  168 80 52 90 1.07 0.80  
    177 97 49 108 1.49 1.02   219 157 28 142 1.02 0.83
    200 172 43 116 1.25 1.03  189 158 43 115 0.92 0.80
    195 211 47 106 1.22 0.94  180 90 59 102 1.32 0.90 
    166 217 33 86 1.10 0.74   177 227 75 64 1.40 0.99 
    144 111 28 46 0.71 0.65   172 55 51 102 1.31 0.97 
    233 107 42 156 0.95 0.77  166 217 33 86 1.10 0.74 
    143 91 24 108 0.67 0.65   210 166 42 130 1.28 1.02
    228 223 34 136 1.05 0.84  166 217 33 86 1.10 0.74 
    264 186 41 183 1.22 0.92 223 186 73 113 1.62 0.98 
    178 131 49 98 1.18 1.27  136 72 67 46 1.45 0.84 
    240 127 33 174 0.78 0.90  156 107 45 106 0.93 0.74
    180 211 27 106 0.85 0.69  201 117 45 147 1.06 0.85
    161 91 39 88 0.94 0.52  134 58 60 65 1.03 0.54
    236 106 36 104 0.87 0.58  195 93 51 141 1.22 0.72
    168 106 36 104 0.87 0.73  262 257 62 142 1.56 0.80
    174 141 28 103 0.81 0.73  194 171 42 114 1.11 0.71
    215 168 38 134 0.88 0.87  165 70 36 110 1.22 0.96
    268 185 28 203 0.75 0.97  183 249 44 88 1.12 0.96
    213 387 22 141 0.80 0.78  200 191 58 100 1.61 0.77
    285 154 39 210 1.17 1.37  171 309 52 51 1.37 0.69
    193 123 42 121 1.12 1.00  222 350 13 57 0.36 1.39
    ;
    proc stepdisc data=xg
                    method=stepwise    /*指定逐步判别方法,缺省为stepwise,还可以选择forward或backward*/
                    sle=0.3 sls=0.05 /*指定逐步判别的过程中,以0.3作为进入模型的显著性阈值,0.05作为移出模型的显著性阈值*/
                    short              /*抑制输出*/
    				Pcorr           /*输出合并的类内相关矩阵*/
    				Bcov            /*输出类间协方差矩阵*/
    				Tsscp           /*输出总体的向量内乘积*/
    				Wcov            /*输出类内协方差矩阵*/
    				stdmean;        /*输出标准化的类均值*/
    
    	class g;        /*指定g为分类变量*/
    	var tc tg hdlc ldlc apoa apob;   /*指定所选指标变量*/
    run;
    


     

    展开全文
  • R语言 判别分析

    千次阅读 2020-01-03 17:03:19
    (1)判别分析的基本思想 有时会遇到包含属性被解释变量和几个度量解释变量的问题,比如我们希望区分好和差的信用风险,如果有信用风险的度量指标就可以使用多元回归,但若需要判断某人是在好的还是差的一类,就不是...

    (1)判别分析的基本思想

    有时会遇到包含属性被解释变量和几个度量解释变量的问题,比如我们希望区分好和差的信用风险,如果有信用风险的度量指标就可以使用多元回归,但若需要判断某人是在好的还是差的一类,就不是回归所要求的类型。
    当被解释变量是属性变量,解释变量是度量变量时,适合用判别分析。

    (2)基本要求:

    ··分组在两组以上;
    ··每组案例的规模至少在一个以上;
    ··解释变量必须是可测量的。

    (3)基本假设:

    ··每个判别变量(解释变量)不能是其他判别变量的线性组合;
    ··各组变量的协方差矩阵相等;
    ··各判别变量遵从多元正态分布。

    (4)判别方法:

    ··贝叶斯判别:将贝叶斯思想用于判别分析就得到贝叶斯判别。
    (贝叶斯思想:在不完全情报下,对部分未知的状态用主观概率估计,然后用贝叶斯公式对发生概率进行修正,最后再利用期望值和修正概率做出最优决策)

    ···费歇判别:将k组p维数据投影到某个方向,使得组与组之间的投影尽可能的分开。

    (5)案例实现1

    ··某地市场上销售的电视机有多种牌子,该地某商场从市场上随机抽取20种牌子的电视机进行调查,其中13种畅销,7种滞销,按电视机的质量评分Q、功能评分C、销售价格P (百元)搜集资料如表3-1,其中销售状态G中“1”表示畅销,“2”表示滞销。假设有一新厂商来推销产品,其产品质量评分为8.0,功能评分为7.5,销售价格为6500元,预测该产品的销售前景。
    在这里插入图片描述

    library(MASS)
    d1=read.table(“clipboard”,header=T)
    attach(d1)
    head(d1)

    在这里插入图片描述

    ld1=lda(G~Q+C+P,prior=c(1,1)/2);ld1 #费歇尔判别,费歇尔函数

    在这里插入图片描述
    费歇尔判别的判别函数为:
    f= -0.822Q-0.646C+0.015P
    代入x0=(8.0,7.5,65),G1=(7.976, 6.730, 61.538),G2=(5.957, 3.714, 34.000),计算
    d(x0,G1)=|(-10.446)-(-9.980)|=0.465
    d(x0,G2)=|(-10.446)-(-6.785)|=3.194
    d(x0,G1)<d(x0,G2),预计新产品畅销。

    #贝叶斯先验概率
    ld2=lda(G~Q+C+P);ld2

    在这里插入图片描述

    z2=predict(ld2)
    G2=z2$class

    tab2=table(G,G2)
    1-sum(diag(prop.table(tab2))) #回代误判率
    p1_1=predict(ld2,data.frame(Q=8,C=7.5,P=65)) #后验概率
    p1_2=p1_1$posterior
    p1_2

    在这里插入图片描述
    先验概率为p1=0.65,p2=0.35的贝叶斯判别,新产品的后验概率分别为p(1|x0)=0.9992, p(2|x0)=0.0007,预计新产品畅销。

    #距离判别中的二次判别
    qd=qda(G~Q+C+P);qd
    z3=predict(qd)
    G3=z3$class

    tab3=table(G,G3)
    1-sum(diag(prop.table(tab3)))
    p2_1=predict(qd,data.frame(Q=8,C=7.5,P=65))
    p2_2=p2_1$posterior
    p2_2

    在这里插入图片描述
    假设两总体协方差阵不等,采用距离判别中的二次判别,预计新产品畅销。

    以上方法的回代误判率均为0,判别效果正确率均很高。

    (2)案例实现2

    对破产的企业收集它们在破产前两年的年度财务数据,同时对财务良好的企业也收集同一时期的数据。数据涉及四个变量:x1=现金流量/总债务,x2=净收入/总资产,x3=流动资产/流动债务,以及x4=流动资产/净销售额。数据见“企业财务数据.xlsx”,Ⅰ组为破产企业,Ⅱ组为非破产企业。对于某企业X0=(0.17,0.07,1.8,0.52),预测其财务前景。
    在这里插入图片描述

    d2=read.table(“clipboard”,header=T)
    attach(d2)
    library(MASS)
    ld2=lda(G~x1+x2+x3+x4,prior=c(1,1)/2);ld2 #假定协方差阵相等,采用全部判别函数,fish线性判别
    #与距离判别等价,也等价于正态分布先验概率相等的贝叶斯判别
    z1=predict(ld2) #用建立的判别函数预测已知样品类别
    G1=z1$class

    tab1=table(G,G1)
    1-sum(diag(prop.table(tab1))) #计算误判率0.17,0.07,1.8,0.52
    p1 <- predict(ld2,data.frame(x1=0.17,x2=0.07,x3=0.18,x4=0.52)) #预测待判样品
    p2 <- p1$posterior
    p2

    ld3=lda(G~x1+x2+x3+x4);ld3 #先验概率不等的贝叶斯判别
    z2=predict(ld3)
    G2=z2$class
    tab2=table(G,G2)
    1-sum(diag(prop.table(tab2)))
    predict(ld3,data.frame(x1=0.17,x2=0.07,x3=0.18,x4=0.52))

    qd=qda(G~x1+x2+x3+x4);qd #协方差阵不等,用距离判别中的二次判别
    z3=predict(qd)
    G3=z3$class
    tab3=table(G,G3)
    1-sum(diag(prop.table(tab3)))
    predict(qd,data.frame(x1=0.17,x2=0.07,x3=0.18,x4=0.52))

    费歇尔判别函数为:f=2.18x1+0.78x2+1.15x3-2.01x4
    在这里插入图片描述
    贝叶斯判别:p1=0.5, p2=0.5
    新产品:p(1/x0)=0.98, p(2/x0)=0.02, 判别误差率为9.5%。预计新产品畅销。

    假设两总体协方差阵不等,采用距离判别中的二次判别,判别误差率为4.8%。预计新产品畅销。
    以上方法中二次判别误差率小于贝叶斯判别,所以应用二次判别。

    展开全文
  • 年 月第 卷 第 期 数理统计与管理 文章编号 ...软件分析, 本文给出 软件在多元统计分析上的应用 , 主要介绍 在主成份分析 、 聚类分析 、 判别分析上的应用 文中均给以实例 , 结果令人满意关锐词 软件 主成份分析 聚...
  • R: 判别分析

    2018-05-30 23:30:00
    聚类分析和判别分析有相似的作用,都是起到分类的作用。 判别分析是已知分类然后总结出判别规则,是一种有指导的学习; 聚类分析则是有了一批样本,不知道它们的分类,甚至连分成几类也不知道,希望用某种方法把...
  • 判别分析是根据观测到的某些指标对所研究的对象进行分类的一种多元统计分析方法判别分析(Discriminant Analysis,简称DA)技术是由费舍(R.A.Fisher)于1936年提出的。 判别分析对判别变量有三个基本假设。 其...
  • 包括多种机器学习方法如聚类、因子分析等的spss实现,也包括原理讲解
  • 《应用多元统计分析》为北京大学数学科学学院概率统计系“应用多元统计分析”课程使用多年的教材,它主要介绍一些实用的多元统计分析方法的理论及其应用,并列举了各方面的应用实例,同时还以国际上著名的统计分析...
  • 聚类分析和判别分析有相似的作用,都是起到分类的作用。但是,判别分析是已知分类然后总结出判别规则,是一种有指导的学习;而聚类分析则是有了一批样本,不知道它们的分类,甚至连分成几类也不知道,希望用某种方法...
  • 聚类分析与判别分析习题_数学建模系列
  • 基于多元统计分析理论,以工程实测数据为训练样本,选取井筒直径、松散冲积层厚度、水位降、卸压槽压缩率、破裂等级、服务年限率、治理方式和冲积层压缩速率8个影响因素作为判别因子,建立了井筒非采动破裂的Fisher判别...
  • 来源 | R友舍R语言多元分析系列之一:主成分分析主成分分析(principal components analysis,PCA)是一种分析、简化数据集的技术。它把原...
  • R语言中Fisher判别的使用方法

    千次阅读 2019-09-27 14:20:32
    最近编写了Fisher判别的相关代码...不严谨但是通俗的说法,判别分析(Discriminant Analysis)是一种多元(多个变量)统计分析方法,它根据样本的多个已知变量的值对样本进行分类的方法。一般来说,判别分析由两个阶...
  • 该资源包含了聚类分析、判别分析、因子分析、主成分分析的matlab代码,以及各种方法的讲义ppt及实例数据。是统计学方法学习及应用不可多得的材料。
  • 矿井小构造预测是一个难度极大的研究课题,根据岩层厚度、岩层组合关系,运用判别分析、地质统计学等数学方法预测矿井小构造,是一种全新的思想方法。本次研究选取我国西部某一煤矿作为研究对象,研究主采煤层上下岩性...
  • 第十章:多元分析

    2019-08-16 14:53:06
    即群分析,是对多个样本(或指标)进行定量分类的一种多元统计分析方法。对样本进行分类称为Q型聚类分析,对指标进行分类称为R型聚类分析。 10.1.1 Q型聚类分析 (1)样本的相似性度量 对于定量变量,最常用的是闵式...
  • 4.3 线性判别分析 这是一篇有关《统计学习基础》,原书名The Elements of Statistical Learning的学习笔记,该书学习难度较高,有很棒的学者将其翻译成中文并放在自己的个人网站上,翻译质量非常高,本博客中有关...
  • 4.6判别分析 它是根据观察或测量到的若干变量值判断研究对象如何分类的方法。 ①具体来讲,就是已知一定数量案例的一个分组变量和这些案例的一些特征变量,确定分组变量和特征变量之间的数量关系,建立判别函数。 ...
  • 判别模型与生成模型 判别模型 判别模型是对观测数据进行直接分类,常见的判别模型有逻辑回归和感知机算法等。此模型仅对数据进行分类,并不能具象化或者量化数据本身的分布状态,因此也无法根据分类生成可观测的图像...
  • scikit-learn机器学习(三)–逻辑回归和线性判别分析LDA 前面的线性回归模型是解决预测问题的,根据样本的多个特征,推测其目标值,但是现实生活中除了这种预测问题之外,还有一种问题就是分类问题,比如这个人...
  • R语言多元分析系列

    2015-03-20 17:41:06
    R语言多元分析系列 R语言多元分析系列之一:主成分分析   主成分分析(principal components analysis, PCA)是一种分析、简化数据集的技术。它把原始数据变换到一个新的坐标系统中,使得任何数据投影的第一...
  • 1. 常用的多元统计分析方法有哪些? (1)多元正太分布检验 (2)多元方差-协方差分析 (3)聚类分析 (4)判别分析 (5)主成分分析 (6)对应分析 (7)因子分析 (8)典型相关性分析 (9)定性数据模型分析 (10...
  • 数学建模—多元分析

    2020-07-10 17:23:26
    判别分析 判别分析是一种在一些已知研究对象用某种方法已经分成若干类的情况下,确定新的样品的观测数据属于哪一类的统计分析方法。 例题:人文发展指数是联合国开发计划署于1990年5月发表的一份中公布的数据如下,...
  • 判别分析是用以判别个体所属群体的一种统计方法,它产生于20世纪30年代,近年来,在许多现代自然科学的各个分支和技术部门中,得到广泛的应用. 例如,利用计算机对一个人是否有心脏病进行诊断时,可以取一批没有心脏...
  • 高斯判别分析是一种生成学习算法,在该模型中,我们假设p(x|y)服从 混合正态分布 。通过训练确定参数值,新样本通过已建立的模型计算出属于不同类别的概率,我们选取概率最大的即为样本所属的类。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,030
精华内容 1,212
关键字:

多元判别分析方法实例