[C++]: Kalkulator Statistika Deskriptif (Bagian II: Standar deviasi, Varian, Simpangan rata-rata, dan Koefisien Variasi)

Rasendra A. Satyatama
7 min readMay 5, 2023

--

Halo semuanya!

Di artikel ini, kita akan membahas perhitungan standar deviasi, varian, simpangan rata-rata, dan koefisien variasi. Namun, sebelumnya, pastikan untuk membaca artikel sebelumnya di sini:

Standar deviasi adalah sebuah ukuran yang menunjukkan seberapa jauh data tersebar dari nilai rata-rata. Semakin tinggi nilai standar deviasi, semakin besar variasi data. Perhitungan standar deviasi dilakukan dengan mengambil akar kuadrat dari varian.

Varian adalah ukuran seberapa jauh data tersebar dari nilai rata-rata. Semakin besar nilai varian, semakin tinggi variasi data. Perhitungan varian dilakukan dengan menghitung rata-rata kuadrat selisih antara setiap nilai data dengan nilai rata-rata.

Simpangan rata-rata adalah jarak rata-rata antara setiap nilai data dengan nilai rata-rata. Ini memberikan gambaran tentang seberapa jauh setiap nilai data dari nilai rata-rata.

Koefisien variasi adalah sebuah ukuran yang menunjukkan seberapa besar standar deviasi relatif terhadap nilai rata-rata. Ini membantu dalam membandingkan variasi data antara dua set data yang berbeda. Semakin kecil koefisien variasi, semakin homogen data.

(sumber: rumusstatistik.com)

Semoga penjelasan di atas dapat membantu Anda dalam memahami konsep standar deviasi, varian, simpangan rata-rata, dan koefisien variasi.

gambar 1. hasil output pada program kalkulator statistika deskriptif

Selanjutnya kita akan bahas kode program setelah menghitung rata-rata, median, modus dsb yang dimana variabelnya masih berkaitan untuk digunakan dalam perhitungan berikutnya.

RATA-RATA UKUR (GEOMETRIK)

Perhitungan rata-rata geometrik dilakukan dengan cara mengalikan seluruh data, lalu menarik akar pangkat n, dengan n adalah jumlah data yang ada dalam kode ini maka menggunakan variabel jml_data.

gambar 2. rumus rata-rata geometrik (sumber: rumusstatistik.com)

Berikut adalah pemrogramannya dalam C++.

//rata-rata ukur
float angka_satu = 1;
float rata2_ukur;
for(i=1;i<=jml_data;i++){
angka_satu *= nilai[i];
}
rata2_ukur = pow(angka_satu, (1.0/jml_data));

Langkah pengerjaan :

  1. Inisialisasi variabel angka_satu dengan nilai 1.
  2. Hitung rata-rata geometrik dengan melakukan perulangan sebanyak jml_data kali.
  3. Dalam setiap iterasi, kalikan nilai angka_satu dengan nilai elemen data ke-i.
  4. Setelah selesai perulangan, hitung rata-rata geometrik dengan menghitung akar pangkat 1/jml_data dari hasil perkalian semua nilai data.
  5. Simpan hasil perhitungan rata-rata geometrik pada variabel rata2_ukur.

STANDAR DEVIASI SAMPEL & POPULASI

Standar deviasi populasi (σ) digunakan untuk menghitung sebaran data dalam suatu populasi. Sedangkan standar deviasi sampel (s) digunakan untuk menghitung sebaran data dalam sampel dari populasi.

σ = √(Σ(xi - μ)²/N)

Keterangan

  • σ = standar deviasi populasi
  • Σ = simbol sigma, yang berarti menjumlahkan
  • xi = nilai pada sampel ke-i
  • μ = nilai rata-rata populasi
  • N = jumlah total populasi

Pada C++, maka perhitungan standar deviasi populasi dilakukan dengan kode sebagai berikut.

