最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 【】变量间相关性的一种多元统计方法

    成分分析

    成分分析是一种降维分析方法,是一种检验多个变量之间相关性的多元统计方法。揭示多个变量的内部结构,即从原始变量中推导出几个主成分,使它们尽可能多地保留原始变量的信息,并且彼此不相关。

    为什么要降维

    1)多重共线性——预测变量之间存在一定程度的相关性。多重共线性会导致解空间不稳定,从而导致结果不一致。

    2)高维空间本质上是稀疏的。

    3)变量太多会阻碍搜索规则的建立。

    4)仅在变量级别进行分析可能会忽略变量之间的潜在联系。例如,多个预测变量的绑定可以反映数据的某个方面。

    主成分满足的条件:

    1)每个主成分P都是原始变量的线性组合,有多少个原始变量就有多少个主成分。任何主成分都可以表示为:

    r语言 特征筛选_一个三层空心方阵最外层有48人求方阵共多少人?_求方阵特征值 r语言

    2)公式中未知系数aij满足平方和为1;

    3)P1是线性组合中方差最大的,其次是P2,P3,…Pm,主成分相互不相关。

    主成分分析过程

    1)数据预处理,可以直接使用原始数据,也可以使用相关系数矩阵;

    2)选择主成分个数(有3种方法可供参考,1:保留特征值大于1的主成分;2:砾石图,图中变化最大的主成分以上可以3:并行分析,比较真实数据的特征值和模拟数据的特征值,保留特征值大于模拟数据的主成分

    3)提取主成分

    4)主成分旋转,当提取多个主成分时,旋转它们可以使结果更具可解释性

    5)解释结果

    6)计算主成分分数

    应用

    主成分分析使用 psych 包中的 principal() 函数。下面是对该函数中参数的解释:

    principal(r, nfactors = 1, residuals = FALSE,rotate="varimax",
                n.obs=NA, covar=FALSE,scores=TRUE,missing=FALSE,
                impute="median",oblique.scores=TRUE,
                method="regression",...)

    r指定输入数据,如果输入是原始数据,R会自动计算其相关系数矩阵;

    nfactors 指定主成分个数个数;

    residuals 是否显示主成分模型的残差,默认不显示;

    rotate指定模型旋转方式,默认为最大方差方式;

    n.obs,如果输入数据是相关系数矩阵,则必须指定观察到的样本量

    covar是一个逻辑参数,如果输入数据是原始数据或者方阵(比如协方差矩阵),R会转换成相关系数矩阵;

    scores 是否计算主成分分数;

    缺失缺失值处理方法,如果scores为TRUE,缺失值也为TRUE求方阵特征值 r语言,缺失值将被中位数或均值替代;

    impute指定缺失值的替换方式,默认为中位数替换;

    method指定主成分得分的计算方法,默认使用回归法计算。

    R语言操作

    #创建数据集
    x1 <- c(5700,1000,3400,3800,4000,8200,1200,9100,9900,9600,9600,9400)
    x2 <- c(12.8,10.9,8.8,13.6,12.8,8.3,11.4,11.5,12.5,13.7,9.6,11.4)
    x3 <- c(2500,600,1000,1700,1600,2600,400,3300,3400,3600,3300,4000)
    x4 <- c(270,10,10,140,140,60,10,60,180,390,80,100)
    x5 <- c(25000,10000,9000,25000,25000,12000,16000,14000,18000,25000,12000,13000)
    my.data <- data.frame(x1 = x1, x2 = x2, x3 = x3, x4 = x4, x5 = x5)
    #x1为总人口数;x2为雇员总数;x3为中等校平均校龄;x4为专业服务项目数;x5为中等房价

    #加载psych包
    library(psych)
    #选择主成分数目
    fa.parallel(x = my.data, fa="pc")

    一个三层空心方阵最外层有48人求方阵共多少人?_求方阵特征值 r语言_r语言 特征筛选

    从上图的结果可以看出,这里选择了2个主成分。

    #提取主成分
    pc <- principal(r = my.data, nfactors = 2, rotate = 'none')
    pc

    一个三层空心方阵最外层有48人求方阵共多少人?_求方阵特征值 r语言_r语言 特征筛选

    主函数默认将相关系数矩阵转换为原始数据,这里不旋转主成分。 PC1 和 PC2 是分量载荷,它们是变量与主分量之间的相关系数。系数可以写成上面提到的主成分公式。 h2是每个变量的主成分解释的方差程度,u2是主成分不能解释的比例。由图可见,第一主成分解释了5个变量62%的方差求方阵特征值 r语言,第一主成分和第二主成分充分解释了5个变量的方差。

    #旋转主成分,这里使用最常用的正交最大正交旋转法

    rc <- principal(r = my.data, nfactors = 2, rotate = 'varimax')
    rc

    r语言 特征筛选_求方阵特征值 r语言_一个三层空心方阵最外层有48人求方阵共多少人?

    p>

    通过最大方差法的旋转,发现PC1和PC2的值与前面的相差很大,更容易找出哪些变量主要由主成分解释。这里PC1可以是x2、x4和x5变量,而PC2可以用x1和x3变量来解释。

    计算主成分分数:只需在函数中设置参数分数为TRUE

    #计算各主成分的得分
    spc <- principal(r = my.data, nfactors = 2, rotate = 'varimax', scores = TRUE)
    scores <- spc$scores
    scores

    r语言 特征筛选_求方阵特征值 r语言_一个三层空心方阵最外层有48人求方阵共多少人?

    一般情况下,观察可以通过每个主成分的得分来标记综合得分,权重的设置可以通过特征根的值来确定。

    因素分析

    因子分析也是一种降维技术,通过降维来挖掘隐藏在数据中的不可观测变量,这些变量可以解释可观测变量之间的相关性。因子分析与主成分分析最大的区别在于,每个自变量都是因子的线性组合,具体的数学表达式可以表示为:

    求方阵特征值 r语言_r语言 特征筛选_一个三层空心方阵最外层有48人求方阵共多少人?

    因子分析过程与主成分基本相同,此处不再赘述。

    应用

    因子分析使用 psych 包中的 fa() 函数。下面是函数中参数的解释:

    fa(r,nfactors=1,n.obs = NA,n.iter=1, rotate="oblimin", scores="regression", 
    residuals=FALSE, SMC=TRUE, covar=FALSE,missing=FALSE,impute="median",
    min.err = 0.001,  max.iter = 50,symmetric=TRUE, warnings=TRUE, fm="minres",
     alpha=.1,p=.05,oblique.scores=FALSE,np.obs,use="pairwise",cor="cor",...)

    p>

    r 为输入数据,可以是原始数据或协方差矩阵或相关系数矩阵。如果是原始数据,R会计算它的相关系数矩阵,如果是协方差矩阵,也会将其转换为相关系数矩阵,除非covar为TRUE;

    nfactors指定因子个数,默认为1个因子;

    n.iter使用bootstrap方法进行因子分析,可以指定迭代次数,默认1次;

    rotate指定因子旋转方式,默认为最小倾斜方式进行旋转;

    scores采用回归法计算因子得分;

    residuals计算因子默认不计算模型的residual;

    SMC使用多重相关系数的平方或1作为共同度的初始值;

    n.obs、covar、missing、impute与主成分分析参数相同;

    min.err,指定最小误差值,使得迭代过程中变量共同度小于该值;

    max.iter 指定收敛时的最大迭代次数;

    fm指定提取公因子的方法,默认使用最小二乘法;

    这里需要指出的是,如果得到的数据不是原始数据,而是协方差矩阵,可以使用cov2cor()函数将协方差矩阵转换为相关系数矩阵。

    r语言 特征筛选_一个三层空心方阵最外层有48人求方阵共多少人?_求方阵特征值 r语言

    #选择因子数目
    library(psych)
    fa.parallel(x = my.data, fa="fa")

    在选择因子个数的时候,值得注意的是特征值大于0的因子被保留,不大于1。从图中的结果,我们选择2个因子,结果如图下图:

    提取因子(最大似然法(ml)具有较好的统计性质,但有时不收敛,这种情况下可以使用主轴迭代法(pa))

    f <- fa(r = my.data, nfactors = 2, n.obs = 112, fm = 'ml', rotate = 'none')
    f

    一个三层空心方阵最外层有48人求方阵共多少人?_求方阵特征值 r语言_r语言 特征筛选

    结果框与主成分的返回结果类似,这里不再赘述。

    #因子旋转,有助于更好地解释因子
    fr <- fa(r = my.data, nfactors = 2, n.obs = 112, fm = 'ml', rotate = 'varimax')
    fr

    一个三层空心方阵最外层有48人求方阵共多少人?_r语言 特征筛选_求方阵特征值 r语言 

    计算因子分数:只需在函数中将参数分数设置为TRUE

    #因子得分的计算
    sf <- fr <- fa(r = my.data, nfactors = 2, n.obs = 112, fm = 'ml', rotate = 'varimax', scores = TRUE)
    sf$scores

    一个三层空心方阵最外层有48人求方阵共多少人?_求方阵特征值 r语言_r语言 特征筛选

    用于主成分或因子分析的其他 R 包

    FactoMineR 包不仅提供 PCA 和 EFA 方法,还包括潜在变量模型,其中有许多 principal() 和 fa() 函数未考虑的参数选项,例如数值变量和分类变量的使用。 FAiR 包使用遗传算法来估计因子分析模型,这增强了模型参数估计能力以处理不等式约束。 GPARotation 包提供了许多因子旋转方法。 nFactors 包提供了许多确定因子数量的方法。

    我个人认为主成分和因子分析结果的解释是最难的,需要了解分析的数据,包括数据各个维度之间的关系,行业的特点,等。本文主要是使用R语言实现主成分和因子分析。具体理论知识请参考以下参考资料。

    参考资料:

    《R语言实践》

    《统计建模与R语言》

    刘顺祥,数据分析师,喜欢数据分析和挖掘,擅长使用R语言。目前,我正在自学Python语言。

    本文由数据人网授权刘顺祥发表,数据人网审核。转载本文需征得作者同意,并请附上出处(数据人网)及本页链接。原文链接:

    数据人网(),数据人学习、交流和分享的家园,专注于从数据中学习,努力发现数据洞察,积极利用数据的价值。坚持为“让人们理解和使用数据”为使命而有所作为。每个人都可以贡献、分享和传播,并给出反馈。如果您有任何想法,请给我们反馈,谢谢。数据人网络,我们共同构建和共享。

    公众号推荐

    来自媒体的数据科学,从数据中学习。

    长按二维码图片,选择识别二维码的图片,添加即可。

    一个三层空心方阵最外层有48人求方阵共多少人?_求方阵特征值 r语言_r语言 特征筛选

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » 【】变量间相关性的一种多元统计方法

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论