lecture
website icon
交叉表
×
website icon 資料管理 統計分析 相關資源 巨人肩膀 語法索引 關於作者
次數分配 集中趨勢 分散趨勢 交叉表

簡介

本部分介紹如何產生交叉表,使用到的指令包含:

Facebook Icon Twitter Icon LinkedIn Icon LINE Icon

交叉表或樞紐分析表,是最常使用的統計方法。大部分的情況,可以透過table()來呼叫交叉表。

交叉表

table()在只有單一變數的情況下,會自動產生次數分配表。

> table(class_12$english, useNA="ifany")
  61   66   68   73   77   81   86   89   90   96   97 ‹NA› 
   1    1    1    1    1    1    1    1    1    1    1    1 

有兩個變數才會產生交叉表。

> pass<-c("") #將成績分為及格與不及格
> pass[class_12$math<60]<-0 #不及格編碼為0
> pass[class_12$math>=60]<-1 #及格編碼為1
> pass<-factor(pass, levels=c(0,1), labels=c("no pass", "pass")) #變數命名
> table(class_12$gender, pass, useNA="ifany")
   pass
    no pass pass
  F       1    5
  M       1    4
  ‹NA›    0    1

邊際總和

所謂邊際總和就是各欄與各列的總和。margin.table()配合預設值1與2的功能,可以完成列與欄的加總計算。

> mathpass_table<-table(class_12$gender, pass, useNA="ifany")
> margin.table(mathpass_table, 1) #列(性別)加總

   F    M ‹NA› 
   6    5    1 
> margin.table(mathpass_table, 2) #欄(及格與否)加總
pass
no pass    pass 
      2      10 

一個更簡便的方法是透過addmargins()來計算:

> addmargins(mathpass_table)
     pass
       no pass pass Sum
  F          1    5   6
  M          1    4   5
  ‹NA›       0    1   1
  Sum        2   10  12

邊際機率

有了邊際總和後,可以計算出邊際機率:

> margin.table(mathpass_table, 1)/margin.table(mathpass_table)

         F          M       ‹NA› 
0.50000000 0.41666667 0.08333333 
> margin.table(mathpass_table, 2)/margin.table(mathpass_table)
pass
  no pass      pass
0.1666667 0.8333333

用addmargins()計算邊際機率:

> addmargins(prop.table(mathpass_table))
      pass
          no pass       pass        Sum
  F    0.08333333 0.41666667 0.50000000
  M    0.08333333 0.33333333 0.41666667
  ‹NA› 0.00000000 0.08333333 0.08333333
  Sum  0.16666667 0.83333333 1.00000000

round()指令四捨五入取到小數第2位:

> round(addmargins(prop.table(mathpass_table)), 2)
     pass
       no pass pass  Sum
  F       0.08 0.42 0.50
  M       0.08 0.33 0.42
  ‹NA›    0.00 0.08 0.08
  Sum     0.17 0.83 1.00

百分比

表格中每一個儲存格的百分比,可以直接呼叫prop.table()計算,此時分母是樣本總數:

> prop.table(mathpass_table)
      pass
          no pass       pass
  F    0.08333333 0.41666667
  M    0.08333333 0.33333333
  ‹NA› 0.00000000 0.08333333

列百分比,設定預設值1來計算:

> prop.table(mathpass_table, 1)
      pass
         no pass      pass
  F    0.1666667 0.8333333
  M    0.2000000 0.8000000
  ‹NA› 0.0000000 1.0000000

欄百分比,設定預設值2來計算:

> prop.table(mathpass_table, 2)
      pass
       no pass pass
  F        0.5  0.5
  M        0.5  0.4
  ‹NA›     0.0  0.1