Problém 1: Ceny nemovitostí Poznámkykřešení 1 Zadání 1.Majínemovitostiurčenékbydlenívyššícenutam,kdeječistšíovzduší?Pokudano,okolik? 2. Lze vztah mezi znečištěním a cenou, pokud existuje, vysvětlit tím, že ve znečištěných oblastech bydlí chudší lidé, menšiny, jsou tam horší veřejné služby, atd.? 3. Myslíte, že cílený program na zlepšení čistoty ovzduší by vedl ke zvýšení cen rodinných domků v dané lokalitě? Postup Načtu data: data1 <- read.csv("cvic1.csv") Ověřím si velikost dat a jména veličin: names(data1); dim(data1) Vypíšu si základní popisné charakteristiky veličin: summary(data1) Vidím, že(i) v datech nejsou chybějící hodnoty;(ii) všechny veličiny jsou spojité kromě chas, která je nula-jedničková. Zajistím si přímý přístup k veličinám: attach(data1). Podívám se na nejdůležitější veličiny podrobněji. Např. histogramy(hist(medv), hist(nox)), tabulky četností: > table(cut(nox,c(-inf,seq(0.4,0.8,by=0.1),inf))) (-Inf,0.4] (0.4,0.5] (0.5,0.6] (0.6,0.7] (0.7,0.8] (0.8,Inf] 11 181 149 104 45 16 > table(cut(medv,c(-inf,seq(5,30,by=5),inf))) (-Inf,5] (5,10] (10,15] (15,20] (20,25] (25,30](30,Inf] 2 22 73 118 167 40 84 Prozkoumám popisně vztah mezi nox a medv. Např. obrázek(scatterplot) vyhlazený neparametrickou křivkou lowess:(plot(nox,medv); lines(lowess(nox,medv))) nebo tabulku průměrů medv podle intervalů nox: > tapply(medv,cut(nox,c(-inf,seq(0.4,0.8,by=0.1),inf)),mean) (-Inf,0.4] (0.4,0.5] (0.5,0.6] (0.6,0.7] (0.7,0.8] (0.8,Inf] 25.48182 26.68729 21.70268 19.92885 16.04000 16.42500 Uvědomímsi,ženoxnabýváhodnotzhrubamezi0.4a0.9.Abychlépeviděl,coznamenajíparametryv mých modelech, udělám transformaci tnox <- (nox-0.4)/0.1. Absolutní člen v mých modelech bude nyníudávatprůměrnoucenunemovitostípřikoncentracino x =0.4 10 7 (nikoliv0)aparametrunox budeudávatzměnucenypřinárůstuno x o0.1 10 7 (nikolio1). První model, který vyzkouším, bude fit1 <- lm(medv~tnox). Dostanu 1 MichalKulich,KPMSMFFUK
Call: lm(formula = medv ~ tnox) Residuals: Min 1Q Median 3Q Max -13.691-5.121-2.161 2.959 31.310 (Intercept) 27.7795 0.6176 44.98 <2e-16*** tnox -3.3916 0.3196-10.61 <2e-16*** Residual standard error: 8.323 on 504 degrees of freedom Multiple R-Squared: 0.1826, Adjusted R-squared: 0.181 F-statistic: 112.6 on 1 and 504 DF, p-value: < 2.2e-16 Vidím,žeprůměrnácenadomupřikoncentraciNO x =0.4jest$27780acenaklesáo$3392snárůstem koncentrace o 0.1. Nicméně z výběrových kvantilů pro residua ve výšeuvedeném výpisu si hned všimnu, že residua jsou silně asymetrická. Totéž potvrdí obrázek qqnorm(resid(fit1)). Zkusímztransformovatcenulogaritmem.Dostanumodellog(Y)=β 0 + β 1 X+ ε,čili Y =e β0 e β1x e ε. MámtedyE(Y X= x)=e β0 e β1x Ee ε.poděleníme(y X= x+1)ae(y X= x)dostanupřesně e β1,takže100(e β1 1)můžuinterpretovatjakopercentuálnípřírůstek/úbytekE Y přizměně Xojednu jednotku(tj.nárůstukoncentraceno x o0.1).obecněnemohutvrdit,žee β0 jestřednícenanemovitosti přikoncentracino x =0.4,alezapředpokladusymetrierozděleníchyb εlzeříci,žee β0 jemediánem cenynemovitostipřikoncentracino x =0.4. Tak tedy fit2 <- lm(log(medv)~tnox): Call: lm(formula = log(medv) ~ tnox) Residuals: Min 1Q Median 3Q Max -1.17597-0.19503-0.03334 0.18223 1.08159 (Intercept) 3.31314 0.02610 126.92 <2e-16*** tnox -0.18011 0.01351-13.33 <2e-16*** Residual standard error: 0.3518 on 504 degrees of freedom Multiple R-Squared: 0.2607, Adjusted R-squared: 0.2592 F-statistic: 177.7 on 1 and 504 DF, p-value: < 2.2e-16 Se symetrií residuí jsme si dost pomohli, což potvrdí i qqnorm(fit2). Ještě ztransformuji parametry: > exp(coef(fit2)) (Intercept) tnox 27.4712390 0.8351754 2
Obrázek 1: Porovnání lineárního a kubického modelu pro logaritmus ceny. medv 10 20 30 40 50 0 1 2 3 4 tnox Odhadnutýmediáncenydomupřikoncentraci0.4jetedy$27471.Cenadomuvprůměruklesáo16.5% při nárůstu koncentrace o 0.1. JeštěsezabývejmenelineárnítransformacíNO x.zkusímetřebapolynomtřetíhořádu: > fit3 <- lm(log(medv)~poly(tnox,3)) > anova(fit2,fit3) Analysis of Variance Table Model 1: log(medv) ~ tnox Model 2: log(medv) ~ poly(tnox, 3) Res.Df RSS Df Sum of Sq F Pr(>F) 1 504 62.378 2 502 59.297 2 3.081 13.044 3.002e-06*** 3
Jelikož původní model je vnořený do tohoto modelu, můžeme otestovat rozdíl mezi nimi F-testem. Ten je vysoce významný. Teď je nejlepší udělat si obrázek, abychom viděli, v čem se oba modely liší. Nakreslíme si predikce odezvy z obou modelů do jednoho obrázku(všimněte si použití funkce predict()): noxpts <- seq(min(tnox),max(tnox),length=300) newdata <- data.frame(tnox=noxpts) fitted2 <- exp(predict(fit2,newdata)) fitted3 <- exp(predict(fit3,newdata)) plot(tnox,medv) lines(noxpts,fitted2,lty=1) lines(noxpts,fitted3,lty=2) Výsledekjenaobrázku1.Vidíme,že(i)vrozmezítnoxod0.5do3.5jevztahvpodstatělineárníaoba modely se liší jen málo;(ii) největší rozdíly mezi oběma jsou pro nejmenší a největší hodnoty znečištění; (iii) polynomiální model naznačuje, že pro znečištění menší než cca. 0.5 anebo větší než cca. 0.75(na původníškále)jevlivkoncentraceno x nacenuminimální. Cosepřesněnaoboukoncíchděje,tojetěžkosoudit.Zobrázku1jevidět,žedataoznečištěníjsou podezřele seskupená například hodnoty znečištění větší než 3 jsou prakticky diskrétní. To může být způsobeno metodikou měření(zaokrouhlování), nebo tím, že některé lokality jsou natolik blízko sebe, že jejich znečištění je prakticky stejné, nebo tím, že jeden měřicí přístroj udává hodnotu znečištění pro několik sousedních lokalit. V posledních dvou případech bychom měli problém s předpokladem nezávislosti data ve skutečnosti přicházejí ve shlucích, ale o struktuře těchto shluků nemáme žádnou informaci. Závislost mezi pozorováními pak může způsobit zakřivení regresního vztahu při vysokých hodnotách znečištění. Budeme dál pokračovat v aplikaci lineárního modelu, ale měli bychom si uvědomovat, že předpoklady modelu nejspíš neplatí a být opatrní při interpretaci výsledků, které dostaneme. Nyní máme dvě možnosti: buď můžeme zvolit lineární závislost(a nelpět příliš na výsledcích pro oba extrémyno x ),nebopřejítkekubickézávislosti(amítpotížesvysvětlovánímjehoparametrů).jemožné vymyslet i něco jiného(třeba spojitou po částech lineární křivku), ale vyberme si pro jednoduchost první variantu, lineární vztah. Vzhledem k tomu, že v modelu fit2 má znečištění vysoce významný vztah k ceně nemovitosti, můžeme si i při evidentním porušení předpokladu nezávislosti dovolit vyslovit dost jednoznačný závěr. Odpovězme na otázku 1 takto: Cena nemovitosti statisticky významně souvisí se znečištěním ovzduší. Střednícenanemovitostivrůznýchlokalitách,kteréselišívkoncentraciNO x,klesázhrubao16.5%na každých0.1nárůstukoncentraceno x.vlivkoncentraceno x navelmilevnéanebovelmidrahénemovitosti může však být nižší než oněch průměrných 16.5%. Otázkač.2:Podívejmesenejprve,jaksouvisíkoncentraceNO x sostatnímiveličinami:totojsoujejich korelace: crim zn indus chas nox rm age dis rad [1,] 0.421-0.517 0.764 0.091 1-0.302 0.731-0.769 0.611 tax ptratio black lstat medv [1,] 0.668 0.189 0.348 0.591-0.427 Vidíme, že vyšší znečištění může souviset s vyšší kriminalitou, nižším podílem velkých pozemků, vyšší industrialisací, vyšším stářím domů, větší blízkostí do centra, vyšší daňovou sazbou a vyšší mírou chudoby. Možná, že ve skutečnosti cenu pozemku ovlivňují jen tyto faktory, zatímco znečištění nehraje roli. Abychom zjistili, zdali tomu tak je, pokusíme se od vlivu znečištění odečíst vlivy těchto vedlejších matoucích(confounding) faktorů. V principu stačí sestavit model, který obsahuje kromě nox i ostatní potenciální vysvětlující veličiny, a podívat se, zdali i potom nox významně souvisí s cenou. 4
Zkusíme model fitm1 <- lm(log(medv)~tnox+crim+zn+indus+chas+rm+age+dis+ rad+tax+ptratio+black+lstat) summary(fitm1)... (Intercept) 3.9442422 0.1699369 23.210 < 2e-16 *** tnox -0.0784671 0.0152409-5.1483.80e-07***... Člověkihnedvidí,žetentomodelvysvětlujecenupozemkumnohemlépeažeřadaznověpřidaných veličinmávelmiúzkývztahkceněpozemků.těchpár,kterénemají,můžemealenemusímezmodelu odstranit. Nás totiž nejvíc zajímá, co se stalo s koeficientem veličiny tnox. Ten je stále signifikantně různý od nuly, ale jeho hodnota se změnila. Hleďme: getci <- function(fit,var) { # get estimateand se for variablevar a <- summary(fit)$coef[var,1:2] # get 95% confidence interv. ci <- rep(a[1],2)+c(-1,1)*a[2]*qt(0.975,fit$df.residual) names(ci) <- c("lower","upper") exp(c(a[1],ci)) } > getci(fit2,"tnox") Estimate Lower Upper 0.8351754 0.8132990 0.8576402 > getci(fitm1,"tnox") Estimate Lower Upper 0.9245324 0.8972575 0.9526365 Zavedli jsme novou funkci getci(fit,var), která vysaje z odhadnutého modelu fit výsledky pro veličinu var(zadatjakoznakovýřetězecvuvozovkách)aspočteeˆβa95%intervalspolehlivostiproe β. Tutofunkci 2 použijemenafit2afitm1aporovnámevýsledkyprotnox.jevidět,žepůvodní16.5%-ní sníženíprůměrnécenypřivzrůstukoncentraceno x o0.1(95%-níintervalspolehlivosti14% 19%;viz modelfit2)sezměnilona8.5%-nísníženívmodelufitm1(interval5% 10%).Jetedyvidět,žeostatní veličiny,kteréjsmevzalivúvahu,vysvětlujízhrubapolovinupůvodněodhadnutéhuvlivuno x,alenikoli vliv celý. Odpověďnaotázkuč.2:OstatníuvažovanéfaktoryvysvětlujízhrubapolovinuvlivukoncentraceNO x nacenunemovitosti. Ikdyžjevezmemevúvahu,koncentraceNO x mástálenegativnívztahkceně nemovitosti a nárůst koncentrace o 0.1 vede ke snížení průměrné ceny o zhruba 8.5%. Odpověďnaotázkuč.3:Nelzevyloučitaniprokázat,žezlepšeníčistotyovzdušíbyvedlokezvýšenícen nemovitostí. I kdyby se tak stalo, jednalo by se pravděpodobně o zvýšení relativně malé. Závěrečná poznámka: Kdybychom chtěli dělat věci pořádně, museli bychom řádně prozkoumat funkcionální vztah všech veličin v modelu fitm1 k odezvě log(medv)(tj., potenciální transformace regresorů) a museli bychom uvažovat možné interakce mezi nimi. 2 Jistěbyšlapoužítifunkceconfint vkombinacisexp.getcijevšaksnadnoupravitelnáipromodely,naněžconfint nefunguje. 5