Statistics Toolbox | ![]() ![]() |
Cross-tabulation of several vectors
Syntax
table = crosstab(col1,col2) table = crosstab(col1,col2,col3,...) [table,chi2,p] = crosstab(col1,col2) [table,chi2,p,label] = crosstab(col1,col2)
Description
table = crosstab(col1,col2)
takes two vectors of positive integers and returns a matrix, table, of cross-tabulations. The ijth element of table contains the count of all instances where col1
= i and col2
= j.
Alternatively, col1
and col2
can be vectors containing noninteger values, character arrays, or cell arrays of strings. crosstab
implicitly assigns a positive integer group number to each distinct value in col1
and col2
, and creates a cross-tabulation using those numbers.
returns table = crosstab(col1,col2,col3,...)
table
as an n-dimensional array, where n is the number of arguments you supply. The value of table(i,j,k,...)
is the count of all instances where col1
= i, col2
= j, col3
= k, and so on.
[table,chi2,p] = crosstab(col1,col2)
also returns the chi-square statistic, chi2
, for testing the independence of the rows and columns of table
. The scalar p
is the significance level of the test. Values of p
near zero cast doubt on the assumption of independence of the rows and columns of table.
also returns a cell array [table,chi2,p,label] = crosstab(col1,col2)
label
that has one column for each input argument. The value in label(
i
,
j
)
is the value of col
j
that defines group i in the jth dimension.
Example 1
We generate 2 columns of 50 discrete uniform random numbers. The first column has numbers from 1 to 3. The second has only the numbers 1 and 2. The two columns are independent so we would be surprised if p
were near zero.
r1 = unidrnd(3,50,1); r2 = unidrnd(2,50,1); [table,chi2,p] = crosstab(r1,r2) table = 10 5 8 8 6 13 chi2 = 4.1723 p = 0.1242
The result, 0.1242, is not a surprise. A very small value of p
would make us suspect the "randomness" of the random number generator.
Example 2
We have data collected on several cars over a period of time. How many four-cylinder cars were made in the USA during the late part of this period?
[t,c,p,l] = crosstab(cyl4,when,org); l l = 'Other' 'Early' 'USA' 'Four' 'Mid' 'Europe' [] 'Late' 'Japan' t(2,3,1) ans = 38
See Also
tabulate
![]() | cov | daugment | ![]() |