FERDO R LAB · ÖZGÜN BAŞLANGIÇ DERSİ

Programlama Nedir? · Ders 0

Programcı gibi düşünmek: problemi tarif et, küçük adımlara ayır, R ile uygula, sonucu kontrol et.

UCL PALS öğrencisine uygun bağımsız 80–90 dakikalık giriş · R öğrenmeye sıfırdan başlamak için

Derse başlaR Ders 1'e geç

Öğretmen rehberi ve açık çözümler

Bu dersin bütün özgün çözüm örnekleri, beklenen sonuçları ve öğretim planı herkese açık. Önce alıştırmaları kendin çözmek istiyorsan cevap anahtarını sona bırak.

Ders 0 çözüm anahtarı Öğretmen rehberi

Kodu ezberlemekten önce bilgisayara hangi soruyu sorduracağını öğren. Bu derste basit bir psikoloji veri problemiyle başlayacağız; algoritma, değişken, fonksiyon, koşul, tekrar, eksik veri ve hata ayıklamayı keşfedeceğiz.

Programlama nedir?

Programlama; bir problemi, bilgisayarın uygulayabileceği yeterince açık ve sınanabilir adımlara dönüştürme işidir. Kod yazmak bunun yalnızca bir parçasıdır. İyi bir programcı neyin ölçüleceğini belirler, işlemleri tasarlar, hataları araştırır, test eder ve çıktıyı yorumlar.

Dört önemli ayrım

Problem

Ne öğrenmek istiyoruz? Örn. 'Bir uygulamaya katılanların puanı nasıl değişti?'

Algoritma

Veriyi alma, eksikleri belirleme, farkları hesaplama ve sonucu denetleme gibi adımların planı

R

Bu planı bilgisayara anlatmak için kullandığımız programlama dili

RStudio

R kodunu yazmayı, çalıştırmayı ve araştırmayı kolaylaştıran geliştirme ortamı; R'nin kendisi değil

Bilgisayara iş vermeden önce 6 soru

  1. 1. Soru ne? Bir cümleyle ve ölçülebilir biçimde ifade et.
  2. 2. Girdi ne? Her satırın ve sütunun anlamını belirle.
  3. 3. Çıktı ne? Tablo, sayı, grafik veya karar mı istiyorsun?
  4. 4. İşlem sırası ne? Adımları önce doğal dille anlat.
  5. 5. Neler ters gidebilir? Eksik değer, yanlış kod, yanlış dosya yolu?
  6. 6. Doğru olduğunu nasıl anlayacağız? Elle hesapla, test et, yorumla.

Programlamanın altı temel yapıtaşı

1 · Değer ve tür

12 bir sayıdır; "A" metindir; TRUE/FALSE mantıksal değerdir. Aynı veri gibi görünseler de farklı işlemler ister.

2 · Değişken / nesne

`score <- 12` ifadesi, 12 değerini `score` adlı nesneye atar. Sol taraf isimdir, sağ taraf hesaplanan değerdir.

3 · Vektör

`c(12, 10, 14)` tek tek değerleri düzenli bir grup olarak tutar. R birçok hesaplamayı bütün vektöre uygular.

4 · Fonksiyon

`mean(scores)` daha önce tanımlanmış bir işlemi çağırır. `mean` işin adı; `scores` girdi argümanıdır.

5 · Koşul ve karar

`scores >= 12` her değer için TRUE/FALSE üretir. Bir koşul, verinin hangi bölümünün seçileceğini belirleyebilir.

6 · Tekrar ve hata kontrolü

Aynı kuralı tüm gözlemlere uygulamak ve gerektiğinde `is.na()` gibi kontrolleri kullanmak programın güvenilirliğini artırır.

İlk çalışan R programın

Önce çalıştırma, yalnızca tahmin et: Bu program kaç geçerli gözlemi sayacak? Hangi ortalamayı verecek?

scores <- c(12, 10, 14, NA, 9)
length(scores)
mean(scores)
mean(scores, na.rm = TRUE)
sum(!is.na(scores))
`NA` bilinmeyen değerdir; sıfır değildir. `mean(before)` sonucunun neden NA olduğunu, `na.rm = TRUE` ile neyin değiştiğini anlat.

Küçük psikoloji veri problemi

Aşağıdaki beş kişi, beş kurgusal gözlemdir; gerçek UCL araştırma verisi değildir. Her kişinin iki zamandaki puanını karşılaştır.

KişiÖn testSon test
A1214
B1013
C1413
DNA15
E912

Öğrenci başlangıç dosyasını indir ve aşağıdaki işlemleri sırayla uygula. Bilgisayarın sonucu vermesinden önce kendi tahminini yaz.

id     <- c("A", "B", "C", "D", "E")
before <- c(12, 10, 14, NA, 9)
after  <- c(14, 13, 13, 15, 12)
delta  <- after - before

