Login
Order Now
Support
R Programming Assignment on Factor Analysis

R Programming Assignment on Factor Analysis

  • 2nd Jun, 2022
  • 23:43 PM
Personality <- read.csv("Personality.txt", sep="")
head(Personality)
summary(Personality)
library(corrplot)
corrplot(cor(Personality), order = "hclust", tl.col='black', tl.cex=.75)

d_stan = as.data.frame(scale(Personality))
### Factor analysis with no rotation
res1b = factanal(d_stan, factors = 10, rotation = "none", na.action = na.omit)
res1b$loadings

# Compute eigenvalues from factor loadings

# Compute eigenvalue of factor 1
loadings_fac1 = res1b$loadings[,1]
eigenv_fac1 = sum(loadings_fac1^2); eigenv_fac1
# Compute proportion variance
eigenv_fac1/32

# Uniqueness & Communality
res1b$uniquenesses
# Calculate uniqueness
loadings_distant = res1b$loadings[1,]
communality_distant = sum(loadings_distant^2); communality_distant
uniqueness_distant = 1-communality_distant; uniqueness_distant

### Plot loadings against one another
load = res1b$loadings[,1:2]
plot(load, type="n") # set up plot 
text(load,labels=names(d_stan),cex=.7) # add variable names

# Rotation of Factors

### Factor analysis with rotation
res1a = factanal(d_stan, factors = 10, rotation = "varimax", na.action = na.omit)
res1a$loadings
### Plot loadings against one another
load = res1a$loadings[,1:2]
plot(load, type="n") # set up plot 
text(load,labels=names(d_stan),cex=.7) # add variable names

# Creating composite variables

k = 2
p = 5
yes = 'yes! lets extract k factors!'
no = 'no! we need more data or fewer factors!'
ifelse(((p-k)^2 > p+k), yes, no)

#Let’s try combining some synonyms and then look at the extracted Factors!
  shy = rowMeans(cbind(d_stan$distant, d_stan$shy, d_stan$withdrw, d_stan$quiet))
outgoing = rowMeans(cbind(d_stan$talkatv, d_stan$outgoin, d_stan$sociabl))
hardworking = rowMeans(cbind(d_stan$hardwrk, d_stan$persevr, d_stan$discipl))

friendly = rowMeans(cbind(d_stan$friendl, d_stan$kind, d_stan$coopera, d_stan$agreebl, d_stan$approvn, 
                          d_stan$sociabl))
anxious = rowMeans(cbind(d_stan$tense, d_stan$anxious, d_stan$worryin))
#etc, you guys choose what you want to combine
combined_data = cbind(shy,outgoing,hardworking,friendly,anxious)
combined_data = as.data.frame(combined_data)
res2 = factanal(combined_data, factors = 2, na.action=na.omit)
res2$loadings

### Plot loadings against one another
load = res2$loadings[,1:2]
plot(load, type="n") # set up plot 
text(load,labels=names(combined_data),cex=.7) # add variable names

Share this post

assignment helpassignment helperassignment expertsassignment writing services