
需要设置的参数是R,因子个数m,后面会讲到m如何选取)
下面给出主成分法的R程序(factoranaly1R)
factoranaly1<-function(S, m){
p<-nrow(S); diag_S<-diag(S); sum_rank<-sum(diag_S)
rowname<-paste("X", 1:p, sep="")
colname<-paste("Factor", 1:m, sep="")
A<-matrix(0, nrow=p, ncol=m,
dimnames=list(rowname, colname))
eig<-eigen(S)
for (i in 1:m)
A[,i]<-sqrt(eig$values[i])eig$vectors[,i]
h<-diag(A%%t(A))
rowname<-c("SS loadings", "Proportion Var", "Cumulative Var")
B<-matrix(0, nrow=3, ncol=m,
dimnames=list(rowname, colname))
for (i in 1:m){
B[1,i]<-sum(A[,i]^2)
B[2,i]<-B[1,i]/sum_rank
B[3,i]<-sum(B[1,1:i])/sum_rank
}
method<-c("Principal Component Method")
list(method=method, loadings=A,
var=cbind(common=h, spcific=diag_S-h), B=B)
}
函数输入值S是样本方差阵或相关矩阵,m是主因子的个数,函数的输出值是列表形式,其内容有估计参数的办法(主成分法),因子载荷(loadings),共性方差和特殊方差,以及因子F对变量X的贡献、贡献率和累积贡献率。
#调用因子分析主成分法的函数
source("factoranaly1R")
#显示结果估计参数的方法为主成分法,loadings-因子载荷,var-共性方差和特殊方差
我的建议是可能要大改整个程序:用一个list(比如叫datalist)把所有data frame或者之类的东西装起来,用的时候用datalist[[i]]来取出第i个data frame。用sqldf的时候,第一个和第三个可以用paste来写命令,第二个和第四个可能需要先用一个data frame(比如叫data)来暂时存储datalist里的一个data frame再 *** 作sqldf。总的来说像这样(没怎么用过SQL,可能有问题):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dataold_list<-dataoldlist<-datanew_list<-datanewlist<-vector("list",100)
for(i in 1:100){
dataold_list[[i]]<-sqldf(paste("select from Dataold a,num",i," b
where aLOAN_NO=bLOAN_NO",sep=""))
dataold_list[[i]]<-dataold_list[[i]][,-1]
data<-dataold_list[[i]]
dataoldlist[[i]]<-sqldf("select from a,data b
where aLOAN_NO=bLOAN_NO")
datanew_list[[i]]<-sqldf(paste("select from Datanew a,num",i," b
where aLOAN_NO=bLOAN_NO",sep=""))
datanew_list[[i]]<-dataold_list[[i]][,-1]
data<-datanew_list[[i]]
datanewlist[[i]]<-sqldf("select from a,data b
where aLOAN_NO=bLOAN_NO")
str<-'1122333344'
charlist<-strsplit(str, "")
print(charlist[[1]])
out<-''
for (i in 1:nchar(str)){
if(i==1||charlist[[1]][i]!=charlist[[1]][i-1])
out=paste(out,charlist[[1]][i])
}
print(out)
我是这么做的
这句你是想把所有的数据按行往下粘吧,你之前把dat定义成数据框,如此粘的时候列名必须严格相等,不知道你数据什么样子,
dat <- rbind(dat, readcsv(paste0(directory,"/",i)))
# 这句我也不太懂,completecases是自定义函数?
datclean <- dat[completecases(dat$pollutant)]
以上就是关于如何用R输出MFA的因子载荷全部的内容,包括:如何用R输出MFA的因子载荷、r语言如何将sqlFetch写成循环、r语言如何把字符串中连续的几个相同的字符替换为一个字符等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)