R數(shù)據(jù)分析:如何理解模型中的“控制”,圖例展示
如果兩個(gè)變量有共變關(guān)系,我們就可以用其中一個(gè)變量來預(yù)測另外一個(gè)變量的走勢,如果這種共變關(guān)系是一種因果關(guān)系,我們就可以在統(tǒng)計(jì)分析中對(duì)其進(jìn)行控制。
有點(diǎn)不好理解,所以今天給大家準(zhǔn)備了實(shí)例,并且用圖形給大家說明這個(gè)問題。
實(shí)例操練
今天用的數(shù)據(jù)依然是R自帶的diamonds數(shù)據(jù)集,數(shù)據(jù)變量什么意思請(qǐng)大家自行百度。
在上一篇文章中,我們用箱型圖畫出不同的cut上鉆石價(jià)格的分布如下圖

在上面的圖中我們可以看到隨著鉆石的cut越好,似乎鉆石的價(jià)格越低,這個(gè)關(guān)系明顯是不符合常理的,值得探討一下。
其實(shí)探討cut、price之間的關(guān)系是挺復(fù)雜的一個(gè)事情,因?yàn)閏ut和carat, carat和price之間都有緊密的關(guān)系,所以我們現(xiàn)在的思路就是說,希望能夠在去除了carat對(duì)price的效應(yīng)之后,再看cut和price的關(guān)系。
下面的代碼建立了carat和price的模型,并且計(jì)算了模型的殘差(就是預(yù)測值和實(shí)際值的區(qū)別),殘差就反映了因變量未被自變量解釋的部分,在本例中就是price的變異中carat解釋不了的部分。
- library(modelr)
- mod <- lm(log(price) ~ log(carat), data = diamonds)
- diamonds2 <- diamonds %>% add_residuals(mod) %>%
- mutate(resid = exp(resid))
- ggplot(data = diamonds2) + geom_point(mapping = aes(x = carat, y = resid))
上面的代碼同時(shí)還做出了carat與模型殘差的散點(diǎn)圖,可以看出只用carat來解釋price是不太好的。
那么摳掉了carat和price的關(guān)系之后,怎么看cut和price的關(guān)系呢?代碼如下:
- ggplot(data = diamonds2) +
- geom_boxplot(mapping = aes(x = cut, y = resid))
這個(gè)時(shí)候我們是用cut為自變量,殘差為因變量進(jìn)行了作圖,也就是看一看摳掉了carat對(duì)price的效應(yīng)后,cut對(duì)price的實(shí)際的關(guān)系,可以看到這回隨著cut越來越好,price也愈來愈高,這下就對(duì)了。
實(shí)際上,上面的過程就是一個(gè)統(tǒng)計(jì)控制的過程,我們?cè)诳碿ut對(duì)price的關(guān)系的時(shí)候需要控制掉carat對(duì)price的關(guān)系,這樣得到的結(jié)果才是純凈的結(jié)果,有興趣的同學(xué)還可以去看一看控制變量和混雜變量的區(qū)別,嘿嘿。
小結(jié)
今天用一個(gè)實(shí)際的例子給大家寫了統(tǒng)計(jì)控制,感謝大家耐心看完。發(fā)表這些東西的主要目的就是督促自己,希望大家關(guān)注評(píng)論指出不足,一起進(jìn)步。內(nèi)容我都會(huì)寫的很細(xì),用到的數(shù)據(jù)集也會(huì)在原文中給出鏈接,你只要按照文章中的代碼自己也可以做出一樣的結(jié)果,一個(gè)目的就是零基礎(chǔ)也能懂,因?yàn)樽约壕褪鞘裁椿A(chǔ)沒有從零學(xué)Python和R的,加油。