Skip to content

Commit 09453c5

Browse files
committed
Update files
1 parent c1abe6d commit 09453c5

24 files changed

+2538
-0
lines changed

LSED_Lab_1.R

+220
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,220 @@
1+
rm(list=ls())
2+
3+
library(MASS)
4+
5+
# --- CZESC TRZECIA LABORATORIUM NR 1 ---
6+
rm(list=ls())
7+
8+
# Przypisanie wartości
9+
X1 <- data.frame(x = c(2,2,2,1,3), y = c(2,1,3,2,2))
10+
X2 <- data.frame(x = c(6,6,6,5,7), y = c(0,1,-1,0,0))
11+
12+
# Wyznaczenie wartości średnich
13+
m1 <- apply(X1, 2, mean)
14+
m2 <- apply(X2, 2, mean)
15+
16+
# Wyznaczenie macierzy kowariancji
17+
S1 <- cov(X1)
18+
S2 <- cov(X2)
19+
20+
# Liczba elementów klas 1 i 2 oraz całkowita liczba
21+
n1 <- nrow(X1)
22+
n2 <- nrow(X2)
23+
n <- n1 + n2
24+
25+
# Wyznaczenie macierzy zmienności wewnątrzgrupowej W
26+
W <- ((n1 - 1) * S1 + (n2 - 1) * S2)/(n - 2)
27+
28+
# Wyznaczenie wektora a
29+
a <- ginv(W) %*% (m2 - m1)
30+
31+
# Nanoszenie punktow na wykres
32+
plot(X1, xlim = c(-2,7), ylim = c(-2,4), pch = 21, col = "#AAAAAA", bg = "#EEEEEE", cex = 3, xlab = "X", ylab = "Y", font = 2, asp = 1)
33+
abline(v = 0, h = 0, col = "gray")
34+
points(X2, pch = 21, col = "#AAAAAA", cex = 3, bg = "#EEEEEE")
35+
text(X1, "1", col = "blue", font = 2)
36+
text(X2, "2", col = "orange", font = 2)
37+
38+
# Rysowanie prostych rozdzielajacych
39+
b <- 0.5 * t(a) %*% (m1 + m2)
40+
abline(0, a[2] / a[1], col = "red", lty = 2)
41+
abline(b / a[2], -a[1] / a[2], col = "red", lwd = 2)
42+
43+
44+
# --- CZESC DRUGA LABORATORIUM NR 1 ---
45+
rm(list=ls())
46+
47+
S <- matrix(c(1,0,0,1),2,2)
48+
mt1 <- c(2,2)
49+
mt2 <- c(6,0)
50+
n1 <- 60
51+
n2 <- 60
52+
n <- n1 + n2
53+
54+
X1 <- mvrnorm(n1, mt1, S)
55+
X2 <- mvrnorm(n2, mt2, S)
56+
57+
m1 <- apply(X1, 2, mean)
58+
m2 <- apply(X2, 2, mean)
59+
60+
# Wyznaczenie macierzy kowariancji
61+
S1 <- cov(X1)
62+
S2 <- cov(X2)
63+
64+
# Liczba elementów klas 1 i 2 oraz całkowita liczba
65+
n1 <- nrow(X1)
66+
n2 <- nrow(X2)
67+
n <- n1 + n2
68+
69+
# Wyznaczenie macierzy zmienności wewnątrzgrupowej W
70+
W <- ((n1 - 1) * S1 + (n2 - 1) * S2)/(n - 2)
71+
72+
# Wyznaczenie wektora a
73+
a <- ginv(W) %*% (m2 - m1)
74+
75+
plot(X1, ylim = c(-5,5), xlim = c(-2,10), pch = 19, col = "blue", xlab = "X", ylab = "Y", font = 2, asp = 1)
76+
abline(v = 0, h = 0, col = "gray")
77+
points(X2, pch = 19, col = "orange")
78+
79+
# Rysowanie prostych rozdzielajacych
80+
b <- 0.5 * t(a) %*% (m1 + m2)
81+
abline(0, a[2] / a[1], col = "red", lty = 2)
82+
abline(b / a[2], -a[1] / a[2], col = "red", lwd = 2)
83+
84+
85+
# --- CZESC TRZECIA LABORATORIUM NR 1 ---
86+
rm(list=ls())
87+
library(scatterplot3d)
88+
89+
X1 <- data.frame(x = c(2, 2, 2, 1, 3, 2, 2), y = c(2, 1, 3, 2, 2, 2, 2), z = c(2, 2, 2, 2, 2, 1, 3))
90+
X2 <- data.frame(x = c(4, 4, 4, 3, 5, 4, 4), y = c(4, 3, 5, 4, 4, 4, 4), z = c(4, 4, 4, 4, 4, 3, 5))
91+
92+
# Wyznaczenie wartości średnich
93+
m1 <- apply(X1, 2, mean)
94+
m2 <- apply(X2, 2, mean)
95+
96+
# Wyznaczenie macierzy kowariancji
97+
S1 <- cov(X1)
98+
S2 <- cov(X2)
99+
100+
# Liczba elementów klas 1 i 2 oraz ich całkowitej liczba
101+
n1 <- nrow(X1)
102+
n2 <- nrow(X2)
103+
n <- n1 + n2
104+
105+
# Wyznaczenie macierzy zmienności wewnątrzgrupowej W
106+
W <- ((n1 - 1) * S1 + (n2 - 1) * S2)/(n - 2)
107+
108+
# Wyznaczenie wektora a
109+
a <- ginv(W) %*% (m2 - m1)
110+
111+
# Wyznaczanie wyrazu wolnego
112+
b <- -0.5 * t(a) %*% (m1 + m2)
113+
114+
# Rysowanie punktów klasy 1
115+
s3d <- scatterplot3d(X1, pch = 21, color = "#AAAAAA", bg = "#EEEEEE", cex.symbols = 3, xlim = c(0, 5), ylim = c(0, 5), zlim = c(0, 5), angle = 123)
116+
117+
# Rzutowanie współrzędnych punktów z 3D na 2D
118+
X1.coords <- s3d$xyz.convert(X1)
119+
X2.coords <- s3d$xyz.convert(X2)
120+
121+
# Tekst dla punktów klasy 1
122+
text(X1.coords, "1", col = "blue", font = 2)
123+
124+
# Kreslenie hiperplaszczyzny
125+
s3d$plane3d(-b / a[3], -a[1] / a[3], -a[2] / a[3], draw_lines = F, draw_polygon = T, polygon_args = list(col = rgb(1, 1, 0, 0.4)))
126+
127+
# Rysowanie punktów klasy 2
128+
s3d$points3d(X2, pch = 21, col = "#AAAAAA", bg = "#EEEEEE", cex = 3)
129+
130+
# Tekst dla punktów klasy 2
131+
text(X2.coords, "2", col = "orange", font = 2)
132+
133+
# --- CZESC CZWARTA LABORATORIUM NR 1 ---
134+
rm(list=ls())
135+
136+
# Przypisanie wartosci do klas
137+
X1 <- data.frame(x = c(1, 2, 2, 2, 3), y = c(2, 3, 2, 1, 2))
138+
X2 <- data.frame(x = c(3, 4, 4, 4, 5), y = c(4, 5, 4, 3, 4))
139+
X3 <- data.frame(x = c(4, 5, 5, 5, 6), y = c(6, 7, 6, 5, 6))
140+
X4 <- data.frame(x = c(8, 9, 9, 9, 10), y = c(8, 9, 8, 7, 8))
141+
X5 <- data.frame(x = c(9, 10, 10, 10, 11), y = c(10, 11, 10, 9, 10))
142+
143+
# Nanoszenie punktow na wykres
144+
plot(X1, xlim = c(0,12), ylim = c(0,12), pch = 21, col = "#AAAAAA", bg = "#EEEEEE", cex = 3, xlab = "X", ylab = "Y", font = 2, asp = 1)
145+
abline(v = 0, h = 0, col = "gray")
146+
points(X2, pch = 21, col = "#AAAAAA", cex = 3, bg = "#EEEEEE")
147+
points(X3, pch = 21, col = "#AAAAAA", cex = 3, bg = "#EEEEEE")
148+
points(X4, pch = 21, col = "#AAAAAA", cex = 3, bg = "#EEEEEE")
149+
points(X5, pch = 21, col = "#AAAAAA", cex = 3, bg = "#EEEEEE")
150+
151+
text(X1, "1", col = "blue", font = 2)
152+
text(X2, "2", col = "red", font = 2)
153+
text(X3, "3", col = "darkgreen", font = 2)
154+
text(X4, "4", col = "black", font = 2)
155+
text(X5, "5", col = "orange", font = 2)
156+
157+
# Wyznaczanie srednich w klasach
158+
m1 <- apply(X1, 2, mean)
159+
m2 <- apply(X2, 2, mean)
160+
m3 <- apply(X3, 2, mean)
161+
m4 <- apply(X4, 2, mean)
162+
m5 <- apply(X5, 2, mean)
163+
164+
# Wyznaczanie macierzy kowariancji
165+
S1 <- cov(X1)
166+
S2 <- cov(X2)
167+
S3 <- cov(X3)
168+
S4 <- cov(X4)
169+
S5 <- cov(X5)
170+
171+
# Liczności klas
172+
n1 <- nrow(X1)
173+
n2 <- nrow(X2)
174+
n3 <- nrow(X3)
175+
n4 <- nrow(X4)
176+
n5 <- nrow(X5)
177+
178+
# Ogólna liczność oraz liczba klas
179+
n <- n1 + n2 + n3 + n4 + n5
180+
g <- 5
181+
182+
# Średnia dla wszystkich punktów
183+
m <- apply(rbind(X1, X2, X3, X4, X5), 2, mean)
184+
185+
# Macierz zmienności międzygrupowej
186+
B <- (n1*(m1 - m) %*% t(m1 - m) + n2*(m2 - m) %*% t(m2 - m) + n3*(m3 - m) %*% t(m3 - m) + n4*(m4 - m) %*% t(m4 - m) + n5*(m5 - m) %*% t(m5 - m))/(g-1)
187+
188+
# Macierz zmienności wewnątrzgrupowej
189+
W <- 1/(n - g)*((n1 - 1) * S1 + (n2 - 1) * S2 + (n3 - 1) * S3 + (n4 - 1) * S4 + (n5 - 1) * S5)
190+
191+
# Macierz pomocnicza
192+
U <- ginv(W) %*% B
193+
194+
# Wyznaczenia wartosci i wektorow własnych
195+
lambda <- eigen(U)
196+
197+
# Wektor własny odpowiadający maksymalnej wartości własnej
198+
a <- lambda$vectors[,which.max(lambda$values)]
199+
200+
# Rysowanie kierunku a
201+
abline(0, a[2] / a[1], col = "violet", lwd = 2)
202+
203+
# Funkcja do rzutowania obserwacji na kierunek a
204+
rzutowanie <- function(X, A) {
205+
Xz <- (X$y * A + X$x) / (A**2 + 1)
206+
Yz <- A * Xz
207+
data.frame(x = Xz, y = Yz)
208+
}
209+
210+
# Wyznaczenie współczynnika kierunkowego prostej
211+
A <- a[2] / a[1]
212+
213+
# Wykreślanie zrzutowanych punktów
214+
points(rzutowanie(X1, A), col = "blue", pch = 19, cex = 1.5)
215+
points(rzutowanie(X2, A), col = "red", pch = 19, cex = 1.5)
216+
points(rzutowanie(X3, A), col = "darkgreen", pch = 19, cex = 1.5)
217+
points(rzutowanie(X4, A), col = "black", pch = 19, cex = 1.5)
218+
points(rzutowanie(X5, A), col = "orange", pch = 19, cex = 1.5)
219+
220+
rm(list=ls())

