【應用】R--判斷類別型屬性之間是否有相關性(相互之間是否獨立)


檢驗某學區所有在售房源中,小區與樓棟類別(低層;多層;小高層;高層)是否相關

導入數據:

> house<- read.table("house_data.txt", header = TRUE, sep='|',fileEncoding ="UTF-8",
                  stringsAsFactors = FALSE, 
                  colClasses = c("character","character","numeric",
                                 "character","numeric","numeric","character",
                                 "numeric","numeric","character"))
> library(sqldf)

> houseXQ<- sqldf("select * from house where  community_name!='東郊小鎮' ",row.names=TRUE)

 > head(houseXQ)

  結果如下:

 

                   id community_name house_area house_structure house_total house_avg    agency_name house_floor_curr house_floor_total
1 6328500962692431872       尚東花園         77          3室2廳         285     37013       利眾置業                5                 5
2 6328500979813580800     賽世香樟園         93          2室2廳         265     28495 蘇商房產仙林店                9                11
3 6328501016647958528       雁鳴山庄         84          2室2廳         246     29286       個人房源                4                 5
4 6328501019412004864       仙林新村         58          2室2廳         155     26724     蘇恆不動產                5                 6
5 6328501019420393472       仙林新村         61          2室2廳         160     26230     蘇恆不動產                4                 6
6 6328501019428782080       仙林新村         59          2室2廳         161     27288     蘇恆不動產                4                 6
  house_floor_type
1             多層
2           小高層
3             多層
4             多層
5             多層
6             多層

 

 

 

 

 

 

 

 

 

 

生成列聯表(頻數表):

> houseTable<- xtabs(~community_name + house_floor_type, data=houseXQ)

  

看一下新表格:

> houseTable

結果如下:

house_floor_type
community_name None 低層 多層 高層 小高層
    東方天郡      0    1    2   46      2
    康橋聖菲      0    1    8    0      0
    南師大茶苑    1    0    0    0      0
    賽世香樟園    0    0    0    2      1
    三味公寓      0    0    2    0      0
    尚東花園      0    0    1    0      0
    仙鶴山庄      0    0    1    0      0
    仙林新村      0    0    7    0      0
    亞東城        0    0    1   46     62
    雁鳴山庄      0    0    4    0      0
    詠梅山庄      0    0    1    0      0
從數據可以直觀看出來,康橋聖菲可能都是多層的,亞東城是小高層(11層)和高層(18層)
使用  CrossTable()函數生成頻數表:
> CrossTable(houseXQ$community_name, houseXQ$house_floor_type)

  結果如下:

 Cell Contents
|-------------------------|
|                       N |
| Chi-square contribution |
|           N / Row Total |
|           N / Col Total |
|         N / Table Total |
|-------------------------|
 
Total Observations in Table:  189 
 
                       | houseXQ$house_floor_type 
