6 Replies Latest reply on Aug 10, 2016 2:46 AM by Keita Ogawa

    近似直線の算出方法

    Keita Ogawa

      お世話になっております。

      前回投稿したものから若干条件が変更したので改めて投稿致します。

       

      私なりにNETでも調べてみたのですが

      近似線の傾きの値を算出する方法で目にしたのは以下の数式でした。

       

      a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2)

       

      これを当てはめれば良いのでしょうか。

       

      行いたいのは添付したワークシートで売上の上昇度、傾きの値を算出する方法です。

      DATEDIFFの期間単位はdayとしています。

       

       

      解り難いかもしれませんがどうぞ宜しくお願い致します。

      ご不明な点はお知らせ願います。

        • 1. Re: 近似直線の算出方法
          Shinichiro Murakami

          やはり、様々な条件によって数式の変更が必要でした。

          この場合は、月か日かではなくて、Null 値がどう計算されるかによって生じる差が大きかったように思います。

          (途中経過は全部掌握できないので詳細は分かりません)

           

          それと、ソートは難しそうです。代わりに、傾きの大きいものを緑でというように色分けなら可能かと思います。

           

          それと、LODを使用しているので、「DIFF_OF_DAY」や、「STORE_ID」でフィルタする場合、Context にしてください。

          参考 Tableauの処理の順番を知る(Query Pipeline) | Tableau Padawan's Tips & Tricks

           

           

           

          計算式に関しては、

          a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2)

           

           

           

          は同じものだと思います。参考  _: ŏ 搄 ʂ̓ o  (式の7,8)

          下の方が使いやすいかと思ったので、下のを使ってます。

           

          今ケースの最終的な計算式は  ↓ こうなりました。

          Null の関係だと思いますが、一部のカテゴリに関して、傾向線との数値に差が見られますが、一覧した限り、問題になるほどのものではありませんでした。

          試行錯誤でやってるので、最終的にはもう少しきれいにできるかも知れませんが、とりあえず動いたところでやめてます。

          カテゴリ以外のFieldを用いて同様のことをする場合、「カテゴリ」のところをそのFieldに置き換えればできると思いますが、実際のところはやってみないとわかりません。

           

          [Trend _ Slope 2]

          window_sum

          (

          (MAX([DIFF_OF_DAY])-(attr({fixed[カテゴリ]: min([DIFF_OF_DAY])})+attr({fixed[カテゴリ]: max([DIFF_OF_DAY])}))/2)

          *(SUM([売上])-attr({fixed[カテゴリ] : sum([売上])})/attr({fixed[カテゴリ] : countd([DIFF_OF_DAY])}))

          )

          /

          window_sum

          (

          (MAX([DIFF_OF_DAY])-(attr({fixed[カテゴリ]: min([DIFF_OF_DAY])})+attr({fixed[カテゴリ]: max([DIFF_OF_DAY])}))/2)

          ^2

          )

           

          グラフのシートはおまけです。詳細は紙面の影響(笑)で割愛しますが、「Slope Label」の計算式がややこしくなってます。

          Nullの兼ね合いで、 いちばん左端/(右端)に[Trend _ Slope 2] を表示させたかったのですが、出来なかったので、最大値の横に表示させるようにした結果です。

           

          [Slope Label]

          if sum([売上])

          = attr({fixed [カテゴリ]:max({fixed[カテゴリ],[DIFF_OF_DAY]:sum([売上])})})

          then "["+str(round([Trend _ Slope 2],2))+"]"

          end

           

          村上

          • 2. Re: 近似直線の算出方法
            Keita Ogawa

            村上さん

             

            返信遅れてすみません。

            週末添付して頂いたワークシートを見させて頂きました。

            かなり難易度高くて自分のものにできる程理解はまだ出来ていませんが

            もう少し粘って勉強してみます!

             

            ありがとうございました。

            • 3. Re: 近似直線の算出方法
              Shinichiro Murakami

              こちらこそ、新たな学びになりました。

              繰り返しになりますが、

              だけですので、ひとつひとつに分解して考えれば、道は開けると思います。

              結局、いちばんうまくいかないのは、エクセルと一緒で「カッコの数」とかいう話なので。。

               

              村上

              • 4. Re: 近似直線の算出方法
                Keita Ogawa

                何度もすみません。。

                いろいろ調べて何とか自力で解決したいと思っているんですが解らない箇所があります。。

                ATTRの使い方なのですが

                頂いた計算式の中で言うと

                attr({fixed[カテゴリ]: min([DIFF_OF_DAY])})

                と言った場合に何故ATTRでくくる必要があるんでしょうか。

                返信はこちらでなくても村上さんのブログもこの前から見させていただいているので機会があれば解説して頂ければ助かります!

                いろいろ不躾なコメントで恐縮ですがこれからもどうぞよろしくお願い致しますー

                • 5. Re: 近似直線の算出方法
                  Shinichiro Murakami

                  ぶっちゃけ、丁寧に解説できるほどの知識を持ち合わせておりませんでして。。

                  が出てきたときには、ATTR を使うと計算式が使えるようになることが多いのです。。

                  なんで、試行錯誤の一環で、ATTR つけみよう。==> おっ、通った

                  ってのが実際のところです。

                   

                  なんとなく背景のメカニズムも分かってきてはいるのですが、解説を公開するには、

                  もう少し勉強が必要です。

                   

                  blogをご覧頂いているとのこと。ありがとうございますっ。

                  いろいろと手探りなので、感想など頂けると、めっちゃありがたいです。

                  この件は、ある程度まで理解が進めば、もちろんBlogでも紹介したいネタです。

                  気長にお待ちください   <(_ _)>

                   

                  村上

                  • 6. Re: 近似直線の算出方法
                    Keita Ogawa

                    村上さん

                     

                    返信有難うございました。

                    そうなんですね。集計 非集計が混じってますエラーよく見ます。

                    ATTR=属性化する事で非集計となって使えるんでしょうけど。。明確なのは分からないですねえ。

                    外のサイトも見ていろいろ勉強してみます。

                    有難うございましたー