Лабораторна робота №7. Графічні можливості R-статистики
Рекомендується завантажити та встановити R-Studio (можна використати веб-версію)*. В комп'ютерному класі можна використовувати R-статистику або веб-ресурс https://webr.r-wasm.org.
Підготовка
Перед початком роботи в R слід встановити робочу папку (де будуть файли з даними)**:
У провіднику Windows треба скопіювати адресу папки, вставити в R за допомогою функції:
setwd("Шлях")
Змінити зворотні слеші (\) на прямі (/), або на подвійні зворотні слеші (\\). Наприклад (жирним кольором відмічено зміни):
setwd("C:\Documents\student\2kurs")
на
setwd("C:/Documents/student/2kurs") або setwd("C:\\Documents\\student\\2kurs")
Введіть наступні команди (позначені синім кольором) в середовищі R-статистики та проаналізуйте результат. Щоб набрати команду, потрібно її ввести за допомогою клавіатури та натиснути клавішу Enter. Спробуйте виконати завдання. Змінні, що створюються в результаті виконання завдань, можуть використовуватись далі! Збережіть продуктивні команди для подальшого відтворення.Гістограми
Вектор модельних даних:
X=rnorm(n = 100, mean = 15, sd = 5)
Побудова різних типів гістограм на основі наявних даних
hist(X)
hist(X, breaks = 20)
hist(X, breaks = 20, freq = FALSE)
hist(X, breaks = 20, freq = FALSE, col = "lightblue")
Завдання
1. За допомогою довідки (?hist) виясніть роль параметрів break, col.
2. Побудуйте гістограми вар’юючи значення параметрів break (спробуйте значення 10, 30, 50) та col (спробуйте значення "red", "green", "blue").
3. Побудуйте гістограми, використавши в якості значень параметра col вектори c("red","blue"), c("green","red","brown").
4. Згенеруйте новий вектор модельних даних Y=rnorm(15,mean=5,sd=1).
5. Побудуйте різні гістограми на основі вектору Y. Використайте при побудові параметр xlim (спробуйте значення c(0,5), c(0,10), c(3,8).
6. Побудуйте різні гістограми на основі вектору Y. Використайте при побудові параметр breaks= pretty(0:10,n=100)).
Графіки даних
Вектори модельних даних:
x=seq(1,9)
y=c(2,3,5,7,8,12,14,15,13)
Побудова різних типів графіків на основі наявних даних
plot(x,y)
plot(x,y,type="l")
plot(x,y,type="b",col="red")
plot(x,y,type="b",col="green",lwd=2)
plot(x,y,type="p",col="green",lwd=2,cex=0.5)
plot(x,y,col=c("green","red"),lwd=2,cex=1.5,pch="k")
plot(x,y,col=c("green","red"),lwd=2,cex=1.2,pch=c("s","p"))
Завдання
1. За допомогою довідки (?plot) виясніть роль різних параметрів.
2. Побудуйте графіки використовуючи різні значення параметру type (можливі значення виясніть за допомогою довідки ?plot).
3. Побудуйте графіки використовуючи різні значення параметру lwd.
4. Побудуйте графіки використавши в якості значень параметра col вектори c("red","blue"), c("green","red","brown").
5. Побудуйте графіки вар’юючи значення параметрів cex (змінюючи значення) і pch (використовуючи різні літери, а також вектори символів).
Побудова графіків функцій
plot(x,sin(x))
plot(x,sin(x),type="l")
plot(x,cos(x),type="o",col="red")
plot(x,log(x),type="o",col="red",lwd=3)
z=sin(x)+cos(x)
plot(x,z,type="o",col="blue",lwd=2,pch=19)
plot(x,z,type="o",ylim=c(-3,3),col="green",lwd=2,pch=19)
Завдання
1. Побудуйте графіки функцій log10(x), exp(x), використовуючи різні значення параметру type (можливі значення виясніть за допомогую довідки ?plot).
2. Побудуйте синій графік функції t=2*sin(x)+5 у вигляді лінії товщиною 2 пункти.
3. Побудуйте жовтий графік функції u=x^2-4 у вигляді лінії товщиною 3 пункти, у якості точок виористайте символ з кодом 25.
Побудова графіків функцій з допомогою функції curve
curve(x^2)
curve(x^2,-5,5)
curve(x^3,-5,5,type="p")
v=x^5
curve(v,-5,5,type="p")
t=function(x) x^4
curve(t,-5,5,type="p")
curve(t,-5,5,type="p",n=20)
curve(t,-5,5,type="p",n=10,col="orange")
curve(10*x^2,-5,5,col="blue",add=TRUE)
Завдання
1. Який висновок можна зробити на основі використання в якості аргументів функції змінних v і t?
2. Побудуйте графік функції x^2-x у вигляді червоної лінії.
3. Побудуйте графік функції 5*x^2-x у вигляді зеленої лінії.товщиною 2 пункти в діапазоні значень від -3 до 3.
4. Виясніть, яку роль відіграє параметр add.
5. Побудуйте на одній діаграмі різнокольорові графіки функцій x^2, 2*x^2, 3*x^2 в діапазоні значень від -4 до 4.
Порівняльні діаграми
Вектори модельних даних:
t=c(2,4,5,3)
u=matrix(1:16,nrow=4)
Побудова стовпчикових діаграм
boxplot(t)
barplot(t,density=10)
barplot(t,density=c(10,20,30,40))
barplot(t,density=5*t)
barplot(t,col=1:4)
barplot(u)
barplot(u,density=6*u)
barplot(u,col=u)
Побудова сендвічевих діаграм
barplot(t,col=1:4,horiz=TRUE)
barplot(u,density=6*u,horiz=TRUE)
Завдання
1. Побудуйте стовпикову діаграму для змінної y, вар’юючи параметри density, col.
2. Побудуйте сендвічеву діаграму для змінної z, вар'юючи параметри width, col, використовуючи вектори значень.
Кругова діаграма
Вектори модельних даних:
v=c(2,4,5,3,7,9)
Побудова кругових діаграм
pie(v)
pie(v,edges=10)
pie(v,edges=20,col=rainbow(6))
Завдання
1. Побудуйте кругову діаграму для змінної y, вар’юючи параметри edges, col.
Візуалізація даних
Нижче наведено приклади візуалізації даних. Їх необхідно відтворити на своєму комп'ютері. Для цього, при необхідності, файли з даними завантажуються в робочу папку, наведений код потрібно виділити, скопіювати в середовище R-статистики, натиснути клавішу Enter.
Проаналізуйте роботу програми й виконайте завдання.
Сендвічева діаграма
# Horizontal Bar Plot for
# Ozone concentration in air
barplot(airquality$Ozone,
main = 'Ozone Concenteration in air',
xlab = 'ozone levels', horiz = TRUE)
Стовпчикова діаграма
# Vertical Bar Plot for
# Ozone concentration in air
barplot(airquality$Ozone, main = 'Ozone Concenteration in air',
xlab = 'ozone levels', col ='blue', horiz = FALSE)
Завдання
Перегляньте структуру набору даних airquality:str(airquality)
Гістограма
# Histogram for Maximum Daily Temperature
data(airquality)
hist(airquality$Temp, main ="La Guardia Airport's\
Maximum Temperature(Daily)",
xlab ="Temperature(Fahrenheit)",
xlim = c(50, 125), col ="yellow",
freq = TRUE)
Діаграма розмаху
# Multiple Box plots, each representing
# an Air Quality Parameter
boxplot(airquality[, 0:4],
main ='Box Plots for Air Quality Parameters')
Лінійний графік
plot(AirPassengers,type="l") #Simple Line Plot
Стогова діаграма
barplot(table(iris$Species,iris$Sepal.Length),col = rainbow(3)) #Stacked Plot
Завдання
Змініть мишкою розміри діаграми. Зверніть увагу на зміни.Мозаїчна діаграма
data(HairEyeColor)
mosaicplot(HairEyeColor)
Теплова карта
heatmap(as.matrix(mtcars))
data(volcano)
heatmap(volcano)
Для подальшої роботи необхідно буде використати додатковий пакет ggplot2. Встановіть його та завантажте:
install.packages("ggplot2")
library(ggplot2)
url <- "https://tinyurl.com/mtktm8e5"
insurance <- read.csv(url)
Дослідіть структуру даних.
Точкова діаграма
# add points
ggplot(data = insurance,
mapping = aes(x = age, y = expenses)) +
geom_point()
# make points blue, larger, and semi-transparent
ggplot(data = insurance,
mapping = aes(x = age, y = expenses)) +
geom_point(color = "cornflowerblue",
alpha = .7,
size = 2)
Завдання
Зробіть на діаграмі точки червоного кольору.Точкова діаграма, де колір вказує на категорію:
# indicate sex using color
ggplot(data = insurance,
mapping = aes(x = age,
y = expenses,
color = smoker)) +
geom_point(alpha = .5,
size = 2) +
geom_smooth(method = "lm",
se = FALSE,
size = 1.5)
Кругова діаграма
data("chickwts")
# main is used to create
# an heading for the chart
d = table(chickwts$feed)
pie(d[order(d, decreasing=TRUE)],
clockwise=TRUE,
main="Pie Chart of feeds from chichwits", )
Завдання
На основі цих даних (chickwts) побудуйте діаграму розмаху та стовпчикову діаграму.
3D-графік
# To illustrate simple right circular cone
cone <- function(x, y){
sqrt(x ^ 2 + y ^ 2)
}
# prepare variables.
x <- y <- seq(-1, 1, length = 30)
z <- outer(x, y, cone)
# plot the 3D surface
persp(x, y, z)
3D-діаграма
Встановити додатковий пакет rgl:
install.packages("rgl")
Побудувати 3D-діаграму:
# library
library(rgl)
# This is to output a rgl plot in a rmarkdown document.
# setupKnitr()
# Data: the iris data is provided by R
data <- iris
# Add a new column with color
mycolors <- c('royalblue1', 'darkcyan', 'oldlace')
data$color <- mycolors[ as.numeric(data$Species) ]
# Plot
plot3d(
x=data$`Sepal.Length`, y=data$`Sepal.Width`, z=data$`Petal.Length`,
col = data$color,
type = 's',
radius = .1,
xlab="Sepal Length", ylab="Sepal Width", zlab="Petal Length")
3D-поверхня
# Visualizing a simple DEM model
z <- 2 * volcano # Exaggerate the relief
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N)
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W)
# Don't draw the grid lines : border = NA
par(bg = "gray")
persp(x, y, z, theta = 135, phi = 30,
col = "brown", scale = FALSE,
ltheta = -120, shade = 0.75,
border = NA, box = FALSE)
Завдання
Джерела інформації
1. https://www.geeksforgeeks.org/data-visualization-in-r/?ref=shm2. https://rkabacoff.github.io/datavis/IntroGGPLOT.html#a-worked-example
*Всі ці завдання можна зробити безпосередньо в R-статистиці