精华内容
下载资源
问答
  • 主成分分析spssThere are lot of dimensionality reduction techniques available in Machine Learning. It is one of the most integral part in Data Science field.Therefore, In this article, I am going to ...

    主成分分析spss

    There are lot of dimensionality reduction techniques available in Machine Learning. It is one of the most integral part in Data Science field.Therefore, In this article, I am going to describe one of the most important dimensionality reduction techniques that is being used nowadays,called Principal Component Analysis(PCA).

    机器学习中有很多降维技术可用。 因此,在本文中,我将描述当今使用的最重要的降维技术之一,即主成分分析(PCA)。

    But before doing that, one thing we need to know what is Dimensionality Reduction and why it is so important.

    但是在此之前,我们需要了解什么是降维以及为什么降维如此重要。

    什么是降维: (What is Dimensionality Reduction:)

    Dimensionality Reduction is a technique,used to reduce the dimensions of the feature space.For an example, let’s say, if there are 100 features or columns in a dataset and you want to get only 10 features,using this dimensionality reduction techniques you can achieve this feat. Overall, it transforms the dataset which is in n dimensional space to n’ dimensional space where n’<n.

    降维是一种用于减少要素空间尺寸的技术。例如,假设一个数据集中有100个要素或列,而您只想获得10个要素,使用这种降维技术可以实现这个壮举。 总的来说,它将n维空间中的数据集转换为n'<n的n'维空间。

    为什么要降维? (Why Dimensionality Reduction ?)

    Dimensionality Reduction is important in machine learning in a lot of ways, but the most important reason above all is the ‘Curse of Dimensionality’.

    降维在很多方面在机器学习中都很重要,但最重要的原因首先是“维数诅咒”。

    In machine learning,we often augment as many features as possible at first to get the higher accurate results. However, at a certain point of time,the performance of the model decreases(mainly overfitting) with the increasing number of features. This is the concept of ‘Curse of Dimensionality’.So,this is why dimensionality reduction is very crucial in the field of Machine Learning.

    在机器学习中,我们通常一开始会尽可能多地扩展功能以获得更准确的结果。 但是,在某个时间点,模型的性能会随着特征数量的增加而降低(主要是过度拟合)。 这就是“维数的诅咒”的概念。因此,这就是为什么降维在机器学习领域非常重要的原因。

    F

    F

    Now let’s come to the PCA.

    现在让我们进入PCA。

    主成分分析(PCA): (Principal Component Analysis(PCA):)

    PCA is a dimensionality reduction technique that enables us to identify correlations and patterns in a dataset so that it can be transformed into a new dataset of significantly lower dimensionality without the loss of any important information.

    PCA是一种降维技术,使我们能够识别数据集中的相关性和模式,以便可以将其转换为维数明显较低的新数据集,而不会丢失任何重要信息。

    PCA背后的数学(Mathematics Behind PCA:)

    The whole process of Mathematics in PCA can be divided into 5 parts.

    PCA中的数学全过程可以分为5部分。

    1. Standardizing the Data

      标准化数据
    2. Calculate the co-variance matrix

      计算协方差矩阵
    3. Calculating the EigenVectors and EigenValues

      计算特征向量和特征值
    4. Computing the Principal Components

      计算主要成分
    5. Reducing the dimension of the datasets

      减少数据集的维数

    Let’s talk about each of these above sections separately.

    让我们分别讨论以上每个部分。

    1. Standardizing the Data:

      标准化数据:

    Standardizing is the process of scaling the data in such a way that all the variables and their values lie within a similar range.

    标准化是按所有变量及其值位于相似范围内的方式缩放数据的过程。

    The formula for Standardization is shown below:

    标准化的公式如下所示:

    where x^i=Observation or sample, Mu(μ)= Mean,Sigma(σ): Standard deviation.

    其中x ^ i =观测值或样本,Mu(μ)=平均值,Sigma(σ):标准偏差。

    2. Calculate the co-variance matrix:

    2. 计算协方差矩阵:

    A co-variance matrix expresses the correlation between the different variables in the data set. It is essential to identify highly dependent variables because they contain biased and redundant information which can hamper the overall performance of the model.

    协方差矩阵表示数据集中不同变量之间的相关性。 识别高度因变量至关重要,因为它们包含有偏见和多余的信息,这些信息可能会妨碍模型的整体性能。

    The calculation for co-variance is done this way —

    协方差的计算是通过以下方式完成的:

    Image for post

    where x^i=values of the x variable, x̅=mean of x variable, y^i=values of the y variable, ȳ=mean of y variable.

    其中x ^ i = x变量的值,x̅= x变量的平均值,y ^ i = y变量的值,ȳ= y变量的平均值。

    If our dataset has more than 2 dimensions then it can have more than one covariance measurement. For example, if we have a dataset with 3 dimensions x, y and z, then the covariance matrix of this dataset will look like this —

    如果我们的数据集具有2个以上的维度,则它可以具有多个协方差度量。 例如,如果我们有一个3维x,y和z的数据集,则该数据集的协方差矩阵将如下所示:

    Image for post

    3. Calculating the EigenVectors and EigenValues:

    3.计算特征向量和特征值:

    EigenVectors are those vectors when a linear transformation is performed on them, then their directions does not change.

    特征向量是对它们执行线性变换时其方向不变的那些向量。

    EigenValues simply denote the scalars of their respective eigenvectors.

    特征值只是表示它们各自特征向量的标量。

    Let A be a square matrix, ν a vector and λ a scalar that satisfies Aν = λν, then λ is called eigenvalue associated with eigenvector ν of A.

    A是一个正方形矩阵,ν的载体和λ一个标量,其满足 ν=λν,λ被称为特征值与A的本征向量ν相关联。

    Now, Lets do some math and find the eigenvector and eigenvalue of a sample vector.

    现在,让我们做一些数学运算,找到样本矢量的特征向量和特征值。

    Image for post

    As you can see in our above calculations, [1,1] is the Eigenvector and 2 is the Eigenvalue. Now, lets see how we can find the Eigen pairs of a sample vector A.

    如您在上述计算中所见,[1,1]是特征向量,而2是特征值。 现在,让我们看看如何找到样本矢量A的本征对。

    Image for post

    Replacing the value of our vector A in the above formula we get:

    在上面的公式中替换向量A的值,我们得到:

    Image for post

    With the found Eigen values, lets try and find the corresponding Eigen vectors which satisfies AX= λX.

    使用找到的特征值,让我们尝试找到满足AX =λX的相应特征向量

    For Eigenvector, λ= 2:

    对于特征向量,λ= 2:

    Image for post

    For Eigenvector, λ = 3:

    对于特征向量,λ= 3:

    Image for post

    The above shows how we can calculate

    上面显示了我们如何计算

    4. Computing the Principal Components:

    4. 计算主要成分:

    Once we have computed the EigenVectors and Eigenvalues as shown above, all we have to do is order them into descending order, where the eigenvector with the highest eigen value is the most significant and therefore forms the first principal component.

    一旦如上所述计算了特征向量和特征值,我们要做的就是将它们按降序排列,其中特征值最高的特征向量是最重要的,因此形成第一个主成分。

    Image for post

    5.减少数据集的维数: (5. Reducing the dimension of the datasets:)

    In the last step,we have to re-arrange the original dataset with the final principal components which represent the maximum and most significant information of the dataset.

    在最后一步中,我们必须重新排列原始数据集,并使用最终的主成分来代表数据集的最大和最重要的信息。

    Image for post

    python中的PCA: (PCA in python:)

    Now, Let’s assemble all of these above steps into python code.

    现在,让我们将上述所有步骤组装成python代码。

    import numpy as np
    import pandas as pd#load mnist datad0 = pd.read_csv('./mnist_train.csv') # save the labels into a variable l.
    l = d0['label']# Drop the label feature and store the pixel data in d. d=d0.drop("label",axis=1)# Pick first 15K data-points
    labels = l.head(15000)
    data = d.head(15000)
    # Data-preprocessing: Standardizing the data
    from sklearn.preprocessing import StandardScaler
    standardized_data = StandardScaler().fit_transform(data)
    #find the co-variance matrix which is : A^T * A
    sample_data = standardized_data
    covar_matrix = np.matmul(sample_data.T , sample_data)
    #finding the top two eigen-values and corresponding eigen-vectors
    for projecting onto a 2-Dim space
    from scipy.linalg import eigh
    values, vectors = eigh(covar_matrix, eigvals=(782,783))
    vectors = vectors.T
    #Computing the Principal Components:new_coordinates = np.matmul(vectors, sample_data.T)# appending label to the 2d projected datanew_coordinates = np.vstack((new_coordinates, labels)).T
    #New Dataframe with Reduced dimension
    dataframe = pd.DataFrame(data=new_coordinates, columns("1st_principal", "2nd_principal", "label"))
    print(dataframe.head())

    After executing above code,the result will looks like this —

    执行上述代码后,结果将如下所示:

    Image for post

    PCA的局限性: (Limitations of PCA:)

    Though PCA works well, but it has some drawbacks too —

    虽然PCA运作良好,但也有一些缺点-

    Let’s discuss some of it’s significant drawbacks.

    让我们讨论其中的一些重大缺点。

    Independent variables become less interpretable: After implementing PCA on the dataset, your original features will turn into Principal Components. Principal Components are the linear combination of your original features. Principal Components are not as readable and interpretable as original features.

    自变量变得难以解释:在数据集上实施PCA之后,您的原始特征将变为主要组件。 主成分是原始特征的线性组合。 主要组件不像原始功能那样易读易懂。

    Data standardization is must before PCA: You must standardize your data before implementing PCA, otherwise PCA will not be able to find the optimal Principal Components.

    在PCA之前必须对数据进行标准化您必须在实施PCA之前对数据进行标准化,否则PCA将无法找到最佳的主要组件。

    Information Loss: Although Principal Components try to cover maximum variance among the features in a dataset, if we don’t select the number of Principal Components with care, it may miss some information as compared to the original list of features.

    信息丢失:尽管主成分试图覆盖数据集中各要素之间的最大差异,但如果我们不谨慎选择主成分的数量,则与原始要素列表相比,它可能会丢失一些信息。

    Not for good visualization: PCA works well only for dimensionality reduction, However, it will not perform as expected when it comes to Data Visualization.

    不能实现良好的可视化 :PCA仅在降低维数方面效果良好,但是,在数据可视化方面,它的性能无法达到预期。

    Conclusion:

    结论

    In this article, I have shown you what is Dimensionality Reduction and it is so effective in the field machine learning.Besides,I have also given you a succinctinformation about PCA. There are lot of Dimensionality Reduction techniques available, However, which technique needs to be used at which point of time , it depends on your model and also business requirements.

    在本文中,我向您展示了什么是降维,它在现场机器学习中是如此有效。此外,我还为您提供了有关PCA的简要信息。 有许多降维技术可用,但是,哪种技术需要在哪个时间点使用,取决于您的模型和业务需求。

    Hope you have now got a brief overview of PCA!!!!

    希望您现在对PCA有了一个简短的概述!!!!

    Further Reading:

    进一步阅读:

    翻译自: https://medium.com/analytics-vidhya/principal-component-analysis-pca-558969e63613

    主成分分析spss

    展开全文
  • 主成分分析 SPSS、python实例分析

    千次阅读 2019-03-09 00:02:00
    今天,在西瓜书上看到了主成分分析法,之前建模有接触过但是理解不够深刻,今天再次和这一位老朋友聊聊。  主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性...

     

      今天,在西瓜书上看到了主成分分析法,之前建模有接触过但是理解不够深刻,今天再次和这一位老朋友聊聊。

      主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。

      主成分分析,是考察多个变量间相关性一种多元统计方法,研究如何通过少数几个主成分来揭示多个变量间的内部结构,即从原始变量中导出少数几个主成分,使它们尽可能多地保留原始变量的信息,且彼此间互不相关.通常数学上的处理就是将原来P个指标作线性组合,作为新的综合指标。

      简单说,主成分分析的作用是降维。通过降维将原来多变量解释的问题,映射到更少指标,转换成少变量的可解释性问题。但是注意经过主成分分析后的变量与原变量不存在逻辑关系,仅仅是存在线性组合的关系。[1]

     一、算法原理:


     

    输入:样本集D={x1,x2...xm};

       低维空间维数d'.

    过程:

    1.对所有样本进行中心化:

    2.计算样本的协方差矩阵XXT

    3.对协方差矩阵XXT做特征值分解;

    4.取最大的d'个特征值所对应的特征向量w1,w2...wd';

    输出:投影矩阵W*=(w1,w2...wd') .[2]


     

    二、PCA原理

      

      

      

     

     

     

    三、SPSS进行主成分分析

      由于SPSS本身就是一个用于数据分析的软件,因此操作简单无需编程,即可直观感受主成分分析带来的效果。

      先胡乱编制了一些数据:

      

      

      在SPSS里,点击分析->降维->因子,在弹出的对话框中,将需要分析的变量都送入变量栏中。根据个人需要在描述、提取、旋转、得分、选项中勾选。此处我们注意在提取勾选主成分。

      

     

    点击“确定”: 

      

      

    最后我们可以看到提取了两个主成分

      

     

      

    观察两个主成分中的贡献率,我们会发现第一个主成分包含贡献率较高的项为数学、物理、化学、生物,实际意义即理科,第二主成分包含历史、地理,即文科。具有良好解释性。

     

    四、python代码实现主成分分析

    pca.py

    # -*- coding: utf-8 -*-
    """
    Created on Sun Feb 28 10:04:26 2016
    PCA source code
    @author: liudiwei
    """
    
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    
    #计算均值,要求输入数据为numpy的矩阵格式,行表示样本数,列表示特征    
    def meanX(dataX):
        return np.mean(dataX,axis=0)#axis=0表示按照列来求均值,如果输入list,则axis=1
    
    
    #计算方差,传入的是一个numpy的矩阵格式,行表示样本数,列表示特征    
    def variance(X):
        m, n = np.shape(X)
        mu = meanX(X)
        muAll = np.tile(mu, (m, 1))    
        X1 = X - muAll
        variance = 1./m * np.diag(X1.T * X1)
        return variance
    
    #标准化,传入的是一个numpy的矩阵格式,行表示样本数,列表示特征    
    def normalize(X):
        m, n = np.shape(X)
        mu = meanX(X)
        muAll = np.tile(mu, (m, 1))    
        X1 = X - muAll
        X2 = np.tile(np.diag(X.T * X), (m, 1))
        XNorm = X1/X2
        return XNorm
    
    """
    参数:
    	- XMat:传入的是一个numpy的矩阵格式,行表示样本数,列表示特征    
    	- k:表示取前k个特征值对应的特征向量
    返回值:
    	- finalData:参数一指的是返回的低维矩阵,对应于输入参数二
    	- reconData:参数二对应的是移动坐标轴后的矩阵
    """  
    def pca(XMat, k):
        average = meanX(XMat) 
        m, n = np.shape(XMat)
        data_adjust = []
        avgs = np.tile(average, (m, 1))
        data_adjust = XMat - avgs
        covX = np.cov(data_adjust.T)   #计算协方差矩阵
        featValue, featVec=  np.linalg.eig(covX)  #求解协方差矩阵的特征值和特征向量
        index = np.argsort(-featValue) #按照featValue进行从大到小排序
        finalData = []
        if k > n:
            print("k must lower than feature number")
            return
        else:
            #注意特征向量时列向量,而numpy的二维矩阵(数组)a[m][n]中,a[1]表示第1行值
            selectVec = np.matrix(featVec.T[index[:k]]) #所以这里需要进行转置
            finalData = data_adjust * selectVec.T 
            reconData = (finalData * selectVec) + average  
        return finalData, reconData
    
    def loaddata(datafile):
        return np.array(pd.read_csv(datafile,sep="\t",header=-1)).astype(np.float)
    
    
    def plotBestFit(data1, data2):	  
        dataArr1 = np.array(data1)
        dataArr2 = np.array(data2)
        
        m = np.shape(dataArr1)[0]
        axis_x1 = []
        axis_y1 = []
        axis_x2 = []
        axis_y2 = []
        for i in range(m):
            axis_x1.append(dataArr1[i,0])
            axis_y1.append(dataArr1[i,1])
            axis_x2.append(dataArr2[i,0]) 
            axis_y2.append(dataArr2[i,1])				  
        fig = plt.figure()
        ax = fig.add_subplot(111)
        ax.scatter(axis_x1, axis_y1, s=50, c='red', marker='s')
        ax.scatter(axis_x2, axis_y2, s=50, c='blue')
        plt.xlabel('x1'); plt.ylabel('x2');
        plt.savefig("outfile.png")
        plt.show()	
    
    #简单测试
    #数据来源:http://www.cnblogs.com/jerrylead/archive/2011/04/18/2020209.html
    def test():
        X = [[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1],
             [2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9]]
        XMat = np.matrix(X).T  
        k = 2
        return pca(XMat, k)
    
    #根据数据集data.txt
    def main():    
        datafile = "data.txt"
        XMat = loaddata(datafile)
        k = 2
        return pca(XMat, k)
        
    if __name__ == "__main__":
        finalData, reconMat = main()
        plotBestFit(finalData, reconMat)
    

     

    data.txt

    5.1	3.5	1.4	0.2
    4.9	3.0	1.4	0.2
    4.7	3.2	1.3	0.2
    4.6	3.1	1.5	0.2
    5.0	3.6	1.4	0.2
    5.4	3.9	1.7	0.4
    4.6	3.4	1.4	0.3
    5.0	3.4	1.5	0.2
    4.4	2.9	1.4	0.2
    4.9	3.1	1.5	0.1
    5.4	3.7	1.5	0.2
    4.8	3.4	1.6	0.2
    4.8	3.0	1.4	0.1
    4.3	3.0	1.1	0.1
    5.8	4.0	1.2	0.2
    5.7	4.4	1.5	0.4
    5.4	3.9	1.3	0.4
    5.1	3.5	1.4	0.3
    5.7	3.8	1.7	0.3
    5.1	3.8	1.5	0.3
    5.4	3.4	1.7	0.2
    5.1	3.7	1.5	0.4
    4.6	3.6	1.0	0.2
    5.1	3.3	1.7	0.5
    4.8	3.4	1.9	0.2
    5.0	3.0	1.6	0.2
    5.0	3.4	1.6	0.4
    5.2	3.5	1.5	0.2
    5.2	3.4	1.4	0.2
    4.7	3.2	1.6	0.2
    4.8	3.1	1.6	0.2
    5.4	3.4	1.5	0.4
    5.2	4.1	1.5	0.1
    5.5	4.2	1.4	0.2
    4.9	3.1	1.5	0.1
    5.0	3.2	1.2	0.2
    5.5	3.5	1.3	0.2
    4.9	3.1	1.5	0.1
    4.4	3.0	1.3	0.2
    5.1	3.4	1.5	0.2
    5.0	3.5	1.3	0.3
    4.5	2.3	1.3	0.3
    4.4	3.2	1.3	0.2
    5.0	3.5	1.6	0.6
    5.1	3.8	1.9	0.4
    4.8	3.0	1.4	0.3
    5.1	3.8	1.6	0.2
    4.6	3.2	1.4	0.2
    5.3	3.7	1.5	0.2
    5.0	3.3	1.4	0.2
    7.0	3.2	4.7	1.4
    6.4	3.2	4.5	1.5
    6.9	3.1	4.9	1.5
    5.5	2.3	4.0	1.3
    6.5	2.8	4.6	1.5
    5.7	2.8	4.5	1.3
    6.3	3.3	4.7	1.6
    4.9	2.4	3.3	1.0
    6.6	2.9	4.6	1.3
    5.2	2.7	3.9	1.4
    5.0	2.0	3.5	1.0
    5.9	3.0	4.2	1.5
    6.0	2.2	4.0	1.0
    6.1	2.9	4.7	1.4
    5.6	2.9	3.6	1.3
    6.7	3.1	4.4	1.4
    5.6	3.0	4.5	1.5
    5.8	2.7	4.1	1.0
    6.2	2.2	4.5	1.5
    5.6	2.5	3.9	1.1
    5.9	3.2	4.8	1.8
    6.1	2.8	4.0	1.3
    6.3	2.5	4.9	1.5
    6.1	2.8	4.7	1.2
    6.4	2.9	4.3	1.3
    6.6	3.0	4.4	1.4
    6.8	2.8	4.8	1.4
    6.7	3.0	5.0	1.7
    6.0	2.9	4.5	1.5
    5.7	2.6	3.5	1.0
    5.5	2.4	3.8	1.1
    5.5	2.4	3.7	1.0
    5.8	2.7	3.9	1.2
    6.0	2.7	5.1	1.6
    5.4	3.0	4.5	1.5
    6.0	3.4	4.5	1.6
    6.7	3.1	4.7	1.5
    6.3	2.3	4.4	1.3
    5.6	3.0	4.1	1.3
    5.5	2.5	4.0	1.3
    5.5	2.6	4.4	1.2
    6.1	3.0	4.6	1.4
    5.8	2.6	4.0	1.2
    5.0	2.3	3.3	1.0
    5.6	2.7	4.2	1.3
    5.7	3.0	4.2	1.2
    5.7	2.9	4.2	1.3
    6.2	2.9	4.3	1.3
    5.1	2.5	3.0	1.1
    5.7	2.8	4.1	1.3
    6.3	3.3	6.0	2.5
    5.8	2.7	5.1	1.9
    7.1	3.0	5.9	2.1
    6.3	2.9	5.6	1.8
    6.5	3.0	5.8	2.2
    7.6	3.0	6.6	2.1
    4.9	2.5	4.5	1.7
    7.3	2.9	6.3	1.8
    6.7	2.5	5.8	1.8
    7.2	3.6	6.1	2.5
    6.5	3.2	5.1	2.0
    6.4	2.7	5.3	1.9
    6.8	3.0	5.5	2.1
    5.7	2.5	5.0	2.0
    5.8	2.8	5.1	2.4
    6.4	3.2	5.3	2.3
    6.5	3.0	5.5	1.8
    7.7	3.8	6.7	2.2
    7.7	2.6	6.9	2.3
    6.0	2.2	5.0	1.5
    6.9	3.2	5.7	2.3
    5.6	2.8	4.9	2.0
    7.7	2.8	6.7	2.0
    6.3	2.7	4.9	1.8
    6.7	3.3	5.7	2.1
    7.2	3.2	6.0	1.8
    6.2	2.8	4.8	1.8
    6.1	3.0	4.9	1.8
    6.4	2.8	5.6	2.1
    7.2	3.0	5.8	1.6
    7.4	2.8	6.1	1.9
    7.9	3.8	6.4	2.0
    6.4	2.8	5.6	2.2
    6.3	2.8	5.1	1.5
    6.1	2.6	5.6	1.4
    7.7	3.0	6.1	2.3
    6.3	3.4	5.6	2.4
    6.4	3.1	5.5	1.8
    6.0	3.0	4.8	1.8
    6.9	3.1	5.4	2.1
    6.7	3.1	5.6	2.4
    6.9	3.1	5.1	2.3
    5.8	2.7	5.1	1.9
    6.8	3.2	5.9	2.3
    6.7	3.3	5.7	2.5
    6.7	3.0	5.2	2.3
    6.3	2.5	5.0	1.9
    6.5	3.0	5.2	2.0
    6.2	3.4	5.4	2.3
    5.9	3.0	5.1	1.8

      代码运行结果:

     

    参考文献:

    [1] https://baike.baidu.com/item/%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90/829840?fr=aladdin

    [2]周志华,机器学习,清华大学出版社,2016年1月1版.

     

    2019-03-09

    00:05:40

    转载于:https://www.cnblogs.com/lyxyhhxbk/p/10494560.html

    展开全文
  • 主成分分析与因子分析及SPSS实现

    万次阅读 多人点赞 2018-05-25 11:27:12
    主成分分析与因子分析及SPSS实现一、主成分分析(1)问题提出在问题研究中,为了不遗漏和准确起见,往往会面面俱到,取得大量的指标来进行分析。比如为了研究某种疾病的影响因素,我们可能会收集患者的人口学资料、...

    主成分分析与因子分析及SPSS实现

    一、主成分分析

    (1)问题提出
    在问题研究中,为了不遗漏和准确起见,往往会面面俱到,取得大量的指标来进行分析。比如为了研究某种疾病的影响因素,我们可能会收集患者的人口学资料、病史、体征、化验检查等等数十项指标。如果将这些指标直接纳入多元统计分析,不仅会使模型变得复杂不稳定,而且还有可能因为变量之间的多重共线性引起较大的误差。有没有一种办法能对信息进行浓缩,减少变量的个数,同时消除多重共线性?
    这时,主成分分析隆重登场。
    (2)主成分分析的原理
    主成分分析的本质是坐标的旋转变换,将原始的n个变量进行重新的线性组合,生成n个新的变量,他们之间互不相关,称为n个“成分”。同时按照方差最大化的原则,保证第一个成分的方差最大,然后依次递减。这n个成分是按照方差从大到小排列的,其中前m个成分可能就包含了原始变量的大部分方差(及变异信息)。那么这m个成分就成为原始变量的“主成分”,他们包含了原始变量的大部分信息。
    注意得到的主成分不是原始变量筛选后的剩余变量,而是原始变量经过重新组合后的“综合变量”。
    我们以最简单的二维数据来直观的解释主成分分析的原理。假设现在有两个变量X1、X2,在坐标上画出散点图如下:

     

    可见,他们之间存在相关关系,如果我们将坐标轴整体逆时针旋转45°,变成新的坐标系Y1、Y2,如下图:
    根据坐标变化的原理,我们可以算出:
    Y1 = sqrt(2)/2 * X1 + sqrt(2)/2 * X2
    Y2 = sqrt(2)/2 * X1 – sqrt(2)/2 * X2
    其中sqrt(x)为x的平方根。
    通过对X1、X2的重新进行线性组合,得到了两个新的变量Y1、Y2。
    此时,Y1、Y2变得不再相关,而且Y1方向变异(方差)较大,Y2方向的变异(方差)较小,这时我们可以提取Y1作为X1、X2的主成分,参与后续的统计分析,因为它携带了原始变量的大部分信息。
    至此我们解决了两个问题:降维和消除共线性。
    对于二维以上的数据,就不能用上面的几何图形直观的表示了,只能通过矩阵变换求解,但是本质思想是一样的。
     
    二、因子分析
    (一)原理和方法:
    因子分析是主成分分析的扩展。
    在主成分分析过程中,新变量是原始变量的线性组合,即将多个原始变量经过线性(坐标)变换得到新的变量。
    因子分析中,是对原始变量间的内在相关结构进行分组,相关性强的分在一组,组间相关性较弱,这样各组变量代表一个基本要素(公共因子)。通过原始变量之间的复杂关系对原始变量进行分解,得到公共因子和特殊因子。将原始变量表示成公共因子的线性组合。其中公共因子是所有原始变量中所共同具有的特征,而特殊因子则是原始变量所特有的部分。因子分析强调对新变量(因子)的实际意义的解释。
    举个例子:
    比如在市场调查中我们收集了食品的五项指标(x1-x5):味道、价格、风味、是否快餐、能量,经过因子分析,我们发现了:
    x1 = 0.02 * z1 + 0.99 * z2 + e1
    x2 = 0.94 * z1 – 0.01 * z2 + e2
    x3 = 0.13* z1 + 0.98 * z2 + e3
    x4 = 0.84 * z1 + 0.42 * z2 + e4
    x5 = 0.97 * z1 – 0.02 * z2 + e1
    (以上的数字代表实际为变量间的相关系数,值越大,相关性越大)
    第一个公因子z1主要与价格、是否快餐、能量有关,代表“价格与营养”
    第二个公因子z2主要与味道、风味有关,代表“口味”
    e1-5是特殊因子,是公因子中无法解释的,在分析中一般略去。
    同时,我们也可以将公因子z1、z2表示成原始变量的线性组合,用于后续分析。
    (二)使用条件:
    (1)样本量足够大。通常要求样本量是变量数目的5倍以上,且大于100例。
    (2)原始变量之间具有相关性。如果变量之间彼此独立,无法使用因子分析。在SPSS中可用KMO检验和Bartlett球形检验来判断。
    (3)生成的公因子要有实际的意义,必要时可通过因子旋转(坐标变化)来达到。
     
    三、主成分分析和因子分析的联系与区别
    联系:两者都是降维和信息浓缩的方法。生成的新变量均代表了原始变量的大部分信息且互相独立,都可以用于后续的回归分析、判别分析、聚类分析等等。
    区别:
    (1)主成分分析是按照方差最大化的方法生成的新变量,强调新变量贡献了多大比例的方差,不关心新变量是否有明确的实际意义。
    (2)因子分析着重要求新变量具有实际的意义,能解释原始变量间的内在结构。
     
    SPSS没有提供单独的主成分分析方法,而是混在因子分析当中,下面通过一个例子来讨论主成分分析与因子分析的实现方法及相关问题。
     
    一、问题提出
     
    男子十项全能比赛包含100米跑、跳远、跳高、撑杆跳、铅球、铁饼、标枪、400米跑、1500米跑、110米跨栏十个项目,总分为各个项目得分之和。为了分析十项全能主要考察哪些方面的能力,以便有针对性的进行训练,研究者收集了134个顶级运动员的十项全能成绩单,将通过因子分析来达到分析目的。
     
    二、分析过程
     
    变量视图:
     
    数据视图(部分):
    菜单选择(分析->降维->因子分析):

    打开因子分析的主界面,将十项成绩选入”变量“框中(不要包含总分),如下:
    点击”描述“按钮,打开对话框,选中”系数“和”KMO和Bartlett球形度检验“:

    上图相关解释:
    ”系数“:为变量之间的相关系数阵列,可以直观的分析相关性。
    ”KMO和Bartlett球形度检验“:用于定量的检验变量之间是否具有相关性。
    点击”继续“,回到主界面,点击”抽取“,打开对话框。
    ”方法“ =>”主成分“,”输出“=>”未旋转的因子解“和”碎石图“,”抽取“=>”基于特征值“,其余选择默认。

    解释:
    ①因子抽取的方法:选取默认的主成分法即可,其余方法的计算结果可能有所差异。
    ②输出:”未旋转的因子解”极为主成分分析结果。碎石图有助于我们判断因子的重要性(详细介绍见后面)。
    ③抽取:为抽取主成分(因子)的方法,一般是基于特征值大于1,默认即可。
    点击”继续“,回到主界面,点击”确定“,进入分析。
    输出的主要表格如下:
    (1)相关性检验
    因子分析要求变量之间有相关性,所以首先要进行相关性检验。首先输出的是变量之间的相关系数矩阵:

    可以直观的看到,变量之间有相关性。但需要检验,接着输出的是相关性检验:
    上图有两个指标:第一个是KMO值,一般大于0.7就说明不了之间有相关性了。第二个是Bartlett球形度检验,P值<0.001。综合两个指标,说明变量之间存在相关性,可以进行因子分析。否则,不能进行因子分析。
    (2)提取主成分和公因子
    接下来输出主成分结果:

    这就是主成分分析的结果,表中第一列为10个成分;第二列为对应的”特征值“,表示所解释的方差的大小;第三列为对应的成分所包含的方差占总方差的百分比;第四列为累计的百分比。一般来说,选择”特征值“大于1的成分作为主成分,这也是SPSS默认的选择。
    在本例中,成分1和2的特征值大于1,他们合计能解释71.034%的方差,还算不错。所以我们可以提取1和2作为主成分,抓住了主要矛盾,其余成分包含的信息较少,故弃去。
    下面,输出碎石图,如下:
    碎石图来源于地质学的概念。在岩层斜坡下方往往有很多小的碎石,其地质学意义不大。碎石图以特征值为纵轴,成分为横轴。前面陡峭的部分特征值大,包含的信息多,后面平坦的部分特征值小,包含的信息也小。
    由图直观的看出,成分1和2包含了大部分信息,从3开始就进入平台了。
    接下来,输出提取的成分矩阵:

    上表中的数值为公因子与原始变量之间的相关系数,绝对值越大,说明关系越密切。公因子1和9个运动项目都正相关(注意跑步运动运动的计分方式,时间越短,分数越高),看来只能称为“综合运动”因子了。公因子2与铁饼、铅球正相关,与1500米跑、400米跑负相关,这究竟代表什么意思呢?看来只能成为“不知所云”因子了。
    (三)因子旋转
    前面提取的两个公因子一个是大而全的“综合因子”,一个不知所云,得到这样的结果,无疑是分析的失败。不过,不要灰心,我们可以通过因子的旋转来获得更好的解释。在主界面中点击“旋转”按钮,打开对话框,“方法”=>“最大方差法”,“输出”=>“旋转解”。

    点击“继续”,回到主界面点击“确认”进行分析。输出结果如下:
    这是选择后的成分矩阵。经过旋转,可以看出:
    公因子1得分越高,所有的跑步和跨栏成绩越差,而跳远、撑杆跳等需要助跑类项目的成绩也越差,所以公因子1代表的是奔跑能力的反向指标,可称为“奔跑能力”。
    公因子2与铁饼和铅球的正相关性很高,与标枪、撑杆跳等需要上肢力量的项目也正相关,所以该因子可以成为“上肢力量”。
    经过旋转,可以看出公因子有了更合理的解释。
    (四)结果的保存
    在最后,我们还要将公因子储存下来供后续使用。点击“得分”按钮,打开对话框,选中“保存为变量”,方法采用默认的“回归”方法,同时选中“显示因子得分系数矩阵”。

    SPSS会自动生成2个新变量,分别为公因子的取值,放在数据的最后。同时会输出一个因子系数表格:

    由上图,我们可以写出公因子的表达式(用F1、F2代表两个公因子,Z1~Z10分别代表原始变量):

    F1 = -0.16*Z1+0.161*Z2+0.145*Z3+0.199*Z4-0.131*Z5-0.167*Z6+0.137*Z7+0.174*Z8+0.131*Z9-0.037*Z10
    F2同理,略去。
    注意,这里的变量Z1~Z10,F1、F2不再是原始变量,而是标准正态变换后的变量。
    展开全文
  • 主成分分析SPSS中的操作应用 (2) SPSS在调用 Factor Analyze 过程进行分析时 SPSS会自动对原始数据进行标准化 处理所以在得到计算结果后指的变量都是指经过标准化处理后的变量 但 SPSS不会直 接给出标准化后的...
  • 主成分分析SPSS中的操作应用

    万次阅读 多人点赞 2018-07-18 23:32:33
    主成分分析SPSS中的操作应用 主成分分析SPSS中的操作应用 主成分分析原理 主成分分析法简介 主成分分析数学模型 对沿海 10 个省市经济综合指标进行主成分分析 生成图表 方法一 方法二 方法一结果 方法二结果 ...

    主成分分析在SPSS中的操作应用

    主成分分析原理

    ​ 主成分分析是设法将原来众多具有一定相关性 ( 比如 P 个指标) , 重新组合成一组新的互相无关的综合指标来代替原来的指标。通常数学上的处理就是将原来 P 个指标作线性组合, 作为新的综合指标。最经典的做法就是用 F1 ( 选取的第一个线性组合, 即第一个综合指标) 的方差来表达, 即 Var(F1) 越大, 表示 F1 包含的信息越多。因此在所有的线性组合中选取的 F1 应该是方差最大的, 故称F1 为第一主成分。如果第一主成分不足以代表原来 P 个指标的信息, 再考虑选取 F2 即选第二个线性组合, 为了有效地反映原来信息, F1 已有的信息就不需要再出现在 F2中, 用数学语言表达就是要求 Cov(F1,F2)=0 , 则称 F2 为第二主成分, 依此类推可以构造出第三、第四, ⋯⋯, 第 P 个主成分。

    主成分分析法简介

    ​ 一项十分著名的工作是美国的统计学家斯通( ( stone) 在1947 年关于国民经济的研究。他曾利用美国 1929 一 1938年各年的数据,得到了 17 个反映国民收入与支出的变量要素,例如雇主补贴、消费资料和生产资料、纯公共支出、净增库存、股息、利息外贸平衡等等。

    ​ 在进行主成分分析后,竟以 97.4 %的精度,用三新变量就取代了原 17 个变量。根据经济学知识,斯通给这三个新变量分别命名为总收入 F1 、 总收入变化率 F2 和经济发展或衰退的趋势 F3

    主成分与原始变量之间的关系:

    1. 主成分保留了原始变量绝大多数信息。
    2. 主成分的个数大大少于原始变量的数目。
    3. 各个主成分之间互不相关。
    4. 每个主成分都是原始变量的线性组合。

    主成分分析数学模型

    {F1=a11ZX1+a21ZX2++ap1ZXpF2=a12ZX1+a22ZX2++ap2ZXpF3=a1mZX1+a2mZX2++apmZXp

    ​ 其中a1i,a2i,,api(i=1,,m)X 的协方差阵的特征值多对应的特征向量, ZX1,ZX2,,ZXp 是原始变量经过标准化处理的值, 因为在实际应用中, 往往存在指标的量纲不同, 所以在计算之前须先消除量纲的影响,而将原始数据标准化, 本文所采用的数据就存在量纲影响 [ 注: 本文指的数据标准化是指 Z 标准化 ] 。
    A=(aij)p×m=(a1,a2,am,) , Rai=λiai , R 为相关系数矩阵, λiai 是相应的特征值和单位特征向量 ,λ1λ2λp0

    进行主成分分析主要步骤如下:

    1. 根据研究问题选取指标与数据;
    2. 进行指标数据标准化( SPSS 软件 Factor 过程自动执行) ;
    3. 进行指标之间的相关性判定;
    4. 确定主成分个数 m ;
    5. 确定主成分 Fi 表达式;
    6. 进行主成分 Fi 命名;
    7. 计算综合主成分值并进行评价与研究。

    对沿海 10 个省市经济综合指标进行主成分分析

    地区 GDP 人均GDP 农业增加值 工业增加值 第三产业增加值 固定资产投资 基本建设投资 社会消费品零售总额 海关出口总额 地方财政收入
    辽宁 5458.2 13000 14883.3 1376.2 2258.4 1315.9 529 2258.4 123.7 399.7
    山东 10550 11643 1390 3502.5 3851 2288.7 1070.7 3181.9 211.1 610.2
    河北 6076.6 9047 950.2 1406.7 2092.6 1161.6 597.1 1968.3 45.9 302.3
    天津 2022.6 22068 83.9 822.8 960 703.7 361.9 941.4 115.7 171.8
    江苏 10636 14397 1122.6 3536.3 3967.2 2320 1141.3 3215.8 384.7 643.7
    上海 5408.8 40627 86.2 2196.2 2755.8 1970.2 779.3 2035.2 320.5 709
    浙江 7670 16570 680 2356.5 3065 2296.6 1180.6 2877.5 294.2 566.9
    福建 4682 13510 663 1047.1 1859 964.5 397.9 1663.3 173.7 272.9
    广东 11770 15030 1023.9 4224.6 4793.6 3022.9 1275.5 5013.6 1843.7 1202
    广西 2437.2 5062 591.4 367 995.7 542.2 352.7 1025.5 15.1 186.7

    ​ 运用 SPSS 统计分析软件 Factor 过程 [2] 对沿海 10 个省市经济综合指标进行主成分分析。具体操作步骤如下:

    1. 点击:分析→降维→因子… , 弹出因子分析对话框;
      这里写图片描述
    2. X1X10 选入变量框;
    3. 点击:描述→系数(勾选); 提取→碎石图; 得分→显示因子得分系数矩阵;最后点击确定

    生成图表

    ​ SPSS 在调用 Factor Analyze 过程进行分析时, SPSS 会自动对原始数据进行标准化处理, 所以在得到计算结果后的变量都是指经过标准化处理后的变量, 但 SPSS 并不直接给出标准化后的数据, 如需要得到标准化数据, 则需调用 Descriptives 过程进行计算。
    这里写图片描述

    如,GDP和GDP的相关性为1,自己和自己相关性最强;人均GDP和GDP的相关性为-0.094,说明两者相关性不强;等等;
    从上表可知 GDP 与工业增加值, 第三产业增加值、固定资产投资、基本建设投资、社会消费品零售总额、地方财政收入这几个指标存在着极其显著的关系, 与海关出口总额存在着显著关系。可见许多变量之间直接的相关性比较强, 证明他们存在信息上的重叠。

    这里写图片描述 这里写图片描述

    左图:可以看出第一个特征GDP占72.205%,前两个特征累计占84.551%;所以提取2个主成分,即m=2。
    右图: 可知 GDP、工业增加值、第三产业增加值、固定资产投资、基本建设投资、社会消费品零售总额、海关出口总额、地方财政收入在第一主成分上有较高载荷, 说明第一主成分基本反映了这些指标的信息; 人均 GDP 和农业增加值指标在第二主成分上有较高载荷, 说明第二主成分基本反映了人均GDP 和农业增加值两个指标的信息。所以提取两个主成分是可以基本反映全部指标的信息, 所以决定用两个新变量来代替原来的十个变量。

    方法一

    用成分矩阵中的数据除以主成分相对应的特征值开平方根便得到两个主成分中每个指标所对应的系数 ;
    例如:F1系数 a11=0.9497.220=0.353F2a11=0.1951.235=0.175

    F1=0.353ZX1+0.042ZX20.041ZX3+0.364ZX4+0.367ZX5+0.366ZX6+0.352ZX7+0.364ZX8+0.298ZX9+0.355ZX10

    F2=0.175ZX10.741ZX2+0.609ZX30.004ZX4+0.063ZX50.061ZX60.022ZX7+0.158ZX80.046ZX90.115ZX10

    上式中ZXi是归一化之后的数据,使用SPSS进行数据标准化,方法如下:
    1. 点击:分析→描述统计→描述;
    2. 将所有选项导入变量中;
    3. 勾选标准化值;
    这里写图片描述

    生成归一化之后的Z值:
    这里写图片描述
    例如:求辽宁的F1=0.3530.35567+0.0420.31866++0.3550.34163
    F2方法类似;
    F=(72.2/84.5)F1+(12.3/84.5)F2

    方法二

    使用成份得分矩阵求F1F2
    这里写图片描述
    直接使用成分得分系数做为系数,如下公式:
    F1=0.131ZX1+0.015ZX20.015ZX3+0.135ZX4+0.137ZX5+0.136ZX6+0.131ZX7+0.135ZX8+0.111ZX9+0.132ZX10

    F2=0.158ZX10.667ZX2+0.548ZX30.004ZX4+0.056ZX50.055ZX60.020ZX7+0.142ZX80.041ZX90.104ZX10

    F=(72.2/84.5)F1+(12.3/84.5)F2

    方法一结果

    这里写图片描述

    方法二结果

    这里写图片描述


    参考链接

    论文:主成分分析在SPSS中的操作应用
    视频:主成分分析法

    展开全文
  • 2006 Matlab Matlab Matlab [pc,score, variance, t2] princomp(X) X x11 x12 L x1m x x L x X 21 22 2m n>m M M M x x L x n1 n2 nm T pc f pc pc= i score X variance score A percent-v = 100*variance/sum(vari
  • 主成分分析SPSS中的操作应用 主成分分析SPSS中的操作应用 主成分分析原理 主成分分析法简介 主成分分析数学模型 对沿海 10 个省市经济综合指标进行主成分分析 生成图表 方法一 方法二 方法一...
  • 主成分分析法和SPSS软件应用时 一对一的正确步骤 ? ; 一指标的正向化 指标最好有同趋势化一般为了评价分析的方便需要将逆指标转化为正指标转化的方式为用逆指标的倒数值代替原指标 二指标数据标准化SPSS软件自动执行...
  • 处理数据时降维算法主成分分析法在SPSS中的处理教学。
  • 主成分分析SPSS中的操作应用主成分分析SPSS中的操作应用主成分分析SPSS中的操作应用
  • 主成分分析在?SPSS?中的操作应用(上) /2005/11/3009469269.shtml 慧聪网?2005?年?11?月?30?日?9?时?46?分?信息来源 慧聪网行业研究频道 一引言 主成分分析和因子分析在社会经济统计综合评价 中是两个常被使用的统计...
  • 主成分分析SPSS中操作详细步骤,附带实例。
  • 主成分分析SPSS中的应用,最讨厌那些资源分设置的人,
  • 主成分分析SPSS中的操作应用
  • MATLAB实现主成分分析-利用Matlab和SPSS实现主成分分析.doc 有详细的例子和程序
  • 在这里,整理发布了SPSS主成分分析与因子分析,只为方便大家用于学习、参考,喜欢SPSS主成分分...该文档为SPSS主成分分析与因子分析,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • SPSS主成分分析

    2014-05-21 20:08:23
    SPSS主成分分析,运用于学习spss初学者,应用到写文章中的好方法。
  • 超详细SPSS主成分分析计算指标权重(一)

    万次阅读 多人点赞 2019-03-13 20:58:51
    一、指标权重计算确定的困惑 相信很多写过或者正在写指标处理类论文的朋友都曾对如何计算指标权重充满困惑...用SPSS进行主成分分析之后又要如何得到最终的权重呢?接下来笔者将以一个实际的案例,带领大家一步步从S...
  • 文章目录PCA介绍SPSS实现python实现简单的主成分分析主成分分析用于综合评价Notice PCA介绍 主成分分析(Principal Component Analysis,PCA):利用降维的方法,把多指标转化为几个综合指标的多元统计方法; 实际...
  • 1、主成分分析是用来解决评价类问题,可以应用于针对相同的多因子的多个对象的评价并排序,举个例子就是现在如果让你去给中国的城市的生活指数排序,那么你可能会想到很多的指标如:GDP、人口密度、平均工资、平均...
  • 主成分分析SPSS
  • spss案例教程&主成分分析与因子分析及SPSS实现

    万次阅读 多人点赞 2019-01-15 00:19:33
    spss案例教程 原文地址:... 主成分分析与因子分析及SPSS实现一、主成分分析(1)问题提出在问题研究中,为了不遗漏和准确起见,往往会面面俱到,取得大量的指标来进行分析。...
  • SPSS主成分分析 因子分析 相关分析等
  • 第13章 主成分分析与因子分析 介绍 1主成分分析与因子分析的概念 2主成分分析与因子分析的过程 主成分分析与因子分析的概念 需要与可能在各个领域的科学研究中往往需要对反映事物的多个变量进行大量的观测收集大量...
  • spss实现主成分分析

    千次阅读 2020-04-03 15:14:52
    首先打开spss软件,在菜单栏"文件"中导入相关数据文件 导入的数据如下所示: ... ...我们按照上图选中“因子”,弹出对话框,将需要进行主成分分析的标准化处理后的数据导入右侧框中: 先点击“...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 251
精华内容 100
关键字:

主成分分析spss