2011-10-19 22 views
0

MATLABグループ統計関数(grpstatsなど)を各観測値が複数のグループに属するデータに使用したいと考えています。たとえば、ピザは{'pepperoni'、 'mushroom'、 'onions'}や{'pepperoni'}といったものを持っていて、トッピングでグループ統計を欲しがります:ピザのすべてが 'pepperoni'キノコなど」matlab:複数のグループに属する観測値のグループ化

また、手でこれを行う方法がわかっている場合は、邪魔にならないように反復することも役立ちます。

答えて

0

繰り返し測定値を異なる行に入力するだけです。たとえば、次のように

store = repmat(cellstr(num2str((1:3)')), 3, 1); 
type = repmat({'pepperoni', 'mushrooms', 'onions'}, 3, 1); 
type = Type(:); 
score = dataset({randn(9,3), 'taste', 'looks', 'price'}); 

data = [dataset(store, type) score]; 

grpstats(data(:,2:end), 'type') 

生データ:

>> data 

data = 

    store  type    taste  looks  price 
    '1'  'pepperoni'  -0.19224 -0.44463 -0.50782 
    '2'  'pepperoni'  -0.27407 -0.15594 -0.32058 
    '3'  'pepperoni'   1.5301  0.27607 0.012469 
    '1'  'mushrooms'  -0.24902 -0.26116  -3.0292 
    '2'  'mushrooms'   -1.0642  0.44342 -0.45701 
    '3'  'mushrooms'   1.6035  0.39189  1.2424 
    '1'  'onions'    1.2347  -1.2507  -1.0667 
    '2'  'onions'   -0.22963 -0.94796  0.93373 
    '3'  'onions'   -1.5062 -0.74111  0.35032 

グループの統計:

>> grpstats(data(:,2:end), 'type') 

ans = 

       type    GroupCount mean_taste mean_looks mean_price 
    pepperoni 'pepperoni'  3    0.35459  -0.10817  -0.27197 
    mushrooms 'mushrooms'  3    0.09674  0.19138  -0.74791 
    onions  'onions'   3    -0.16704  -0.97992  0.072449 
+0

おかげ - これは明らかに動作します。一般的な解決策としては、いくつかの理由から私には理想的ではないと思われます。グループごとにフィルタリングする/しない場合は、リピートを崩壊することを覚えておく必要があります。多くのグループ。しかし、それは最も安価なソリューションかもしれません。 – Edward

+0

@エドワード私は、最初はテーブルにまったく新しい行を置くのはちょっと面倒だと思うのですが、実際のデータベースでは既存の観測にタグを追加するだけです。しかし、これはほとんどの統計プログラムでデータを構造化する標準的な方法です。それについての1つの良い点は、データの複雑な論理的なサブセッティングを行うことが自明であることです。例えば、 'store'と' type'のユニークな組み合わせごとにヒストグラムの行列を作りたいとしたらどうでしょうか?この組織では、それを簡単に行うことができます。 –

関連する問題