南京邮电大学多元统计分析实验四-主成分分析

使用平台:R、Rstudio

题目描述:数据Employee data.sav中为银行在1969-1971年之间雇员情况的数据,共包括474条观测及10个变量,本例中需要用到的变量分别为Educ ,Salary,Salbegin,Jobtime,Prevexp。进行主成分分析。

> rm(list=ls())
> # library(foreign)
> library(haven)
> # data <- read.spss("主成分分析(Employeedata).sav", to.data.frame = TRUE)
> data=read_sav("主成分分析(Employeedata).sav")
> Id=data[,1]
> Educ=data[,4]
> Salary=data[,6]
> Salbegin=data[,7]
> Jobtime=data[,8]
> Prevexp=data[,9]
> # Prevexp[data=="missing"]=0
> # 提取特定列数据
> # selected_data <- data[, c(4,6:9)]  # 选择第4、6、7、8、9列的数据
> selected_data=data.frame(Educ,Salary,Salbegin,Jobtime,Prevexp)
> # 执行主成分分析
> pca_result <- prcomp(selected_data, scale = TRUE)  
# 进行主成分分析,scale = TRUE表示对数据进行标准化
> print(pca_result)
> sigm=cov(selected_data)
> my51=eigen(sigm)
> #特征值
> lam<-my51$values
> p<-length(lam)
> #方差贡献率
> culam<-cumsum(lam)/sum(lam)
> VE<-data.frame(lam,lam/sum(lam),culam)
> colnames(VE)<-c("特征根","贡献率","累计贡献率")
> print(VE)
> #碎石图
> plot(lam,type="o",xlab="主成分序号",ylab="特征值")
> #特征向量
> gam<-my51$vectors
> colnames(gam)<-paste("vec",sep="",1:p)
> print(gam[,1:2])
> #因子负荷量
> lam_ma<-matrix(lam,p,p,byrow=TRUE)
> sigmai<-(diag(sigm))^0.5
> #特征根*特征根的算术平方根
> gamsla<-gam*sqrt(lam_ma)
> load<-gamsla/sigmai
> colnames(load)<-paste("load",sep="",1:p)
> print(load[,1:2])
> VV<-load^2
> print(VV[,1:2])
> sum(VV[,1:2])/5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值