//standar deviasi populasi
float sd_populasi = 0;
for(i=1;i<=jml_data;i++){
sd_populasi += pow(nilai[i]-rata_rata, 2)/jml_data;
}
sd_populasi = sqrt(sd_populasi);

Langkah pengerjaan :

  1. inisialisasi variabel sd_populasi dengan nilai awal 0.
  2. Melakukan perulangan sebanyak jml_data kali.
  3. Dalam setiap iterasi, hitung nilai deviasi dari rata-rata dengan mengurangi nilai data ke-i dengan nilai rata-rata.
  4. Pangkatkan hasil deviasi ke-2 menggunakan fungsi pow().
  5. Tambahkan hasil kuadrat deviasi ke variabel sd_populasi.
  6. Setelah selesai perulangan, hitung standar deviasi populasi dengan menghitung akar kuadrat dari hasil penjumlahan kuadrat deviasi, yang dibagi dengan jumlah data (jml_data).

Sedangkan rumus untuk menghitung standar deviasi sampel adalah sebagai berikut:

s = √(Σ(xi - x̄)²/(n - 1))

Keterangan:

  • s = standar deviasi sampel
  • Σ = simbol sigma, yang berarti menjumlahkan
  • xi = nilai pada sampel ke-i
  • x̄ = nilai rata-rata sampel
  • n = jumlah total sampel

Kode pemrogramannya pada c++ adalah sebagai berikut.

//standar deviasi sampel
float sd_sampel = 0;
for(i=1;i<=jml_data;i++){
sd_sampel += pow(nilai[i]-rata_rata, 2)/(jml_data-1);
}
sd_sampel = sqrt(sd_sampel);

Langkah pengerjaan:

  1. Inisialisasi variabel sd_sampel dengan nilai awal 0.
  2. Melakukan perulangan sebanyak jml_data kali.
  3. Dalam setiap iterasi, hitung nilai deviasi dari rata-rata, yaitu nilai[i] — rata_rata.
  4. Pangkatkan hasil deviasi ke-2 menggunakan fungsi pow().
  5. Tambahkan hasil kuadrat deviasi ke variabel sd_sampel.
  6. Setelah selesai perulangan, hitung standar deviasi sampel dengan menghitung akar kuadrat dari hasil penjumlahan kuadrat deviasi, yang dibagi dengan jumlah data dikurangi satu (jml_data — 1).

VARIAN POPULASI DAN SAMPEL

Varian populasi didefinisikan sebagai rata-rata kuadrat selisih antara tiap anggota populasi dan nilai rata-rata populasi, sedangkan varian sampel didefinisikan sebagai rata-rata kuadrat selisih antara tiap anggota sampel dan nilai rata-rata sampel.

Karena kita sudah menghitung nilai dari standar deviasi populasi dan juga varian, maka untuk menghitung varian pada c++ kita gunakan fungsi pow() untuk mengkuadratkan nilai dari standar deviasi.

//varian sampel
float varian_sampel;
varian_sampel = pow(sd_sampel, 2);

//varian populasi
float varian_populasi;
varian_populasi = pow(sd_populasi, 2);

SIMPANGAN RATA-RATA

Simpangan rata-rata dihitung dengan cara menghitung selisih antara setiap nilai data dengan nilai rata-rata, kemudian menjumlahkan selisih-selisih tersebut dan membaginya dengan jumlah data.

//simpangan rata-rata
float simp_rata2 = 0;
for(i=1;i<=jml_data;i++){
simp_rata2 += abs(nilai[i]-rata_rata);
}
simp_rata2 = simp_rata2/jml_data;

Langkah pengerjaan :

  1. Inisialisasi variabel simp_rata2 dengan nilai awal 0.
  2. Melakukan perulangan sebanyak jml_data kali.
  3. Dalam setiap iterasi, hitung nilai selisih antara data ke-i dan nilai rata-rata dengan menggunakan fungsi abs().
  4. Tambahkan hasil selisih ke variabel simp_rata2.
  5. Setelah selesai perulangan, hitung simpangan rata-rata dengan membagi jumlah selisih dengan jumlah data (jml_data).