houseXQ$community_name |      None |      低層 |      多層 |      高層 |    小高層 | Row Total | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
              東方天郡 |         0 |         1 |         2 |        46 |         2 |        51 | 
                       |     0.270 |     0.393 |     3.835 |    16.787 |    13.768 |           | 
                       |     0.000 |     0.020 |     0.039 |     0.902 |     0.039 |     0.270 | 
                       |     0.000 |     0.500 |     0.074 |     0.489 |     0.031 |           | 
                       |     0.000 |     0.005 |     0.011 |     0.243 |     0.011 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
              康橋聖菲 |         0 |         1 |         8 |         0 |         0 |         9 | 
                       |     0.048 |     8.595 |    35.063 |     4.476 |     3.095 |           | 
                       |     0.000 |     0.111 |     0.889 |     0.000 |     0.000 |     0.048 | 
                       |     0.000 |     0.500 |     0.296 |     0.000 |     0.000 |           | 
                       |     0.000 |     0.005 |     0.042 |     0.000 |     0.000 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
            南師大茶苑 |         1 |         0 |         0 |         0 |         0 |         1 | 
                       |   187.005 |     0.011 |     0.143 |     0.497 |     0.344 |           | 
                       |     1.000 |     0.000 |     0.000 |     0.000 |     0.000 |     0.005 | 
                       |     1.000 |     0.000 |     0.000 |     0.000 |     0.000 |           | 
                       |     0.005 |     0.000 |     0.000 |     0.000 |     0.000 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
            賽世香樟園 |         0 |         0 |         0 |         2 |         1 |         3 | 
                       |     0.016 |     0.032 |     0.429 |     0.173 |     0.001 |           | 
                       |     0.000 |     0.000 |     0.000 |     0.667 |     0.333 |     0.016 | 
                       |     0.000 |     0.000 |     0.000 |     0.021 |     0.015 |           | 
                       |     0.000 |     0.000 |     0.000 |     0.011 |     0.005 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
              三味公寓 |         0 |         0 |         2 |         0 |         0 |         2 | 
                       |     0.011 |     0.021 |    10.286 |     0.995 |     0.688 |           | 
                       |     0.000 |     0.000 |     1.000 |     0.000 |     0.000 |     0.011 | 
                       |     0.000 |     0.000 |     0.074 |     0.000 |     0.000 |           | 
                       |     0.000 |     0.000 |     0.011 |     0.000 |     0.000 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
              尚東花園 |         0 |         0 |         1 |         0 |         0 |         1 | 
                       |     0.005 |     0.011 |     5.143 |     0.497 |     0.344 |           | 
                       |     0.000 |     0.000 |     1.000 |     0.000 |     0.000 |     0.005 | 
                       |     0.000 |     0.000 |     0.037 |     0.000 |     0.000 |           | 
                       |     0.000 |     0.000 |     0.005 |     0.000 |     0.000 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
              仙鶴山庄 |         0 |         0 |         1 |         0 |         0 |         1 | 
                       |     0.005 |     0.011 |     5.143 |     0.497 |     0.344 |           | 
                       |     0.000 |     0.000 |     1.000 |     0.000 |     0.000 |     0.005 | 
                       |     0.000 |     0.000 |     0.037 |     0.000 |     0.000 |           | 
                       |     0.000 |     0.000 |     0.005 |     0.000 |     0.000 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
              仙林新村 |         0 |         0 |         7 |         0 |         0 |         7 | 
                       |     0.037 |     0.074 |    36.000 |     3.481 |     2.407 |           | 
                       |     0.000 |     0.000 |     1.000 |     0.000 |     0.000 |     0.037 | 
                       |     0.000 |     0.000 |     0.259 |     0.000 |     0.000 |           | 
                       |     0.000 |     0.000 |     0.037 |     0.000 |     0.000 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
                亞東城 |         0 |         0 |         1 |        46 |        62 |       109 | 
                       |     0.577 |     1.153 |    13.636 |     1.244 |    16.030 |           | 
                       |     0.000 |     0.000 |     0.009 |     0.422 |     0.569 |     0.577 | 
                       |     0.000 |     0.000 |     0.037 |     0.489 |     0.954 |           | 
                       |     0.000 |     0.000 |     0.005 |     0.243 |     0.328 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
              雁鳴山庄 |         0 |         0 |         4 |         0 |         0 |         4 | 
                       |     0.021 |     0.042 |    20.571 |     1.989 |     1.376 |           | 
                       |     0.000 |     0.000 |     1.000 |     0.000 |     0.000 |     0.021 | 
                       |     0.000 |     0.000 |     0.148 |     0.000 |     0.000 |           | 
                       |     0.000 |     0.000 |     0.021 |     0.000 |     0.000 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
              詠梅山庄 |         0 |         0 |         1 |         0 |         0 |         1 | 
                       |     0.005 |     0.011 |     5.143 |     0.497 |     0.344 |           | 
                       |     0.000 |     0.000 |     1.000 |     0.000 |     0.000 |     0.005 | 
                       |     0.000 |     0.000 |     0.037 |     0.000 |     0.000 |           | 
                       |     0.000 |     0.000 |     0.005 |     0.000 |     0.000 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|
          Column Total |         1 |         2 |        27 |        94 |        65 |       189 | 
                       |     0.005 |     0.011 |     0.143 |     0.497 |     0.344 |           | 
-----------------------|-----------|-----------|-----------|-----------|-----------|-----------|

獨立性檢驗

1、卡方檢驗:對二維表的行變量和列變量進行卡方獨立性檢驗。

卡方分布—— n個獨立的標准正態分布變量的平方和服從自由度為 n 的卡方分布(分類資料相關性檢驗)

http://www.cnblogs.com/quietwalk/p/8276097.html

假設:樓盤與類型相互獨立,沒有相關性。

對上面生成的列聯表 houseTable 進行卡方檢驗:

> chisq.test(houseTable)

  結果:

Pearson's Chi-squared test

data:  houseTable
X-squared = 403.62, df = 40, p-value < 2.2e-16 
Warning message: In chisq.test(houseTable) : Chi-squared近似算法有可能不准

P值 <0.05進行說明假設【樓盤與類型相互獨立,沒有相關性】不成立。
也就是說,哪個小區里面有什么樣的樓(是低層,多層,小高層,高層)是確定的(因為早在建造前規划的時候就定了呀~~~)

不可能說要建個小區,然后開發商擲個東南西北的色子:
如果結果是東,就建低層;如果結果是西,就建多層;如果結果是南,就建小高層;如果結果是北,就建高層。
如果是這樣的話,那么小區與樓的類型就沒有相關性。


2、Fisher精確檢驗:原假設為——邊界固定的列聯表中行和列是相互獨立的。
>fisher.test(houseTable,simulate.p.value=TRUE,B=2000)

結果為:

Fisher's Exact Test for Count Data with simulated p-value (based on 2000 replicates)

data:  houseTable
p-value = 0.0004998
alternative hypothesis: two.sided

說明:可以看出,p值<0.05,原假設不成立,即相互獨立不成立,
houseXQ$community_name 與 houseXQ$house_floor_type具有相關性。
注意:
如果直接用fisher.test(houseTable)會報以下錯誤:
FEXACT error 6.
LDKEY is too small for this problem.
Try increasing the size of the workspace.
但是如果simulate.p.value=TRUE,B=2000,設置了蒙特卡洛模擬和模擬次數,用fisher檢驗就不會出錯。


3、 Cochran-Mantel-Haenszel 檢驗
原假設為:兩個類別變量在第三個變量的每一層中都是條件獨立的。
>houseTable<- xtabs(~community_name + house_floor_type + house_structure, data=houseXQ)
>houseTable
> mantelhaen.test(houseTable)

  

Error in mantelhaen.test(houseTable) : 每個階層里的樣本大小都必需大於一


 




 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM