diff --git a/demo6_2021.R b/demo6_2021.R
new file mode 100644
index 0000000000000000000000000000000000000000..6e9c86d9d08669a4e3a5e07501abbd6161ecad6f
--- /dev/null
+++ b/demo6_2021.R
@@ -0,0 +1,141 @@
+#setwd("D:/R/")    
+
+# 6.harjoitukset: monimuuttujamenetelm?t
+
+library(foreign)
+dat<-read.spss("data_demo6_2019r.sav", to.data.frame=TRUE)
+attach(dat)
+
+# Uusi data, jossa vain hyötymuuttujat 10 kpl
+data_pca <- dat[,2:length(dat)]
+
+# korrelaatiokertoimet
+data.kor2<-cor(data_pca, method = "pearson", use = "complete.obs")
+data.kor2
+
+# korrelaatiokertoimien p-arvot
+install.packages("Hmisc")
+library(Hmisc)
+res2 <- rcorr(as.matrix(data_pca))
+res2
+
+# korrelaatiokertoimet ja p-arvot rinnakkain
+flattenCorrMatrix <- function(cormat, pmat) {
+  ut <- upper.tri(cormat)
+  data.frame(
+    row = rownames(cormat)[row(cormat)[ut]],
+    column = rownames(cormat)[col(cormat)[ut]],
+    cor  =(cormat)[ut],
+    p = pmat[ut]
+  )
+}
+res3<-rcorr(as.matrix(data_pca[,1:10]))
+flattenCorrMatrix(res3$r, res3$P)
+
+# korrelaatioiden voimakkuudet kuviona
+install.packages("corrplot")
+library(corrplot)
+corrplot(data.kor2, type = "upper", order = "hclust", 
+         tl.col = "black", tl.srt = 45)
+
+# Korrelaatiomatriisin sopivuus pääkomponenttianalyysiin
+install.packages ("psych")
+library (psych)
+
+cortest.bartlett(data.kor2, n =53,diag=TRUE)
+KMO(data.kor2)
+
+# pääkomponenttianalyysi
+pca <- prcomp ( data.kor2 , center = T, scale = T)
+pca
+summary(pca)
+
+# ominaisarvot
+(pca$sdev)^2
+
+# Scree plot
+screeplot(pca, type="lines") +
+  abline(h=1, lty=2)
+
+#  Valitaan kolme p??komponenttia, varimax-rotaatio
+pca.chosen <- pca$ rotation [ ,1:3]
+pca.varimax <- varimax (pca.chosen )
+pca.varimax
+
+#  Valitaan kolme p??komponenttia, promax-rotaatio
+pca.chosen <- pca$ rotation [ ,1:3]
+pca.promax <- promax (pca.chosen )
+pca.promax
+
+# Miten p??komponentit selitt?v?t muuttujia
+p<-ncol(data_pca)
+n<-nrow(data_pca)
+e<-eigen(data.kor2) 
+L<-e$values #placing the eigenvalues in L
+Vm<-matrix(0,nrow=p,ncol=p) #creating a p x p matrix with zeroes.
+#Vm is an orthogonal matrix since all correlations between variable are 0.
+diag(Vm)<-L #putting the eigenvalues in the diagonals
+Vm #check-- matrix with eigenvalues on the diagonals
+comp.matrix<-e$vectors %*% sqrt(Vm) #sometimes referred to as P matrix
+#or eigenvectors x sqrt(Vm): P %*% t(P) is equal to the R matrix.
+comp.matrix
+
+#P??komponentti 1 selitt?m? osuus muuttujien vaihtelusta
+
+comp.matrix[,1]^2 
+
+#P??komponentti 2 selitt?m? osuus muuttujien vaihtelusta
+
+comp.matrix[,2]^2
+
+#P??komponentti 3 selitt?m? osuus muuttujien vaihtelusta
+
+comp.matrix[,3]^2
+
+# kommunaliteetit
+
+comp.matrix[,1]^2 +comp.matrix[,2]^2 +comp.matrix[,3]^2 
+
+ 
+
+# p??komponenttien keskin?iset korrelaatiot
+
+library(foreign)
+dat2<-read.spss("data_demo6pc_2019r.sav", to.data.frame=TRUE)
+attach(dat2)
+dat2
+cor.test(apuvalineet,media,method="pearson")
+cor.test(apuvalineet,laheiset,method="pearson")
+cor.test(media,laheiset, method="pearson")
+
+# K-means klusterointi p??komponenttipistem??rill?
+
+dat3 = dat2[,c(12,13,14)]
+
+# 2 klusteria
+
+set.seed(7)
+km2 = kmeans(dat3, 2, nstart=100)
+km2
+
+#3 klusteria
+
+set.seed(7)
+km3 = kmeans(dat3, 3, nstart=100)
+km3
+
+#4 klusteria
+
+set.seed(7)
+km4 = kmeans(dat3, 4, nstart=100)
+km4
+
+#5 klusteria
+
+set.seed(7)
+km5 = kmeans(dat3, 5, nstart=100)
+km5
+
+
+
+