Modelowanie logarytmicznie przekształconych dochodów
W tym ćwiczeniu przećwiczysz modelowanie z logarytmicznie przekształconą zmienną docelową, a następnie odwrócisz transformację, by z powrotem uzyskać wartości w jednostkach pieniężnych. Wczytane dane zawierają dochody badanych z 2005 roku (Income2005) oraz wyniki kilku testów uzdolnień przeprowadzonych w 1981 roku:
ArithWordParagMathAFQT(percentyl w teście Armed Forces Qualifying Test)
Dane zostały już podzielone na zbiory treningowy i testowy (income_train oraz income_test) i są wstępnie wczytane. Zbudujesz model log(dochodu) na podstawie wyników testów, a następnie przekształcisz log(dochodu) z powrotem na dochód.
To ćwiczenie jest częścią kursu
Nadzorowane uczenie maszynowe w R: regresja
Instrukcje do ćwiczenia
- Wywołaj
summary()naincome_train$Income2005, aby zobaczyć statystyki opisowe dochodów w zbiorze treningowym. - Zapisz formułę wyrażającą
log(Income2005)jako funkcję pięciu testów i przypisz ją do zmiennejfmla.log. Wyświetl ją. - Dopasuj liniowy model
log(Income2005)do danychincome_train:model.log. - Użyj
model.log, aby przewidzieć dochody na zbiorzeincome_test. Wynik zapisz w kolumnielogpred.- Wywołaj
summary()nalogpredi sprawdź, że wartości bardzo różnią się skalą od wartościIncome2005.
- Wywołaj
- Odwróć transformację logarytmiczną, aby uzyskać przewidywania w jednostkach pieniężnych:
exp(income_test$logpred).- Wywołaj
summary()napred.incomei sprawdź, że wartości mają teraz podobną skalę doIncome2005.
- Wywołaj
- Uzupełnij brakujące fragmenty, aby narysować wykres punktowy przewidywanych dochodów w stosunku do rzeczywistych dochodów w zbiorze testowym.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# Examine Income2005 in the training set
___
# Write the formula for log income as a function of the tests and print it
(fmla.log <- ___)
# Fit the linear model
model.log <- ___
# Make predictions on income_test
income_test$logpred <- ___
summary(income_test$logpred)
# Convert the predictions to monetary units
income_test$pred.income <- ___
summary(income_test$pred.income)
# Plot predicted income (x axis) vs income
ggplot(___, aes(x = ___, y = ___)) +
geom_point() +
geom_abline(color = "blue")