我有两组人,每个人的大小为n,具有不同的属性值,例如年龄。我已经绘制了两组的直方图,并看到了数据是如何分布的,给定k个箱子(大小相同)。但是,现在我想计算第1组和第2组的人在第1组中的比例,所以我可以计算比例之差。
只是为了清楚,我不想计算箱子的频率,我已经用"权重"做过了。
我的数据结构是:两个具有属性的矩阵(每个组一个)。每一行代表一个不同的属性(年龄代表ex),每一列代表一个人。
您想要的实现方式取决于您正在使用的数据结构。
对于DataFrames.jl
,您可以按照以下步骤进行操作。数据在df
julia> df
120×3 DataFrame
│ Row │ age │ groups │ bins │
│ │ Int64 │ String │ Categorical… │
├─────┼───────┼────────┼──────────────────┤
│ 1 │ 7 │ Group1 │ Q1: [0.0, 16.8) │
│ 2 │ 2 │ Group1 │ Q1: [0.0, 16.8) │
│ 3 │ 8 │ Group1 │ Q1: [0.0, 16.8) │
│ 4 │ 4 │ Group1 │ Q1: [0.0, 16.8) │
│ 5 │ 9 │ Group1 │ Q1: [0.0, 16.8) │
│ 6 │ 12 │ Group1 │ Q1: [0.0, 16.8) │
│ 7 │ 5 │ Group2 │ Q1: [0.0, 16.8) │
│ 8 │ 1 │ Group2 │ Q1: [0.0, 16.8) │
│ 9 │ 16 │ Group2 │ Q1: [0.0, 16.8) │
│ 10 │ 13 │ Group2 │ Q1: [0.0, 16.8) │
│ 11 │ 1 │ Group2 │ Q1: [0.0, 16.8) │
⋮
│ 109 │ 75 │ Group2 │ Q5: [71.4, 89.0] │
│ 110 │ 82 │ Group2 │ Q5: [71.4, 89.0] │
│ 111 │ 80 │ Group2 │ Q5: [71.4, 89.0] │
│ 112 │ 80 │ Group2 │ Q5: [71.4, 89.0] │
│ 113 │ 86 │ Group2 │ Q5: [71.4, 89.0] │
│ 114 │ 77 │ Group2 │ Q5: [71.4, 89.0] │
│ 115 │ 88 │ Group2 │ Q5: [71.4, 89.0] │
│ 116 │ 75 │ Group2 │ Q5: [71.4, 89.0] │
│ 117 │ 87 │ Group2 │ Q5: [71.4, 89.0] │
│ 118 │ 79 │ Group2 │ Q5: [71.4, 89.0] │
│ 119 │ 83 │ Group2 │ Q5: [71.4, 89.0] │
│ 120 │ 74 │ Group2 │ Q5: [71.4, 89.0] │
- 我们首先计算各组/bin cell的观察数
df2 = combine(groupby(df, [:groups, :bins]), :age => length => :num)
列:num
表示每个cell中obs的个数。
- 我们计算每组的观测数,然后将带有此信息的数据帧加入
df2
。我们计算比例并按bin/group 排序
df3 = combine(groupby(df, :groups), :age => length => :den)
df4 = join(df3, df2, on = :groups)
df4[:proportion] = df4.num./df4.den
sort!(df4, [:bins, :groups])
julia> df4
10×5 DataFrame
│ Row │ groups │ den │ bins │ num │ proportion │
│ │ String │ Int64 │ Categorical… │ Int64 │ Float64 │
├─────┼────────┼───────┼──────────────────┼───────┼────────────┤
│ 1 │ Group1 │ 43 │ Q1: [0.0, 16.8) │ 6 │ 0.139535 │
│ 2 │ Group2 │ 77 │ Q1: [0.0, 16.8) │ 18 │ 0.233766 │
│ 3 │ Group1 │ 43 │ Q2: [16.8, 36.6) │ 10 │ 0.232558 │
│ 4 │ Group2 │ 77 │ Q2: [16.8, 36.6) │ 14 │ 0.181818 │
│ 5 │ Group1 │ 43 │ Q3: [36.6, 52.4) │ 8 │ 0.186047 │
│ 6 │ Group2 │ 77 │ Q3: [36.6, 52.4) │ 16 │ 0.207792 │
│ 7 │ Group1 │ 43 │ Q4: [52.4, 71.4) │ 11 │ 0.255814 │
│ 8 │ Group2 │ 77 │ Q4: [52.4, 71.4) │ 13 │ 0.168831 │
│ 9 │ Group1 │ 43 │ Q5: [71.4, 89.0] │ 8 │ 0.186047 │
│ 10 │ Group2 │ 77 │ Q5: [71.4, 89.0] │ 16 │ 0.207792 │