setwd("C:/Users/soporte/Downloads")
library(rio)
data=import("reporte (5).xlsx")
## New names:
## • `` -> `...2`
## • `` -> `...3`
## • `` -> `...4`
## • `` -> `...5`
## • `` -> `...6`
## • `` -> `...7`
## • `` -> `...8`
## • `` -> `...9`
## • `` -> `...10`
## • `` -> `...11`
## • `` -> `...12`
## • `` -> `...13`
## • `` -> `...14`
## • `` -> `...15`

#cambiar nombre

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
data <- data %>%
  rename(Codigo = ...2,
         Provincia = ...3,
         Noelec = ...4,
         Sielec = ...5,
         Total1 = ...6,
         Nogas = ...7,
         SiGas = ...8,
         Total2 = ...9,
         Nocarbon = ...10,
         Sicarbon = ...11,
         Total3 = ...12,
         Noleña = ...13,
         Sileña = ...14,
         Total4 = ...15)
data <- subset(data, select = -Título)
data <- data[6:204, ]
data <- data[1:196, ]
#porcentaje
#porcentaje
data$Sielec <- as.numeric(data$Sielec)
data$Total1 <- as.numeric(data$Total1)
data$Sielec <- (data$Sielec / data$Total1) * 100
data$SiGas <- as.numeric(data$SiGas)
data$Total2 <- as.numeric(data$Total2)
data$SiGas <- (data$SiGas / data$Total2) * 100
data$Sicarbon <- as.numeric(data$Sicarbon)
data$Total3 <- as.numeric(data$Total3)
data$Sicarbon <- (data$Sicarbon / data$Total3) * 100
data$Sileña <- as.numeric(data$Sileña)
data$Total4 <- as.numeric(data$Total4)
data$Sileña <- (data$Sileña / data$Total4) * 100
data <- subset(data, select = -Noelec)
data <- subset(data, select = -Noleña)
data <- subset(data, select = -Nogas)
data <- subset(data, select = -Nocarbon)
data <- subset(data, select = -Total1)
data <- subset(data, select = -Total2)
data <- subset(data, select = -Total3)
data <- subset(data, select = -Total4)
dontselect=c("Codigo","Provincia")
select=setdiff(names(data),dontselect) 
data=data[,select]
library(polycor)
## Warning: package 'polycor' was built under R version 4.3.3
corMatrix=polycor::hetcor(data)$correlations
round(corMatrix,2)
##          Sielec SiGas Sicarbon Sileña
## Sielec     1.00  0.47     0.10  -0.46
## SiGas      0.47  1.00     0.23  -0.87
## Sicarbon   0.10  0.23     1.00  -0.31
## Sileña    -0.46 -0.87    -0.31   1.00

#KMO

library(psych)
## Warning: package 'psych' was built under R version 4.3.3
## 
## Attaching package: 'psych'
## The following object is masked from 'package:polycor':
## 
##     polyserial
psych::KMO(corMatrix) 
## Kaiser-Meyer-Olkin factor adequacy
## Call: psych::KMO(r = corMatrix)
## Overall MSA =  0.63
## MSA for each item = 
##   Sielec    SiGas Sicarbon   Sileña 
##     0.91     0.59     0.72     0.59

#Bartlett

cortest.bartlett(corMatrix,n=nrow(data))$p.value>0.05
## [1] FALSE

#Singular

library(matrixcalc)

is.singular.matrix(corMatrix)
## [1] FALSE

#cumple los requisitos

fa.parallel(data, fa = 'fa',correct = T,plot = F)
## Parallel analysis suggests that the number of factors =  1  and the number of components =  NA

#solo recomienda resumirlo en un factor

library(GPArotation)
## Warning: package 'GPArotation' was built under R version 4.3.3
## 
## Attaching package: 'GPArotation'
## The following objects are masked from 'package:psych':
## 
##     equamax, varimin
resfa <- fa(data,
            nfactors = 1,
            cor = 'mixed',
            rotate = "varimax", #oblimin?
            fm="minres")
print(resfa$loadings)
## 
## Loadings:
##          MR1   
## Sielec    0.491
## SiGas     0.912
## Sicarbon  0.280
## Sileña   -0.956
## 
##                  MR1
## SS loadings    2.065
## Proportion Var 0.516

#Varianza es igual a 0.5 #respuesta: todas son falsas