Typowy rozkład wiekowy ludności w pewnym regionie jest zgodny z podanym w tabeli Typowe. Natomiast w tabeli Zaobserwowane przedstawiono rozkład wiekowy ludności z miasteczka znajdującego się w rozpatrywanym regionie. Sprawdź czy rozkład ten można uznać za zgodny z rozkładem typowym dla tego regionu.
kategorie <- c("<15", "15-24", "25-34", "35-44", "45-54", "55-64", "65-74", ">74")
Typowe <- c(475,304,182,190,208,170,111,72)
Zaobserwowane <- c(3016,2438,2037,2031,1253,977,585,163)
Sformuuj hipotezy zerową i alternatywną, zinterpretuj hipotezy. Przyjęty poziom istotności $\alpha = 0.01$.
# H0:
# H1:
alpha <- 0.01
Oblicz liczbę stopni swobody:
df <- length(Zaobserwowane)-1
Oblicz tabelę wartości oczekiwanych:
Oczekiwane <- Typowe/sum(Typowe) * sum(Zaobserwowane)
Oblicz wartość statystyki testowej:
chi2 <- sum((Zaobserwowane-Oczekiwane)^2/Oczekiwane)
chi2
Wyznacz wartość krytyczną i podejmij decyzję.
qchisq(1 - alpha,df)
# Odrzucamy H0
Wykonaj test korzystając z funkcji chisq.test()
, podając jako pierwszy argument liczebności zaobserwowane, a jako parametr p -- odpowiadające im prawdopodobieństwa założone w hipotezie zerowej
chisq.test(Zaobserwowane, p=Oczekiwane/sum(Oczekiwane))
Czyścimy workspace:
rm(list = ls())
Dane do tego zadania opisują wszystkie osoby (2201) na pokładzie dużego statku wycieczkowego z punktu widzenia 3 prostych atrybutów jakościowych i pewnego rodzaju, nieznanego, jakościowego atrybutu decyzyjnego (zadowolenie z wycieczki? sympatia do kapitana? Co to są za dane?). Sporządź tabelę wielodzielczą i wykres. Wykonaj test niezależności chi-kwadrat dla atrybutów: płeć i wiek, klasa i decyzja.
Dane <- read.csv(url("http://www.cs.put.poznan.pl/swilk/siad/11-cw2.csv"), sep=";")
Przyjmij poziom istotności 0.001:
alpha = 0.001
Utwórz tablicę wielodzielczą dla atrybutów wiek i płeć korzystając z funkcji table()
WiekPlec <- table(Dane$Age, Dane$Sex)
WiekPlec
Stwórz wykres tablicy korzystając z funkcji plot()
plot(WiekPlec)
Oblicz sumę obserwacji oraz liczebności brzegowe korzystając z funkcji margin.table()
podając jako pierwszy argument tablicę wielodzielczą, jako drugi 1 dla wierszy a 2 dla kolumn
margin_rows <- margin.table(WiekPlec, 1)
margin_cols <- margin.table(WiekPlec, 2)
total <- sum(margin_rows)
Oblicz liczbę stopni swobody:
df <- (length(margin_rows)-1)*(length(margin_cols)-1)
Oblicz tablicę wartości oczekiwanych. Utwórz macierz korzystając z funkcji outer(margin_rows, margin_cols)
, wykonującej iloczyn zewnętrzny/Kroneckera (iloczyny wszystkich kombinacji współrzędnych wektorów)
E =outer(margin_rows, margin_cols) / total
Oblicz wartość statystyki testowej:
chi2 <- sum((WiekPlec - E)^2/E)
chi2
Podaj wartość krytyczną i podejmij decyzję odnośnie hipotezy zerowej:
qchisq(1 - alpha, df)
Wykonaj test korzystając z funkcji chisq.test()
podając jako argument tablicę wielodzielczą
chisq.test(WiekPlec, correct=FALSE)
Wykonaj wszystkie powyższe czynności dla atrybutów klasa i decyzja. Tablica wielodzielcza:
KlasaDecyzja <- table(Dane$Class, Dane$Decision)
Wykres tablicy:
plot(KlasaDecyzja)
Suma obserwacji oraz liczebności brzegowe:
margin_rows <- margin.table(KlasaDecyzja, 1)
margin_cols <- margin.table(KlasaDecyzja, 2)
total <- sum(margin_rows)
Liczba stopni swobody:
df <- (length(margin_rows)-1)*(length(margin_cols)-1)
Tablica wartości oczekiwanych:
E =outer(margin_rows, margin_cols) / total
Wartość statystyki testowej:
chi2 <- sum((KlasaDecyzja - E)^2/E)
chi2
Wartość krytyczna i decyzja:
qchisq(1 - alpha, df)
# Odrzucamy H0
Test używając funkcji chisq.test()
:
chisq.test(KlasaDecyzja)
Czyszczenie przestrzeni roboczej:
rm(list = ls())
lotto <- read.csv("lotto.csv",sep="\t")
lotto
chisq.test(lotto$Wystąpień, p=rep(1/49, 49))