data.frame(id, before, after, delta)
mean(delta, na.rm = TRUE)
sum(delta > 0, na.rm = TRUE)
  1. A kişisinin değişimi kaç puan? C kişisinin değişimi pozitif mi negatif mi?
  2. D kişisinin ön test puanı yoksa, gerçek değişimini hesaplayabilir misin?
  3. Değişimi hesaplanabilen kaç kişi var? Bunların kaçında artış var?
  4. Tüm son test puanlarının ortalaması ile eşleştirilmiş değişim ortalaması neden aynı soruyu yanıtlamıyor?

İsteğe bağlı: karar, tekrar ve kendi fonksiyonun

Birinci haftadan önce bunları ustalıkla yazmak zorunda değilsin. Önce bilgisayarın ne yapmasını istediğini anla; sonra koşul, döngü ve fonksiyonlarla yeniden kullanılabilir komutlar oluşturabilirsin.

if (sum(!is.na(scores)) > 0) {
  average <- mean(scores, na.rm = TRUE)
} else {
  average <- NA_real_
}
print(average)

for (number in c(2, 4, 6)) {
  print(number)
}

double <- function(x) {
  2 * x
}
double(c(1, 2, 3))

Tahmin et: Bütün puanlar NA olsaydı ne olurdu? Döngü neyi basacak? R vektörün bütün elemanlarını döngüsüz ikiyle çarpabilir mi?

R'de birçok işlemin vektörleştirilmiş karşılığı vardır. Döngü de kullanılabilir; önemli olan probleme uygun, açık yöntemi seçmektir.

Özgün uygulama bankası

Kavramsal · Uygulamalı · Hata ayıklama

A1 · Algoritmayı sözle anlat

Bir ankette boş bırakılmış yanıtları hariç tutup ortalamayı bulmanın algoritmasını kod kullanmadan 4–6 adımda açıkla.

İpucu göster

İşin girdisini, eksik veri kuralını ve çıktısını ayrı belirt.

A2 · Çıktıyı tahmin et

`x <- c(2, 4, 6)` ve `mean(x)` çalıştığında ne olacağını tahmin et; sonra çalıştır.

İpucu göster

R önce nesne atamasını, sonra fonksiyon çağrısını değerlendirir.

B1 · Geçerli gözlem sayısı

Ön test vektöründe kaç kişinin geçerli puanı olduğunu `sum(!is.na(before))` ile bul ve nedenini açıkla.

İpucu göster

`is.na()` eksikleri; `!` değili gösterir.

B2 · Değişimin yönü

`delta <- after - before` oluştur. Kaç kişinin puanı arttı, kaçının azaldı? Eksikleri doğru ele al.

İpucu göster

Mantıksal koşulları ve `na.rm` kuralını düşün.

C1 · Yanlış ortalama

`mean(before)` neden NA? `mean(before, na.rm=TRUE)` ile neyi değiştirdin? Bu eksikliği tümden çözer mi?

İpucu göster

Çalışan kod her zaman yeterli araştırma kararı değildir.

C2 · Yanlış çıkarım

Bir grubun son test ortalaması daha yüksek çıkmış olsun. 'Uygulama kesin işe yaradı' demek neden hatalı olabilir?

İpucu göster

Eşleştirme, kayıp gözlemler ve nedensellik üzerine düşün.

Yeni başlayanların en sık karıştırdıkları

  • `<-` atamadır, `==` iki değerin eşit olup olmadığını sınar.
  • `NA` eksik/bilinmeyen değerdir; 0 ile değiştirmenin gerekçesi gerekir.
  • `mean(x)` ile `mean(x, na.rm=TRUE)` aynı veri kuralını kullanmaz.
  • Bir grafik veya çalışan komut, ölçümün ve yorumu doğru olduğunu kanıtlamaz.
  • Kaynağın veri sözlüğü, kodların 0/1 veya 1/2 anlamlarını yorumlarken kontrol edilmelidir.

Sonraki dört hafta ile bağlantı

Hafta 1

Nesne, fonksiyon, vektör ve veri çerçevesine geç.

Hafta 2

CSV, veri birleştirme ve filtreleme; yanlış etiketlenen kodlara dikkat et.

Hafta 3

AQ-10 puanlama sürecini küçük işlemlere böl; her birleştirmeyi test et.

Hafta 4

Grafik seçimini ve yorum sınırlarını programlama kararlarıyla ilişkilendir.

Beş soruluk çıkış bileti

  1. Programlama ile kod yazma arasındaki fark nedir?
  2. R ve RStudio aynı şey midir?
  3. Bir problemi koda dönüştürmeden önce hangi üç şeyi tanımlamalısın?
  4. Bir sayı vektöründe NA varsa neyi kontrol edersin?
  5. Bir program hatasız çalıştığı hâlde niçin yanlış sonuca götürebilir?

Alıştırma dosyası

Yalnız base R kullanılır; paket kurulumu gerekmez. Kodun bazı bölümleri intentionally TODO olarak bırakıldı.

Öğrenci başlangıç R betiğini indirR Lab ana sayfasına dön