KOEFISIEN VARIASI

Kita dapat menghitung koefisien variasi dengan menggunakan rumus koefisien variasi = (standar deviasi / rata-rata), dengan memanfaatkan nilai standar deviasi dan rata-rata yang telah dihitung sebelumnya.

//koefisien variasi
float kv;
kv = sd_populasi/rata_rata;

Langkah pengerjaan :

  1. Variabel kv dideklarasikan dengan tipe data float, yang akan menyimpan nilai koefisien variasi.
  2. Menghitung nilai koefisien variasi dengan membagi standar deviasi populasi (sd_populasi) dengan rata-rata (rata_rata).
  3. Hasil perhitungan koefisien variasi kemudian disimpan pada variabel kv.

OUTPUT

Berikut merupakan output hasil perhitungan dari beberapa statistik deskriptif yang telah dihitung dalam program :

//output
cout<<"\n=============================================="<<endl;
cout<<"\n Rata-rata = "<<rata_rata<<endl;
cout<<" Median = "<<median<<endl;
cout<<" Modus = ";
float modus[999] = {0};
int n_modus = 0;
for (i = 1; i <= jml_data; i++) {
if (frekuensi[i] == max_frekuensi) {
bool sudah_ada = false;
for (int j = 0; j < n_modus; j++) {
if (nilai[i] == modus[j]) {
sudah_ada = true;
break;
}
}
if (!sudah_ada) {
modus[n_modus++] = nilai[i];
cout << nilai[i] << " ";
}
}
}
cout<<"\n Maks = "<<maks<<endl;
cout<<" Min = "<<min<<endl;
cout<<" Range = "<<range<<endl;
cout<<" Rata-rata ukur = "<<rata2_ukur<<endl;
cout<<" Standar deviasi sampel = "<<sd_sampel<<endl;
cout<<" Standar deviasi populasi = "<<sd_populasi<<endl;
cout<<" Varian sampel = "<<varian_sampel<<endl;
cout<<" Varian populasi = "<<varian_populasi<<endl;
cout<<" Simpangan rata-rata = "<<simp_rata2<<endl;
cout<<" Koefisien variasi = "<<kv<<endl;
cout<<endl;

Dalam artikel ini, Kita telah belajar tentang cara membuat program sederhana untuk menghitung statistika deskriptif pada data menggunakan bahasa pemrograman C++. Kitatelah belajar menghitung rata-rata, median, modus, maksimum, minimum, rentang, rata-rata geometrik, varian, standar deviasi, simpangan rata-rata, dan koefisien variasi. Semua formula matematis diimplementasikan dalam kode C++ yang mudah dimengerti dan dijelaskan dengan baik.

Semoga artikel ini memberikan manfaat bagi yang ingin mempelajari dasar-dasar pemrograman C++ dan statistika deskriptif. Jangan ragu untuk mengembangkan program ini dengan menambahkan fitur atau memodifikasi kode sesuai kebutuhan.

Full Code :

#include <iostream>
#include <math.h>
using namespace std;