LSED_Lab_1__Zadanie_0.R

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
# Zadanie 0 - Lab nr 1
2+
3+
rm(list=ls())
4+
library(MASS)
5+
6+
S <- matrix(c(1,0,0,1),2,2)
7+
mt1 <- c(-1,1)
8+
mt2 <- c(2,4)
9+
mt3 <- c(-2,2)
10+
11+
n1 <- 30
12+
n2 <- 30
13+
n3 <- 30
14+
n <- n1 + n2 + n3
15+
n
16+
17+
X1 <- data.frame(mvrnorm(n1, mt1, S))
18+
X2 <- data.frame(mvrnorm(n2, mt2, S))
19+
X3 <- data.frame(mvrnorm(n3, mt3, S))
20+
21+
m1 <- apply(X1, 2, mean)
22+
m2 <- apply(X2, 2, mean)
23+
m3 <- apply(X3, 2, mean)
24+
25+
# Wyznaczenie macierzy kowariancji
26+
S1 <- cov(X1)
27+
S2 <- cov(X2)
28+
S3 <- cov(X3)
29+
30+
# Liczba elementów klas 1 i 2 oraz całkowita liczba
31+
n1 <- nrow(X1)
32+
n2 <- nrow(X2)
33+
n3 <- nrow(X3)
34+
35+
n <- n1 + n2 + n3
36+
37+
g <- 3
38+
39+
nazwy <- c("X1", "X2", "X3")
40+
col=c("blue","red","green")
41+
42+
#png("Zadanie-0-Lab1-SB.png")
43+
44+
plot(X1, ylim = c(-2,6), xlim = c(-4,5), pch = 19, col = "blue", xlab = "X", ylab = "Y", font = 2, asp = 1)
45+
abline(v = 0, h = 0, col = "gray")
46+
points(X2, pch = 19, col = "red")
47+
points(X3, pch = 19, col = "green")
48+
49+
legend("topleft", legend=c("X 1", "X 2", "X 3","Zrzutowane X 1","Zrzutowane X 2","Zrzutowane X 3"), col=c("blue","red", "green","lightblue","darkorange","darkgreen"), lty=1:2, cex=0.8)
50+
51+
# Średnia dla wszystkich punktów
52+
m <- apply(rbind(X1, X2, X3), 2, mean)
53+
54+
# Macierz zmienności międzygrupowej
55+
B <- (n1*(m1 - m) %*% t(m1 - m) + n2*(m2 - m) %*% t(m2 - m) + n3*(m3 - m) %*% t(m3 - m))/(g-1)
56+
57+
# Macierz zmienności wewnątrzgrupowej
58+
W <- 1/(n - g)*((n1 - 1) * S1 + (n2 - 1) * S2 + (n3 - 1) * S3)
59+
60+
# Macierz pomocnicza
61+
U <- ginv(W) %*% B
62+
63+
# Wyznaczenia wartosci i wektorow własnych
64+
lambda <- eigen(U)
65+
66+
# Wektor własny odpowiadający maksymalnej wartości własnej
67+
a <- lambda$vectors[,which.max(lambda$values)]
68+
69+
# Rysowanie kierunku a
70+
abline(0, a[2] / a[1], col = "violet", lwd = 2)
71+
72+
# Wyznaczenie współczynnika kierunkowego prostej
73+
A <- a[2] / a[1]
74+
75+
# Funkcja do rzutowania obserwacji na kierunek a
76+
rzutowanie <- function(X, A) {
77+
Xz <- (X$X2 * A + X$X1) / (A**2 + 1)
78+
Yz <- A * Xz
79+
data.frame(x = Xz, y = Yz)
80+
}
81+
82+
# Wykreślanie zrzutowanych punktów
83+
points(rzutowanie(X1, A), col = "lightblue", pch = 19, cex = 0.7)
84+
points(rzutowanie(X2, A), col = "darkorange", pch = 19, cex = 0.7)
85+
points(rzutowanie(X3, A), col = "darkgreen", pch = 19, cex = 0.7)
86+
#dev.off()
87+
88+
# rm(list=ls())

0 commit comments

Comments
 (0)