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

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