int main (){

//deklarasi variabel
int i, jml_data;
float nilai[999];

cout<<"\n KALKULATOR STATISTIKA DESKRIPTIF"<<endl;
cout<<"==========================================="<<endl;
cout<<" Masukkan banyaknya data yang ingin diinput: ";cin>>jml_data;
cout<<"-----------------------------------------------"<<endl;

for(i=1;i<=jml_data;i++){
cout<<" Data ke-"<<i<<": ";cin>>nilai[i];
}
cout<<"______________________________________________"<<endl;

//Urutan data
cout<<" Urutan Data: "<<endl;
cout<<"----------------------------------------------"<<endl;

for(i=1;i<=jml_data;i++){
for(int j=i+1;j<=jml_data;j++){
if(nilai[j]<nilai[i]){
float temp = nilai[i];
nilai[i]=nilai[j];
nilai[j]=temp;
}
}
}

for(i=1;i<=jml_data;i++){
cout<<" "<<nilai[i];
}

//rata-rata
float rata_rata = 0;
for(i=1;i<=jml_data;i++){
rata_rata += nilai[i];
}
rata_rata = rata_rata/jml_data;

//median
float median;
if(jml_data%2==0){
median = (nilai[jml_data/2]+nilai[(jml_data/2)+1])/2;
}
else{
median = nilai[(jml_data/2)+1];
}


//modus
int frekuensi[999] = {0}; // inisialisasi semua elemen array menjadi 0

for(i=1;i<=jml_data;i++){
for(int j=1;j<=jml_data;j++){
if(nilai[i] == nilai[j]){
frekuensi[i]++;
}
}
}

int max_frekuensi = 0;
for(i=1;i<=jml_data;i++){
if(frekuensi[i] > max_frekuensi){
max_frekuensi = frekuensi[i];
}
}

//maksimum dan minimum
float maks, min;
maks = nilai[1];
min = nilai[1];

for(i=1;i<=jml_data;i++){
if(i==1){
maks = nilai[i];
min = nilai[i];
}
else if(nilai[i]>maks){
maks = nilai[i];
}
else if(nilai[i]<min){
min = nilai[i];
}
else {
}
}

//range
float range = maks - min;

//rata-rata ukur
float angka_satu = 1;
float rata2_ukur;
for(i=1;i<=jml_data;i++){
angka_satu *= nilai[i];
}
rata2_ukur = pow(angka_satu, (1.0/jml_data));



//standar deviasi sampel
float sd_sampel = 0;
for(i=1;i<=jml_data;i++){
sd_sampel += pow(nilai[i]-rata_rata, 2)/(jml_data-1);
}
sd_sampel = sqrt(sd_sampel);

//standar deviasi populasi
float sd_populasi = 0;
for(i=1;i<=jml_data;i++){
sd_populasi += pow(nilai[i]-rata_rata, 2)/jml_data;
}
sd_populasi = sqrt(sd_populasi);

//varian sampel
float varian_sampel;
varian_sampel = pow(sd_sampel, 2);

//varian populasi
float varian_populasi;
varian_populasi = pow(sd_populasi, 2);



//simpangan rata-rata
float simp_rata2 = 0;
for(i=1;i<=jml_data;i++){
simp_rata2 += abs(nilai[i]-rata_rata);
}
simp_rata2 = simp_rata2/jml_data;

//koefisien variasi
float kv;
kv = sd_populasi/rata_rata;


//output
cout<<"\n=============================================="<<endl;
cout<<"\n Rata-rata = "<<rata_rata<<endl;
cout<<" Median = "<<median<<endl;
cout<<" Modus = ";
float modus[999] = {0};
int n_modus = 0;
for (i = 1; i <= jml_data; i++) {
if (frekuensi[i] == max_frekuensi) {
bool sudah_ada = false;
for (int j = 0; j < n_modus; j++) {
if (nilai[i] == modus[j]) {
sudah_ada = true;
break;
}
}
if (!sudah_ada) {
modus[n_modus++] = nilai[i];
cout << nilai[i] << " ";
}
}
}
cout<<"\n Maks = "<<maks<<endl;
cout<<" Min = "<<min<<endl;
cout<<" Range = "<<range<<endl;
cout<<" Rata-rata ukur = "<<rata2_ukur<<endl;
cout<<" Standar deviasi sampel = "<<sd_sampel<<endl;
cout<<" Standar deviasi populasi = "<<sd_populasi<<endl;
cout<<" Varian sampel = "<<varian_sampel<<endl;
cout<<" Varian populasi = "<<varian_populasi<<endl;
cout<<" Simpangan rata-rata = "<<simp_rata2<<endl;
cout<<" Koefisien variasi = "<<kv<<endl;
cout<<endl;

return 0;
}

— — Terima kasih telah membaca artikel ini, dan semoga berhasil! — —

--

--

No responses yet