Analisis Statistik Deskriptif untuk Dataset Pertanian: Fokus pada Central Tendency dan Dispersi
Group 6 - Agriculture Dataset
Pendahuluan
Dalam era modern berbasis data, analisis statistik berperan penting dalam memahami fenomena di berbagai bidang, termasuk sektor pertanian. Data yang digunakan pada penelitian ini berasal dari Midterm Exam.csv, yang berisi Agriculture Dataset mengenai aktivitas dan hasil pertanian.
Dataset ini mencakup variabel seperti jenis tanaman, luas lahan, jumlah hasil panen, penggunaan pupuk, curah hujan, dan produktivitas pertanian. Melalui metode Central Tendency Analysis dan ukuran dispersi, penelitian ini bertujuan menggambarkan kecenderungan utama serta variasi data yang ada.
Hasil analisis diharapkan mampu memberikan gambaran umum mengenai tingkat produktivitas rata-rata, pola distribusi hasil panen, dan sebaran performa pertanian secara keseluruhan, sehingga dapat menjadi dasar dalam pengambilan keputusan dan peningkatan efisiensi sektor pertanian.
Rumusan Masalah
- Bagaimanakah distribusi dan kecenderungan umum yang terdapat pada Agriculture Dataset berdasarkan hasil analisis statistik?
- Bagaimanakah hasil perhitungan ukuran tendensi sentral terhadap data pertanian tersebut?
- Apa makna yang dapat diinterpretasikan dari hasil analisis ukuran tendensi sentral dalam memahami kondisi sektor pertanian?
Tujuan Analisis
- Untuk mendeskripsikan data pertanian secara statistik berdasarkan Agriculture Dataset.
- Untuk menentukan dan menganalisis ukuran tendensi sentral dari data pertanian.
- Untuk menafsirkan hasil analisis tersebut guna memahami pola umum dan karakteristik sektor pertanian secara menyeluruh.
1. Persiapan Data
# Persiapan Data: Bersihkan, Proses, and Tampilkan tabel interaktif
library(readxl)
library(dplyr)
library(reactable)
library(htmltools)
# 1. Mengimpor dataset
data_raw <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# 2. Bersihkan dan mempersiapkan data
data_clean <- data_raw %>%
rename_with(~ gsub("\\s+", "_", .x)) %>%
mutate(across(where(is.character), trimws)) %>%
mutate(
)
# 3. Buat tabel interaktif dengan dropdown + animated pagination
htmltools::browsable(
htmltools::tagList(
# Control dropdown untuk jumlah data yang ditampilkan per halaman
tags$div(
style = "display:flex; align-items:center; gap:6px; margin-bottom:10px; font-size:14px;",
tags$span("Showing"),
tags$select(
id = "pageSizeSelect",
style = "padding:3px 6px; border-radius:4px; border:1px solid #ccc; font-size:14px;",
tags$option(value = 10, "10"),
tags$option(value = 25, "25"),
tags$option(value = 50, "50"),
tags$option(value = 100, "100")
),
tags$span("entries")
),
# Reactable table
reactable(
data_clean,
elementId = "myTable",
searchable = TRUE,
bordered = TRUE,
striped = TRUE,
highlight = TRUE,
resizable = TRUE,
defaultPageSize = 10,
wrap = FALSE,
fullWidth = TRUE,
defaultColDef = colDef(align = "center"),
theme = reactableTheme(
headerStyle = list(
background = "#f7f7f7",
fontWeight = "bold",
borderBottom = "2px solid #ddd"
),
# Pagination area (clear background)
paginationStyle = list(
background = "transparent",
borderTop = "1px solid #ddd",
padding = "8px 0"
),
# Pagination buttons with animation
pageButtonStyle = list(
background = "#ffffff",
border = "1px solid #90CAF9",
color = "#0D47A1",
borderRadius = "6px",
padding = "4px 10px",
margin = "0 3px",
transition = "all 0.2s ease-in-out",
boxShadow = "0 1px 3px rgba(0,0,0,0.1)",
fontWeight = "500"
),
pageButtonHoverStyle = list(
background = "#E3F2FD",
border = "1px solid #42A5F5",
transform = "scale(1.05)"
),
pageButtonActiveStyle = list(
background = "#1E88E5",
color = "white",
transform = "scale(1.05)"
)
)
),
# Menggunakan JavaScript untuk mengubah jumlah data yang ditampilkan secara dinamis
tags$script(HTML("
document.getElementById('pageSizeSelect').addEventListener('change', function() {
const newSize = parseInt(this.value);
const tbl = window.reactable.getInstance('myTable');
if (tbl) tbl.setPageSize(newSize);
});
"))
)
)2. Deskripsi Dataset
Produktivitas pertanian dipengaruhi oleh berbagai faktor lingkungan, manajerial, dan sumber daya. Keputusan petani mengenai jenis tanaman, metode irigasi, penggunaan pupuk, dan jumlah benih, yang dikombinasikan dengan karakteristik regional seperti iklim dan kondisi tanah, menentukan hasil panen. Memahami faktor-faktor ini membantu perencana pertanian, agronom, dan pembuat kebijakan dalam meningkatkan efisiensi pertanian serta alokasi sumber daya.
Dataset ini mencakup variabel kategorikal seperti wilayah, jenis tanaman, metode irigasi, dan jenis pupuk, bersama dengan variabel numerik termasuk luas lahan, jumlah benih, jumlah pupuk, curah hujan, suhu, dan pengalaman petani. Variabel targetnya adalah hasil panen (crop yield), yang diukur dalam ton per hektar.
Dengan menerapkan statistik deskriptif, analis dapat merangkum karakteristik umum pertanian menggunakan ukuran pemusatan data (mean, median, mode) dan menilai keragaman data menggunakan ukuran penyebaran (range, variance, standard deviation, interquartile range). Teknik visualisasi data—seperti histogram, boxplot, dan bar chart—memungkinkan eksplorasi pola, distribusi, dan pencilan secara jelas, sehingga memberikan wawasan yang dapat diterapkan untuk meningkatkan praktik pertanian dan memaksimalkan hasil panen.
library(reactable)
library(htmltools)
# Data klasifikasi
klasifikasi_data <- data.frame(
Kolom = c(
"Region", "CropType", "Irrigation", "FertilizerType",
"FarmSize", "SeedAmount", "FertilizerAmount",
"Rainfall", "Temperature", "FarmerExperience", "CropYield"
),
Jenis_Data = c(
"Nominal", "Nominal", "Nominal", "Nominal",
"Kontinu", "Kontinu", "Kontinu",
"Kontinu", "Kontinu", "Diskrit", "Kontinu"
),
Tipe = c(
"Categorical", "Categorical", "Categorical", "Categorical",
"Numerical", "Numerical", "Numerical",
"Numerical", "Numerical", "Numerical", "Numerical"
)
)
# Tabel interaktif pastel full (tanpa pagination)
htmltools::browsable(
reactable(
klasifikasi_data,
searchable = FALSE,
bordered = TRUE,
striped = TRUE,
highlight = TRUE,
resizable = FALSE,
wrap = FALSE,
defaultPageSize = 11, # semua baris langsung tampil
pagination = FALSE, # matiin pagination
fullWidth = TRUE,
defaultColDef = colDef(align = "center"),
theme = reactableTheme(
headerStyle = list(
background = "#F6EAF7", # pastel lilac-pink
color = "#333333",
fontWeight = "bold",
borderBottom = "2px solid #E0CFF2"
),
stripedColor = "#FBF5FC", # light pastel stripe
cellPadding = "8px 12px",
borderColor = "#E0CFF2"
)
)
)3. Visualisasi
3.1 Bar Chart
library(ggplot2)
library(dplyr)
library(plotly)
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
pastel_colors <- c("#B5EAD7", "#FFDAC1", "#C7CEEA", "#E2F0CB", "#FFB7B2")
avg_yield <- data %>%
group_by(Region) %>%
summarise(Average_CropYield = mean(CropYield, na.rm = TRUE))
p1 <- ggplot(data, aes(x = CropType, fill = CropType)) +
geom_bar(alpha = 0.9) +
scale_fill_manual(values = pastel_colors) +
labs(
title = "Distribusi Jenis Tanaman (CropType)",
x = "Jenis Tanaman",
y = "Jumlah Petani"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
axis.text.x = element_text(angle = 15, hjust = 1),
legend.position = "none"
)
ggplotly(p1)Interpretasi:
Distribusi jenis tanaman tampak relatif seimbang antara Corn, Rice, Soybean, dan Wheat, tanpa perbedaan mencolok pada jumlah petani di tiap jenis tanaman.
Setiap jenis tanaman memiliki jumlah petani yang hampir sama, menunjukkan bahwa tidak ada dominasi yang signifikan dari satu jenis tanaman tertentu.
Hal ini menandakan persebaran minat atau fokus petani terhadap berbagai jenis tanaman cukup merata.
Kesimpulan: Distribusi jenis tanaman (CropType) menunjukkan keseimbangan dalam jumlah petani yang menanam tiap jenis. Tidak ada jenis tanaman yang terlalu dominan, sehingga bisa dikatakan setiap jenis mendapat perhatian yang hampir sama dari para petani.
3.2 Histogram
library(ggplot2)
library(plotly)
library(dplyr)
# Load data
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Warna pastel lembut
pastel_colors <- c("#B5EAD7", "#FFDAC1", "#C7CEEA", "#E2F0CB", "#FFB7B2")
# Plot histogram untuk CropYield
p2 <- ggplot(data, aes(x = CropYield)) +
geom_histogram(fill = "#B5EAD7", color = "white", bins = 20, alpha = 0.9) +
labs(
title = "Sebaran Hasil Panen (CropYield)",
x = "Hasil Panen (ton/ha)",
y = "Frekuensi"
) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))
ggplotly(p2)Interpretasi:
Sebaran hasil panen (CropYield) tampak membentuk pola menyerupai distribusi normal, dengan sebagian besar nilai berada di sekitar 18–20 ton/ha.
Frekuensi hasil panen rendah (< 12 ton/ha) maupun sangat tinggi (> 25 ton/ha) relatif sedikit, menunjukkan bahwa nilai ekstrem jarang terjadi.
Sebaran data terlihat simetris, menandakan tidak adanya perbedaan besar antara hasil panen rendah dan tinggi.
Kesimpulan: Distribusi hasil panen tergolong normal, dengan mayoritas petani menghasilkan panen di kisaran 18–20 ton/ha. Hal ini menunjukkan bahwa produktivitas lahan relatif stabil dan tidak banyak terjadi hasil panen yang terlalu rendah maupun terlalu tinggi.
3.3 Boxplot
library(ggplot2)
library(plotly)
library(dplyr)
# Load data
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Warna pastel lembut
pastel_colors <- c("#B5EAD7", "#FFDAC1", "#C7CEEA", "#E2F0CB", "#FFB7B2")
# Buat boxplot
p3 <- ggplot(data, aes(x = Region, y = CropYield, fill = Region)) +
geom_boxplot(color = "white", alpha = 0.8) +
scale_fill_manual(values = pastel_colors) +
labs(
title = "Sebaran Hasil Panen (CropYield) Berdasarkan Wilayah",
x = "Wilayah",
y = "Hasil Panen (ton/ha)"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
axis.text.x = element_text(angle = 15, hjust = 1),
legend.position = "none"
)
ggplotly(p3)Interpretasi:
Sebaran hasil panen (CropYield) antar wilayah relatif mirip, dengan median hasil panen berada di kisaran 18–20 ton/ha.
Setiap wilayah memiliki beberapa nilai ekstrem (outlier), baik yang lebih rendah dari 10 ton/ha maupun lebih tinggi dari 25 ton/ha.
Rentang interkuartil antarwilayah hampir sama, menunjukkan bahwa variasi hasil panen tidak terlalu berbeda di antara wilayah East, North, South, dan West.
Kesimpulan: Perbedaan hasil panen antarwilayah tidak terlalu signifikan. Produktivitas pertanian cenderung merata di seluruh wilayah, meskipun terdapat beberapa kasus hasil panen yang sangat rendah atau sangat tinggi di setiap wilayah.
3.4 Pie Chart
library(dplyr)
library(plotly)
# Load data
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Hitung total CropYield per Region
region_yield <- data %>%
group_by(Region) %>%
summarise(total_yield = sum(CropYield, na.rm = TRUE)) %>%
mutate(percentage = round(total_yield / sum(total_yield) * 100, 1))
# Donut Chart interaktif warna pastel lembut tanpa legend
plot_ly(
data = region_yield,
labels = ~Region,
values = ~total_yield,
type = "pie",
textinfo = "label+percent",
insidetextorientation = "radial",
marker = list(
colors = c(
"#FFD6EC", # pastel pink
"#BEE3DB", # mint pastel
"#FFF5BA", # pastel yellow
"#C8E7FF", # baby blue
"#E7C6FF" # lavender pastel
)
),
hole = 0.6
) %>%
layout(
title = list(
text = "<b>Proporsi Total Hasil Panen per Wilayah</b>",
x = 0.5,
y = 1.18,
font = list(size = 22, family = "Arial", color = "#444444")
),
margin = list(t = 120),
showlegend = FALSE
)Interpretasi:
Proporsi total hasil panen di setiap wilayah relatif seimbang.
Wilayah South menyumbang hasil panen terbesar (25,9%), diikuti oleh West (25,2%), East (24,9%), dan North (24%).
Perbedaan antarwilayah sangat kecil, menandakan bahwa produktivitas pertanian tersebar cukup merata di seluruh wilayah.
Kesimpulan: Tidak ada dominasi yang signifikan dari satu wilayah terhadap total hasil panen keseluruhan. Distribusi hasil panen menunjukkan pemerataan sumber daya dan kondisi lahan yang relatif serupa di tiap wilayah.
3.5 Line Plot
library(dplyr)
library(plotly)
# Load data
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Hitung rata-rata hasil panen berdasarkan pengalaman petani
exp_avg <- data %>%
group_by(FarmerExperience) %>%
summarise(AverageYield = mean(CropYield, na.rm = TRUE))
# Line Chart interaktif pastel
plot_ly(
exp_avg,
x = ~FarmerExperience,
y = ~AverageYield,
type = 'scatter',
mode = 'lines+markers',
line = list(color = '#A8DADC', width = 3), # garis pastel biru lembut
marker = list(size = 10, color = '#FFB6B9', line = list(color = '#FFFFFF', width = 2))
) %>%
layout(
title = list(
text = "<b>Hubungan Pengalaman Petani dengan Rata-rata Hasil Panen</b>",
x = 0.5,
font = list(size = 20, family = "Arial", color = "#444444")
),
xaxis = list(title = "Pengalaman Petani (tahun)"),
yaxis = list(title = "Rata-rata Hasil Panen (ton/ha)"),
plot_bgcolor = "#FFFFFF",
paper_bgcolor = "#FFFFFF"
)Interpretasi:
Grafik menunjukkan tren meningkat antara pengalaman petani dan rata-rata hasil panen.
Semakin lama pengalaman petani (tahun), semakin tinggi pula hasil panen rata-rata yang diperoleh.
Meskipun terdapat sedikit fluktuasi di beberapa titik, arah umumnya tetap positif — menandakan adanya pengaruh keahlian dan pengalaman dalam meningkatkan produktivitas.
Kesimpulan: Pengalaman petani berperan penting dalam meningkatkan hasil panen. Semakin berpengalaman petani, semakin baik kemampuan mereka mengelola lahan dan memaksimalkan hasil pertanian.
Berdasarkan hasil eksplorasi data pada bagian 1.1, variabel CropYield menunjukkan variasi yang menarik di berbagai wilayah dan jenis tanaman. Oleh karena itu, pada bagian ini dilakukan analisis ukuran tendensi sentral untuk variabel CropYield guna memahami pola umum hasil panen petani.
4. Central Tendency
Tujuan dari analisis central tendency adalah untuk memahami nilai pusat atau kecenderungan umum dari data numerik dalam dataset. Dengan menghitung mean, median, dan modus, kita dapat melihat bagaimana distribusi data terbentuk serta mengetahui apakah data cenderung simetris atau miring (skewed). Analisis ini membantu menggambarkan karakteristik utama dari variabel yang diamati dalam hal ini Crop Yield dan Rainfall sehingga dapat digunakan untuk menilai pola produktivitas hasil panen serta kondisi lingkungan yang memengaruhinya.
4.1 Median
Median bertujuan untuk mengetahui nilai tengah dari data Crop Yield dan Rainfall setelah seluruh nilai diurutkan. Ukuran ini menggambarkan titik tengah distribusi data dan tidak terpengaruh oleh nilai ekstrem (outlier), sehingga memberikan gambaran yang lebih akurat tentang kondisi umum dibandingkan mean, terutama jika data tidak berdistribusi normal.
Rumus Median Median adalah nilai tengah dari data yang telah diurutkan dari terkecil hingga terbesar. Median membagi distribusi data menjadi dua bagian yang sama besar, dimana 50% data berada di bawah median dan 50% lainnya berada di atas median.
Formula perhitungan median:
\[ \text{Median} = \begin{cases} X_{\frac{n+1}{2}} & \text{jika } n \text{ ganjil} \\[12pt] \frac{X_{\frac{n}{2}} + X_{\frac{n}{2}+1}}{2} & \text{jika } n \text{ genap} \end{cases} \] Keterangan:
- \(X_i\) = nilai data ke-\(i\) setelah diurutkan
- \(n\) = jumlah total observasi
Implementasi dalam Data Crop Yield
## [1] 18.395
Implementasi dalam Data Rainfall
## [1] 98.55
Interprentasi Hasil Median
Berdasarkan hasil perhitungan, median CropYield menunjukkan hasil panen yang berada di tengah-tengah antara petani dengan hasil rendah dan tinggi, sehingga mencerminkan produktivitas tipikal sebagian besar petani. Sementara itu, median Rainfall menggambarkan tingkat curah hujan yang paling mewakili kondisi rata-rata wilayah pertanian, tanpa dipengaruhi oleh periode hujan ekstrem atau kekeringan yang jarang terjadi.
4.2 Modus
Menghitung modus bertujuan untuk mengetahui nilai yang paling sering muncul dalam data, baik pada variabel CropYield maupun Rainfall. Ukuran ini membantu memahami kecenderungan nilai yang paling umum terjadi di antara para petani dan kondisi iklim yang mereka alami.
Rumus Modus Modus adalah nilai yang paling sering muncul atau memiliki frekuensi kemunculan tertinggi dalam dataset. Untuk data kontinu seperti Total Purchase, modus diidentifikasi dengan mengelompokkan data dan mencari interval dengan frekuensi tertinggi.
Formula konseptual modus:
\[ \text{Modus} = \underset{x}{\text{argmax}} \, f(x) \] Dimana \(f(x)\) adalah fungsi frekuensi dari nilai \(x\).
Implemtasi dalam Data Crop Yield
modus_cropyield <- as.numeric(names(sort(table(data$CropYield), decreasing = TRUE)[1]))
modus_cropyield## [1] 17.64
Implemtasi dalam Data Rainfall
## [1] 87.8
Interprentasi Hasil Modus Berdasarkan hasil perhitungan, modus Crop Yield menunjukkan kisaran hasil panen yang paling sering dicapai oleh petani. Nilai ini menggambarkan tingkat produktivitas yang umum terjadi di lapangan. Sedangkan modus Rainfall menunjukkan curah hujan yang paling sering muncul di wilayah pertanian tersebut, yang berarti kondisi iklim pada nilai tersebut adalah yang paling sering dialami petani selama periode pengamatan.
4.3 Mean
Menghitung mean bertujuan untuk mengetahui nilai rata-rata hasil panen (CropYield) dan curah hujan (Rainfall) dari seluruh data yang ada. Nilai ini memberikan gambaran umum mengenai seberapa besar hasil panen dan tingkat curah hujan secara keseluruhan, serta dapat digunakan untuk membandingkan dengan median dan modus dalam melihat pola distribusi serta kemungkinan adanya kemencengan (skewness) pada data.
Rumus Mean Mean atau rata-rata adalah jumlah seluruh nilai data dibagi dengan banyaknya data. Mean merupakan ukuran central tendency yang paling umum digunakan dan memperhitungkan seluruh nilai dalam dataset.
Formula perhitungan mean:
\[ \bar{X} = \frac{1}{n}\sum_{i=1}^{n} X_i = \frac{X_1 + X_2 + X_3 + \cdots + X_n}{n} \] Keterangan:
- \(\bar{X}\) = nilai mean (rata-rata)
- \(n\) = jumlah data
- \(X_i\) = nilai data ke-\(i\)
- \(\sum\) = simbol penjumlahan
Implementasi dalam Data Crop Yield
## [1] 18.36231
Implementasi dalam Data Rainfall
## [1] 99.2114
Interprentasi Hasil Mean Berdasarkan hasil perhitungan, mean Crop Yield menunjukkan rata-rata hasil panen yang dicapai oleh petani secara keseluruhan. Jika nilainya tinggi, berarti produktivitas pertanian secara umum baik. Namun, nilai ini bisa terpengaruh oleh petani dengan hasil panen ekstrem (outlier).
Sementara itu, mean Rainfall mencerminkan rata-rata curah hujan yang diterima di wilayah penelitian. Jika nilainya cukup stabil dan tidak terlalu ekstrem, hal ini mengindikasikan bahwa kondisi cuaca relatif mendukung pertumbuhan tanaman secara konsisten di berbagai wilayah.
Hitung Mean, Median, dan Modus untuk CropYield
library(dplyr)
library(ggplot2)
library(plotly)
# Load data
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Hitung Mean, Median, dan Modus untuk CropYield
mean_crop <- mean(data$CropYield, na.rm = TRUE)
median_crop <- median(data$CropYield, na.rm = TRUE)
mode_crop <- as.numeric(names(sort(table(data$CropYield), decreasing = TRUE)[1]))
# Tampilkan hasil
cat("Mean (Rata-rata) CropYield:", mean_crop, "\n")## Mean (Rata-rata) CropYield: 18.36231
## Median (Nilai Tengah) CropYield: 18.395
## Mode (Nilai yang Sering Muncul) CropYield: 17.64
Data Frame Statistik CropYield
## Warning: package 'modeest' was built under R version 4.5.2
## Registered S3 method overwritten by 'rmutil':
## method from
## print.response httr
library(knitr)
# Load data
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Hitung mean, median, modus
summary_table <- data.frame(
Variabel = c("CropYield", "Rainfall"),
Mean = c(mean(data$CropYield, na.rm = TRUE),
mean(data$Rainfall, na.rm = TRUE)),
Median = c(median(data$CropYield, na.rm = TRUE),
median(data$Rainfall, na.rm = TRUE)),
Mode = c(
mfv(data$CropYield, na_rm = TRUE),
mfv(data$Rainfall, na_rm = TRUE)
)
)
# Tampilkan tabel rapi
kable(summary_table, caption = "Tabel Ukuran Tendensi Sentral untuk Crop Yield dan Rainfall", digits = 2)| Variabel | Mean | Median | Mode |
|---|---|---|---|
| CropYield | 18.36 | 18.40 | 17.64 |
| Rainfall | 99.21 | 98.55 | 87.80 |
Hasil statistik menunjukkan bahwa rata-rata hasil panen (CropYield) sebesar sekitar XX ton/ha dengan median yang sedikit lebih rendah, menandakan sebagian besar petani memiliki hasil di bawah rata-rata. Sementara itu, rata-rata curah hujan (Rainfall) sekitar XX mm dengan median yang hampir sama, menunjukkan distribusi data curah hujan relatif seimbang tanpa adanya nilai ekstrem yang dominan.
Berdasarkan hasil perhitungan ukuran tendensi sentral, nilai median dipilih sebagai ukuran yang paling representatif untuk menggambarkan data. Hal ini karena distribusi data pada variabel Crop Yield dan Rainfall cenderung tidak simetris atau memiliki outlier yang dapat memengaruhi nilai rata-rata. Median memberikan gambaran yang lebih stabil terhadap nilai tengah sesungguhnya dari hasil panen dan curah hujan tanpa terdistorsi oleh nilai ekstrem. Dengan demikian, median dapat mencerminkan kondisi umum petani secara lebih akurat dibandingkan dengan mean atau modus.
Visualisasi: Histogram + garis mean, median, mode (crop Yield)
# Visualisasi: Histogram + garis mean, median, mode
p <- ggplot(data, aes(x = CropYield)) +
geom_histogram(binwidth = 5, fill = "#A8DADC", color = "white", alpha = 0.8) +
geom_vline(aes(xintercept = mean_crop), color = "#FFB6B9", linetype = "dashed", size = 1.2) +
geom_vline(aes(xintercept = median_crop), color = "#FFD6A5", linetype = "dashed", size = 1.2) +
geom_vline(aes(xintercept = mode_crop), color = "#B5EAD7", linetype = "dashed", size = 1.2) +
labs(
title = "Distribusi Hasil Panen (Crop Yield) dengan Mean, Median, dan Modus",
x = "Hasil Panen (ton/ha)",
y = "Frekuensi"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14)
)## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Berdasarkan histogram, distribusi Crop Yield tampak skewed ke kanan, menunjukkan bahwa sebagian besar petani memiliki hasil panen rendah hingga sedang, sedangkan hanya sedikit yang memiliki hasil panen sangat tinggi. Hal ini mengindikasikan adanya outlier yang dapat memengaruhi nilai rata-rata.
Visualisasi: Histogram + garis mean, median, mode (Rainfull)
library(ggplot2)
library(dplyr)
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
mean_rain <- mean(data$Rainfall, na.rm = TRUE)
median_rain <- median(data$Rainfall, na.rm = TRUE)
mode_rain <- as.numeric(names(sort(table(data$Rainfall), decreasing = TRUE)[1]))
ggplot(data, aes(x = Rainfall)) +
geom_histogram(binwidth = 10, fill = "#B5EAD7", color = "white", alpha = 0.9) +
geom_vline(xintercept = mean_rain, color = "red", linetype = "dashed", size = 1) +
geom_vline(xintercept = median_rain, color = "blue", linetype = "dashed", size = 1) +
geom_vline(xintercept = mode_rain, color = "green", linetype = "dashed", size = 1) +
labs(
title = "Distribusi Curah Hujan (Rainfall)",
x = "Rainfall",
y = "Frekuensi",
caption = "Garis Merah = Mean | Biru = Median | Hijau = Modus"
) +
theme_minimal() +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14)
)Histogram untuk Rainfall menunjukkan distribusi yang menyebar namun sedikit condong ke kanan, menandakan bahwa sebagian besar wilayah memiliki curah hujan sedang, sementara beberapa mengalami curah hujan tinggi. Pola ini menggambarkan adanya variasi kondisi iklim antarwilayah.
5. Measures of Dispersion
Measures of dispersion digunakan untuk mengetahui seberapa besar penyebaran data dari nilai rata-ratanya. Analisis ini membantu melihat apakah data bersifat konsisten atau bervariasi, seperti pada perbedaan hasil panen (CropYield) dan curah hujan (Rainfall) antar wilayah. Semakin besar nilai dispersi seperti range, variance, standard deviation, dan interquartile range (IQR), maka semakin besar pula variasi data; sebaliknya, nilai yang kecil menunjukkan data lebih stabil dan konsisten.
5.1 Range (Rentang)
Mengukur seberapa lebar jarak antara nilai terbesar dan terkecil pada data.
Rumus Range \[ Range = X_{max} - X_{min} \]
Keterangan:
- \(X_{max}\) = nilai maksimum
- \(X_{min}\) = nilai minimum
Implemtasi Range pada Data (Crop Yield)
# Membaca data csv
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Menghitung range crop yield
range_crop <- max(data$CropYield, na.rm = TRUE) - min(data$CropYield, na.rm = TRUE)
range_crop## [1] 18.68
Implemtasi Range pada Data (Rainfall)
# Menghitung range rainfall
range_rain <- max(data$Rainfall, na.rm = TRUE) - min(data$Rainfall, na.rm = TRUE)
range_rain## [1] 160.7
Interprentasi Data Range
Range pada variabel CropYield sebesar 18.68 menunjukkan perbedaan hasil panen antar petani relatif kecil, menandakan data cukup konsisten. Sementara itu, Rainfall memiliki range 160.7, menunjukkan variasi curah hujan yang jauh lebih besar antar wilayah. Dengan demikian, Rainfall memiliki penyebaran data yang lebih luas dibandingkan CropYield.
5.2 Variance (Varians)
Menunjukkan seberapa besar variasi atau penyimpangan data terhadap rata-rata.
Rumus Varian \[ s^2 = \frac{\sum (x_i - \bar{x})^2}{n - 1} \]
Keterangan:
- \(s^2\) = varians
- \(x_i\) = nilai data ke-\(i\)
- \(\bar{x}\) = rata-rata (mean)
- \(n\) = jumlah data
Implementasi pada Data (Crop Yield)
# Membaca data csv
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Menghitung varian crop yeild
variance_crop <- var(data$CropYield, na.rm = TRUE)
variance_crop## [1] 8.902345
Implementasi pada Data (Rainfall)
## [1] 618.7805
Interprentasi Data Varian
Nilai varian CropYield sebesar 8.9 menunjukkan bahwa hasil panen antar petani memiliki tingkat variasi yang rendah, sehingga datanya relatif homogen. Sebaliknya, varian Rainfall sebesar 618.7 menandakan adanya perbedaan curah hujan yang cukup besar antar wilayah. Artinya, Rainfall memiliki sebaran data yang jauh lebih beragam dibandingkan CropYield.
5.3 Standard Deviation (Deviasi Baku)
Mengukur rata-rata penyimpangan data dari nilai rata-rata dalam satuan yang sama dengan datanya.
Rumus Standar Deviation (Deviasi Baku) \[ s = \sqrt{\frac{\sum (x_i - \bar{x})^2}{n - 1}} \]
Keterangan:
- \(s\) = simpangan baku
- Akar kuadrat dari varians
Implementasi pada Data (Crop Yeild)
# Membaca data csv
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Menghitung SD crop yield
sd_crop <- sd(data$CropYield, na.rm = TRUE)
sd_crop## [1] 2.98368
Implementasi pada Data (Rainfall)
## [1] 24.8753
Interpentasi data SD
Nilai standar deviasi CropYield sebesar 2.98 menunjukkan bahwa hasil panen antar petani tidak terlalu bervariasi dan cenderung konsisten. Sedangkan standar deviasi Rainfall sebesar 24.88 menandakan bahwa curah hujan memiliki penyebaran yang jauh lebih besar antar wilayah. Dengan kata lain, variabilitas Rainfall lebih tinggi dibandingkan dengan CropYield, sehingga kondisi cuaca antar daerah lebih beragam daripada hasil panen petani.
5.4. Interquartile Range (IQR)
Mengukur seberapa lebar jarak antara nilai terbesar dan terkecil pada data.
Rumus Interquartile Range (IQR) \[ IQR = Q3 - Q1 \]
Keterangan:
- \(Q3\) = kuartil ketiga (nilai pada
75%)
- \(Q1\) = kuartil pertama (nilai pada
25%)
Implementasi pada Data (Crop Yeild)
# Membaca data csv
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Menghitung IQR crop yeild
iqr_crop <- IQR(data$CropYield, na.rm = TRUE)
iqr_crop## [1] 4.0275
Implementasi pada Data (Rainfall)
## [1] 34.05
Interprentasi Data IQR
Nilai IQR CropYield sebesar 4.03 menunjukkan bahwa sebagian besar hasil panen petani memiliki sebaran yang relatif sempit di sekitar nilai tengahnya, artinya data cukup konsisten. Sedangkan IQR Rainfall sebesar 34.05 menunjukkan bahwa curah hujan memiliki variasi yang lebih besar antar wilayah. Dengan demikian, Rainfall lebih beragam, sedangkan CropYield lebih stabil di sebagian besar data.
Table Ukuran Penyebaran data dispersion
# Buat tabel data frame
dispersion_table <- data.frame(
Variabel = c("CropYield", "Rainfall"),
Range = c(range_crop, range_rain),
Variance = c(variance_crop, variance_rain),
SD = c(sd_crop, sd_rain),
IQR = c(iqr_crop, iqr_rain)
)
# Tampilkan tabel dengan kable
library(knitr)
library(kableExtra)
kable(
dispersion_table,
caption = "Tabel Ukuran Penyebaran (Measures of Dispersion)",
align = "c",
digits = 2
) %>%
kable_styling(
bootstrap_options = c("striped", "hover", "condensed"),
full_width = FALSE,
position = "center",
font_size = 13
) %>%
column_spec(1, bold = TRUE, color = "black") %>%
row_spec(0, bold = TRUE, background = "#F6EAF7")| Variabel | Range | Variance | SD | IQR |
|---|---|---|---|---|
| CropYield | 18.68 | 8.90 | 2.98 | 4.03 |
| Rainfall | 160.70 | 618.78 | 24.88 | 34.05 |
Boxplot Visualization
Boxplot digunakan untuk melihat sebaran data dan mendeteksi kemungkinan adanya pencilan (outlier). Visualisasi ini menampilkan perbandingan antara variabel Rainfall dan CropYield.
# Boxplot untuk Rainfall dan CropYield
boxplot(data$Rainfall, data$CropYield,
names = c("Rainfall", "CropYield"),
main = "Boxplot of Rainfall and CropYield",
ylab = "Value",
col = c("#87CEFA", "#90EE90"))
# Garis rata-rata
abline(h = mean(data$Rainfall), col = "blue", lty = 2)
abline(h = mean(data$CropYield), col = "darkgreen", lty = 2)Interprentasi Boxplot
Berdasarkan boxplot, nilai Rainfall menunjukkan penyebaran yang lebih lebar dibandingkan CropYield. Hal ini berarti variasi curah hujan antar wilayah lebih besar, sementara hasil panen lebih stabil. Beberapa titik ekstrem pada Rainfall juga menunjukkan adanya wilayah dengan curah hujan yang jauh berbeda dari rata-rata, yang dapat memengaruhi produktivitas pertanian di wilayah tersebut.
Histogram Visualisation
Histogram digunakan untuk melihat distribusi data numerik seperti CropYield dan Rainfall. Visualisasi ini membantu menunjukkan bagaimana frekuensi nilai tersebar, apakah data cenderung simetris, miring (skewed), atau terdapat outlier. Dari histogram, dapat dilihat seberapa besar variasi hasil panen dan curah hujan antar wilayah.
library(plotly)
library(dplyr)
# Baca data
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Histogram interaktif berdampingan
p <- subplot(
plot_ly(
x = data$Rainfall,
type = "histogram",
nbinsx = 20,
name = "Rainfall",
marker = list(
color = "#A3CEF1", # biru lembut
line = list(color = "white", width = 1.5)
)
) %>%
layout(
title = "Sebaran Curah Hujan (Rainfall)",
xaxis = list(title = "Rainfall (mm)"),
yaxis = list(title = "Frekuensi"),
plot_bgcolor = "#FFFFFF",
paper_bgcolor = "#FFFFFF"
),
plot_ly(
x = data$CropYield,
type = "histogram",
nbinsx = 20,
name = "CropYield",
marker = list(
color = "#F4A896", # merah pastel lembut
line = list(color = "white", width = 1.5)
)
) %>%
layout(
title = "Sebaran Hasil Panen (CropYield)",
xaxis = list(title = "Crop Yield (ton/ha)"),
yaxis = list(title = "Frekuensi"),
plot_bgcolor = "#FFFFFF",
paper_bgcolor = "#FFFFFF"
),
nrows = 1, # sejajar berdampingan
shareY = TRUE
) %>%
layout(
title = list(
text = "<b>Perbandingan Sebaran Curah Hujan dan Hasil Panen</b>",
x = 0.5,
font = list(size = 20, family = "Arial", color = "#444444")
),
showlegend = TRUE,
legend = list(
x = 0.8, y = 1,
bgcolor = "rgba(255,255,255,0.8)",
bordercolor = "#DDD",
borderwidth = 1
)
)
pInterprentasi Histogram
Dari visualisasi histogram terlihat bahwa Rainfall memiliki sebaran data yang lebih luas dibandingkan CropYield. Hal ini menunjukkan bahwa curah hujan antar wilayah cenderung lebih bervariasi, dengan nilai yang tersebar dari rendah hingga sangat tinggi. Sementara itu, CropYield memiliki sebaran yang lebih sempit dan terpusat di sekitar nilai rata-ratanya, menandakan bahwa hasil panen antar wilayah relatif lebih konsisten. Perbedaan ini menggambarkan bahwa faktor curah hujan memiliki fluktuasi yang besar di tiap wilayah, sedangkan hasil panen lebih stabil karena kemungkinan dipengaruhi oleh faktor lain seperti teknik pertanian atau kualitas lahan yang lebih terkontrol.
Scatter Plot Visualisation
Scatter plot digunakan untuk menggambarkan hubungan antara curah hujan (Rainfall) dan hasil panen (CropYield). Melalui visualisasi ini, dapat diamati bagaimana perubahan curah hujan mempengaruhi tingkat hasil panen. Tiap titik pada grafik mewakili satu pengamatan dari data yang tersedia.
Dengan bantuan scatter plot, kita dapat melihat pola hubungan, apakah bersifat positif, negatif, atau tidak ada hubungan yang jelas di antara kedua variabel tersebut.
library(plotly)
# Load data
data <- read.csv("C:/Users/FIFI/Desktop/tugas statistik sem1/midexam statistik/Midterm Exam.csv")
# Scatter plot interaktif
plot_ly(
data = data,
x = ~Rainfall,
y = ~CropYield,
type = 'scatter',
mode = 'markers',
marker = list(
size = 10,
color = '#FF9AA2', # warna pastel pink lembut
line = list(color = '#FFFFFF', width = 1.5),
opacity = 0.8
)
) %>%
layout(
title = list(
text = "<b>Hubungan antara Curah Hujan (Rainfall) dan Hasil Panen (CropYield)</b>",
x = 0.5,
font = list(size = 20, family = "Arial", color = "#444444")
),
xaxis = list(title = "Curah Hujan (mm)"),
yaxis = list(title = "Hasil Panen (ton/ha)"),
plot_bgcolor = "#FFFFFF",
paper_bgcolor = "#FFFFFF",
hovermode = "closest"
)Interprentasi Scatter Plot
Berdasarkan hasil visualisasi scatter plot antara curah hujan (Rainfall) dan hasil panen (Crop Yield), terlihat bahwa titik-titik data tersebar secara acak tanpa pola yang jelas. Hal ini menunjukkan bahwa tidak terdapat hubungan linear yang kuat antara curah hujan dan hasil panen. Dengan kata lain, peningkatan curah hujan tidak selalu diikuti oleh peningkatan hasil panen. Sebaran titik yang cukup luas juga mengindikasikan adanya variasi hasil panen meskipun tingkat curah hujan serupa, sehingga kemungkinan besar hasil panen dipengaruhi oleh faktor lain seperti jenis tanah, penggunaan pupuk, dan teknik pertanian yang digunakan.
Interprentasi Gabungan Visualisasi Disperisi
Berdasarkan ketiga visualisasi, variabel dalam Agriculture Dataset menunjukkan tingkat penyebaran yang berbeda-beda. Farm size dan fertilizer amount memiliki dispersi tinggi, menandakan variasi signifikan dalam skala lahan dan penggunaan pupuk antar petani. Sebaliknya, farmer experience dan rainfall menunjukkan variasi yang lebih rendah dan relatif konsisten.
Boxplot mengungkap adanya outlier pada variabel seperti farm size dan fertilizer amount, sementara histogram dan scatter plot memperlihatkan data yang terkonsentrasi di rentang tengah namun tetap terdapat penyimpangan. Secara keseluruhan, meski sebagian besar variabel stabil, terdapat variasi penting yang dapat memengaruhi produktivitas antar wilayah dan petani.
6. Summary and Interpretation
Berdasarkan hasil analisis terhadap variabel CropYield dan Rainfall, dapat disimpulkan bahwa tingkat penyebaran data pada kedua variabel menunjukkan perbedaan yang cukup signifikan. Nilai dispersi pada CropYield relatif kecil, yang menandakan bahwa hasil panen antar petani cenderung konsisten dan tidak terlalu bervariasi. Sementara itu, Rainfall memiliki nilai rentang, varians, dan deviasi baku yang jauh lebih besar, menunjukkan adanya perbedaan curah hujan yang cukup tinggi antar wilayah.
Dari visualisasi boxplot dan histogram, terlihat bahwa distribusi CropYield lebih merata di sekitar median, sedangkan Rainfall memiliki sebaran data yang lebih luas dan menunjukkan adanya nilai ekstrem. Scatter plot memperlihatkan adanya hubungan positif antara curah hujan dan hasil panen, di mana peningkatan curah hujan umumnya diikuti dengan peningkatan produktivitas hingga titik tertentu sebelum stabil.
Secara keseluruhan, hasil analisis ini mengindikasikan bahwa Rainfall merupakan variabel dengan tingkat variasi tertinggi yang dapat memengaruhi hasil panen petani. Dengan demikian, faktor curah hujan perlu menjadi perhatian utama dalam upaya meningkatkan produktivitas pertanian di berbagai wilayah.
8. Referensi
[1] Siregar, B. (n.d.). Introduction to statistics. dsciencelabs. https://bookdown.org/dsciencelabs/intro_statistics/Preface.html
[2] Siregar, B. (n.d.). Introduction to statistics: Chapter 2 Data Exploration. dsciencelabs. https://bookdown.org/dsciencelabs/intro_statistics/02-Data_Exploration.html
[3] Siregar, B. (n.d.). Introduction to statistics: Chapter 3 Basic Data Visualizations. dsciencelabs. https://bookdown.org/dsciencelabs/intro_statistics/03-Basic_Visualizations.html
[4] Siregar, B. (n.d.). Introduction to statistics: Chapter 4 Central Tendency. dsciencelabs. https://bookdown.org/dsciencelabs/intro_statistics/04-Central_Tendency.html
[5] Siregar, B. (n.d.). Introduction to statistics: Chapter 5 Statistical Dispersion. dsciencelabs. https://bookdown.org/dsciencelabs/intro_statistics/05-Statistical_Dispersion.html