<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Solving Baseball Blog</title>
<link>https://solvingbaseball.com/articles/</link>
<atom:link href="https://solvingbaseball.com/articles/index.xml" rel="self" type="application/rss+xml"/>
<description>志向、思考、試行、嗜好</description>
<generator>quarto-1.9.38</generator>
<lastBuildDate>Sat, 02 May 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>xwOBA と打球方向 Part 15</title>
  <dc:creator>GHL </dc:creator>
  <link>https://solvingbaseball.com/articles/posts/xwoba-pullair/</link>
  <description><![CDATA[ 






<p>xwOBA が普及するにつれ、wOBA との乖離も注目されるようになり、主にゲレーロ Jr.&nbsp;やタティス Jr.&nbsp;、パレイデスやバーショなどの標本から、その乖離を埋めてくれる Pull Air％ も補助具として使われる場面が増えてきました。</p>
<p>実際に wOBA を記述するという目的においては補助具として機能しています。</p>
<div class="cell">
<div class="cell-output-display">
<!-- preamble start -->

    <script src="https://cdn.jsdelivr.net/gh/vincentarelbundock/tinytable@main/inst/tinytable.js"></script>

    <script>
      // Create table-specific functions using external factory
      const tableFns_02bgd6x1iady3d0mbhla = TinyTable.createTableFunctions("tinytable_02bgd6x1iady3d0mbhla");
      // tinytable span after
      window.addEventListener('load', function () {
          var cellsToStyle = [
            // tinytable style arrays after
          { positions: [ { i: '9', j: 2 }, { i: '9', j: 3 } ], css_id: 'tinytable_css_aleqeo4dc8qq3zp85o05',}, 
          { positions: [ { i: '6', j: 2 }, { i: '6', j: 3 } ], css_id: 'tinytable_css_a8hkp78i8hm162398rbt',}, 
          { positions: [ { i: '1', j: 2 }, { i: '2', j: 2 }, { i: '3', j: 2 }, { i: '4', j: 2 }, { i: '5', j: 2 }, { i: '7', j: 2 }, { i: '8', j: 2 }, { i: '1', j: 3 }, { i: '2', j: 3 }, { i: '3', j: 3 }, { i: '4', j: 3 }, { i: '5', j: 3 }, { i: '7', j: 3 }, { i: '8', j: 3 } ], css_id: 'tinytable_css_u72t2dabgl8dodiip38n',}, 
          { positions: [ { i: '0', j: 2 }, { i: '0', j: 3 } ], css_id: 'tinytable_css_gbj5p63ep7hrugpq863b',}, 
          { positions: [ { i: '9', j: 1 } ], css_id: 'tinytable_css_0i5ogirsj2ieen9yqzed',}, 
          { positions: [ { i: '6', j: 1 } ], css_id: 'tinytable_css_fl1qgwr1fsvj8jclz5q7',}, 
          { positions: [ { i: '1', j: 1 }, { i: '2', j: 1 }, { i: '3', j: 1 }, { i: '4', j: 1 }, { i: '5', j: 1 }, { i: '7', j: 1 }, { i: '8', j: 1 } ], css_id: 'tinytable_css_lg42xle1848ael9avle2',}, 
          { positions: [ { i: '0', j: 1 } ], css_id: 'tinytable_css_lk2nfrm817b8jwh7qodn',}, 
          ];

          // Loop over the arrays to style the cells
          cellsToStyle.forEach(function (group) {
              group.positions.forEach(function (cell) {
                  tableFns_02bgd6x1iady3d0mbhla.styleCell(cell.i, cell.j, group.css_id);
              });
          });
      });
    </script>

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/vincentarelbundock/tinytable@main/inst/tinytable.css">
    <style>
    /* tinytable css entries after */
    #tinytable_02bgd6x1iady3d0mbhla td.tinytable_css_aleqeo4dc8qq3zp85o05, #tinytable_02bgd6x1iady3d0mbhla th.tinytable_css_aleqeo4dc8qq3zp85o05 {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.08em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: center }
    #tinytable_02bgd6x1iady3d0mbhla td.tinytable_css_a8hkp78i8hm162398rbt, #tinytable_02bgd6x1iady3d0mbhla th.tinytable_css_a8hkp78i8hm162398rbt {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: center }
    #tinytable_02bgd6x1iady3d0mbhla td.tinytable_css_u72t2dabgl8dodiip38n, #tinytable_02bgd6x1iady3d0mbhla th.tinytable_css_u72t2dabgl8dodiip38n { text-align: center }
    #tinytable_02bgd6x1iady3d0mbhla td.tinytable_css_gbj5p63ep7hrugpq863b, #tinytable_02bgd6x1iady3d0mbhla th.tinytable_css_gbj5p63ep7hrugpq863b {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 1; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.08em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: center }
    #tinytable_02bgd6x1iady3d0mbhla td.tinytable_css_0i5ogirsj2ieen9yqzed, #tinytable_02bgd6x1iady3d0mbhla th.tinytable_css_0i5ogirsj2ieen9yqzed {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.08em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: left }
    #tinytable_02bgd6x1iady3d0mbhla td.tinytable_css_fl1qgwr1fsvj8jclz5q7, #tinytable_02bgd6x1iady3d0mbhla th.tinytable_css_fl1qgwr1fsvj8jclz5q7 {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: left }
    #tinytable_02bgd6x1iady3d0mbhla td.tinytable_css_lg42xle1848ael9avle2, #tinytable_02bgd6x1iady3d0mbhla th.tinytable_css_lg42xle1848ael9avle2 { text-align: left }
    #tinytable_02bgd6x1iady3d0mbhla td.tinytable_css_lk2nfrm817b8jwh7qodn, #tinytable_02bgd6x1iady3d0mbhla th.tinytable_css_lk2nfrm817b8jwh7qodn {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 1; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.08em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: left }
    </style>
    <div class="container">
      <table class="tinytable" id="tinytable_02bgd6x1iady3d0mbhla" style="width: auto; margin-left: auto; margin-right: auto;" data-quarto-disable-processing="true">
        <caption>当年度の wOBA の記述</caption>
        <thead>
              <tr>
                <th scope="col" data-row="0" data-col="1"> </th>
                <th scope="col" data-row="0" data-col="2">xwOBA のみ</th>
                <th scope="col" data-row="0" data-col="3">+ Pull Air%</th>
              </tr>
        </thead>
        <tfoot><tr><td colspan="3">+ p &lt; 0.1, * p &lt; 0.05, ** p &lt; 0.01, *** p &lt; 0.001</td></tr>
<tr><td colspan="3">2021 - 2025 MLB: min. 300 PA</td></tr>
<tr><td colspan="3">Data: Baseball Savant</td></tr></tfoot>
        <tbody>
                <tr>
                  <td data-row="1" data-col="1">(Intercept)</td>
                  <td data-row="1" data-col="2">0.034***</td>
                  <td data-row="1" data-col="3">0.029***</td>
                </tr>
                <tr>
                  <td data-row="2" data-col="1"></td>
                  <td data-row="2" data-col="2">(0.005)</td>
                  <td data-row="2" data-col="3">(0.005)</td>
                </tr>
                <tr>
                  <td data-row="3" data-col="1">xwoba</td>
                  <td data-row="3" data-col="2">0.889***</td>
                  <td data-row="3" data-col="3">0.881***</td>
                </tr>
                <tr>
                  <td data-row="4" data-col="1"></td>
                  <td data-row="4" data-col="2">(0.014)</td>
                  <td data-row="4" data-col="3">(0.014)</td>
                </tr>
                <tr>
                  <td data-row="5" data-col="1">pull_air_rate</td>
                  <td data-row="5" data-col="2"></td>
                  <td data-row="5" data-col="3">0.045***</td>
                </tr>
                <tr>
                  <td data-row="6" data-col="1"></td>
                  <td data-row="6" data-col="2"></td>
                  <td data-row="6" data-col="3">(0.009)</td>
                </tr>
                <tr>
                  <td data-row="7" data-col="1">Num.Obs.</td>
                  <td data-row="7" data-col="2">1395</td>
                  <td data-row="7" data-col="3">1395</td>
                </tr>
                <tr>
                  <td data-row="8" data-col="1">R2</td>
                  <td data-row="8" data-col="2">0.736</td>
                  <td data-row="8" data-col="3">0.741</td>
                </tr>
                <tr>
                  <td data-row="9" data-col="1">R2 Adj.</td>
                  <td data-row="9" data-col="2">0.736</td>
                  <td data-row="9" data-col="3">0.741</td>
                </tr>
        </tbody>
      </table>
    </div>
<!-- hack to avoid NA insertion in last line -->
</div>
</div>
<p>ただ、xwOBA の話をしているときに当該期間の wOBA を持ち出し、そして打球方向をあたかも必需的な補助具として扱うのは、些かセンスがないです。Tango が何度も述べてきたように<span class="citation" data-cites="tango2024pull tango2024spray tango2024lost">(Tango 2024年a, 2024年b, 2024年c)</span>、Player の指標としては打球速度、垂直角度がある環境において水平角度の必要性は薄いです。</p>

<div class="no-row-height column-margin column-container"><div class="">
<p>もちろん Play のモデル化においては水平角度は必需品ですので、目的に応じて xwOBA を構築する必要があります。当たり前ですが、生の水平角度を使うほどより記述的になり、カテゴライズされたものを使うほど記述性は薄くなります。</p>
</div></div><p>Pull Air は単純な水平角度じゃなくて xwOBA と ｗOBA の乖離が大きい打球に絞られているのだから補助具として機能する可能性もありますので一応簡単に検証しておきます。</p>
<div class="cell">
<div class="cell-output-display">
<!-- preamble start -->

    <script src="https://cdn.jsdelivr.net/gh/vincentarelbundock/tinytable@main/inst/tinytable.js"></script>

    <script>
      // Create table-specific functions using external factory
      const tableFns_xclkli3indk8th3v8lwp = TinyTable.createTableFunctions("tinytable_xclkli3indk8th3v8lwp");
      // tinytable span after
      window.addEventListener('load', function () {
          var cellsToStyle = [
            // tinytable style arrays after
          { positions: [ { i: '11', j: 2 }, { i: '11', j: 3 }, { i: '11', j: 4 } ], css_id: 'tinytable_css_sanl42lw5pchcahhjx79',}, 
          { positions: [ { i: '8', j: 2 }, { i: '8', j: 3 }, { i: '8', j: 4 } ], css_id: 'tinytable_css_9rn1vjg26hsnvzhzziji',}, 
          { positions: [ { i: '1', j: 2 }, { i: '2', j: 2 }, { i: '3', j: 2 }, { i: '4', j: 2 }, { i: '5', j: 2 }, { i: '6', j: 2 }, { i: '7', j: 2 }, { i: '9', j: 2 }, { i: '10', j: 2 }, { i: '1', j: 3 }, { i: '2', j: 3 }, { i: '3', j: 3 }, { i: '4', j: 3 }, { i: '5', j: 3 }, { i: '6', j: 3 }, { i: '7', j: 3 }, { i: '9', j: 3 }, { i: '10', j: 3 }, { i: '1', j: 4 }, { i: '2', j: 4 }, { i: '3', j: 4 }, { i: '4', j: 4 }, { i: '5', j: 4 }, { i: '6', j: 4 }, { i: '7', j: 4 }, { i: '9', j: 4 }, { i: '10', j: 4 } ], css_id: 'tinytable_css_z8colc7soi7wnux86hku',}, 
          { positions: [ { i: '0', j: 2 }, { i: '0', j: 3 }, { i: '0', j: 4 } ], css_id: 'tinytable_css_qn7ebnkf2crjqocv0aeg',}, 
          { positions: [ { i: '11', j: 1 } ], css_id: 'tinytable_css_pc4oywz0t2kwlyeftzvm',}, 
          { positions: [ { i: '8', j: 1 } ], css_id: 'tinytable_css_6jj4r249n0cgcosnz8vy',}, 
          { positions: [ { i: '1', j: 1 }, { i: '2', j: 1 }, { i: '3', j: 1 }, { i: '4', j: 1 }, { i: '5', j: 1 }, { i: '6', j: 1 }, { i: '7', j: 1 }, { i: '9', j: 1 }, { i: '10', j: 1 } ], css_id: 'tinytable_css_p0vfjrb99nrrw6rsqtqf',}, 
          { positions: [ { i: '0', j: 1 } ], css_id: 'tinytable_css_llbkj4wabd72pw6ukwo8',}, 
          ];

          // Loop over the arrays to style the cells
          cellsToStyle.forEach(function (group) {
              group.positions.forEach(function (cell) {
                  tableFns_xclkli3indk8th3v8lwp.styleCell(cell.i, cell.j, group.css_id);
              });
          });
      });
    </script>

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/vincentarelbundock/tinytable@main/inst/tinytable.css">
    <style>
    /* tinytable css entries after */
    #tinytable_xclkli3indk8th3v8lwp td.tinytable_css_sanl42lw5pchcahhjx79, #tinytable_xclkli3indk8th3v8lwp th.tinytable_css_sanl42lw5pchcahhjx79 {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.08em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: center }
    #tinytable_xclkli3indk8th3v8lwp td.tinytable_css_9rn1vjg26hsnvzhzziji, #tinytable_xclkli3indk8th3v8lwp th.tinytable_css_9rn1vjg26hsnvzhzziji {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: center }
    #tinytable_xclkli3indk8th3v8lwp td.tinytable_css_z8colc7soi7wnux86hku, #tinytable_xclkli3indk8th3v8lwp th.tinytable_css_z8colc7soi7wnux86hku { text-align: center }
    #tinytable_xclkli3indk8th3v8lwp td.tinytable_css_qn7ebnkf2crjqocv0aeg, #tinytable_xclkli3indk8th3v8lwp th.tinytable_css_qn7ebnkf2crjqocv0aeg {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 1; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.08em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: center }
    #tinytable_xclkli3indk8th3v8lwp td.tinytable_css_pc4oywz0t2kwlyeftzvm, #tinytable_xclkli3indk8th3v8lwp th.tinytable_css_pc4oywz0t2kwlyeftzvm {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.08em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: left }
    #tinytable_xclkli3indk8th3v8lwp td.tinytable_css_6jj4r249n0cgcosnz8vy, #tinytable_xclkli3indk8th3v8lwp th.tinytable_css_6jj4r249n0cgcosnz8vy {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 0; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.1em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: left }
    #tinytable_xclkli3indk8th3v8lwp td.tinytable_css_p0vfjrb99nrrw6rsqtqf, #tinytable_xclkli3indk8th3v8lwp th.tinytable_css_p0vfjrb99nrrw6rsqtqf { text-align: left }
    #tinytable_xclkli3indk8th3v8lwp td.tinytable_css_llbkj4wabd72pw6ukwo8, #tinytable_xclkli3indk8th3v8lwp th.tinytable_css_llbkj4wabd72pw6ukwo8 {  position: relative; --border-bottom: 1; --border-left: 0; --border-right: 0; --border-top: 1; --line-color-bottom: var(--tt-line-color); --line-color-left: var(--tt-line-color); --line-color-right: var(--tt-line-color); --line-color-top: var(--tt-line-color); --line-width-bottom: 0.05em; --line-width-left: 0.1em; --line-width-right: 0.1em; --line-width-top: 0.08em; --trim-bottom-left: 0%; --trim-bottom-right: 0%; --trim-left-bottom: 0%; --trim-left-top: 0%; --trim-right-bottom: 0%; --trim-right-top: 0%; --trim-top-left: 0%; --trim-top-right: 0%; ; text-align: left }
    </style>
    <div class="container">
      <table class="tinytable" id="tinytable_xclkli3indk8th3v8lwp" style="width: auto; margin-left: auto; margin-right: auto;" data-quarto-disable-processing="true">
        <caption>翌年の wOBA の予測</caption>
        <thead>
              <tr>
                <th scope="col" data-row="0" data-col="1"> </th>
                <th scope="col" data-row="0" data-col="2">xwOBA のみ</th>
                <th scope="col" data-row="0" data-col="3">+ Pull Air%</th>
                <th scope="col" data-row="0" data-col="4">+ Sweet Spot%</th>
              </tr>
        </thead>
        <tfoot><tr><td colspan="4">+ p &lt; 0.1, * p &lt; 0.05, ** p &lt; 0.01, *** p &lt; 0.001</td></tr>
<tr><td colspan="4">2021 - 2025 MLB: min. 300 PA</td></tr>
<tr><td colspan="4">Data: Baseball Savant</td></tr></tfoot>
        <tbody>
                <tr>
                  <td data-row="1" data-col="1">(Intercept)</td>
                  <td data-row="1" data-col="2">0.133***</td>
                  <td data-row="1" data-col="3">0.132***</td>
                  <td data-row="1" data-col="4">0.157***</td>
                </tr>
                <tr>
                  <td data-row="2" data-col="1"></td>
                  <td data-row="2" data-col="2">(0.010)</td>
                  <td data-row="2" data-col="3">(0.010)</td>
                  <td data-row="2" data-col="4">(0.012)</td>
                </tr>
                <tr>
                  <td data-row="3" data-col="1">xwoba</td>
                  <td data-row="3" data-col="2">0.570***</td>
                  <td data-row="3" data-col="3">0.568***</td>
                  <td data-row="3" data-col="4">0.612***</td>
                </tr>
                <tr>
                  <td data-row="4" data-col="1"></td>
                  <td data-row="4" data-col="2">(0.029)</td>
                  <td data-row="4" data-col="3">(0.030)</td>
                  <td data-row="4" data-col="4">(0.031)</td>
                </tr>
                <tr>
                  <td data-row="5" data-col="1">pull_air_rate</td>
                  <td data-row="5" data-col="2"></td>
                  <td data-row="5" data-col="3">0.014</td>
                  <td data-row="5" data-col="4"></td>
                </tr>
                <tr>
                  <td data-row="6" data-col="1"></td>
                  <td data-row="6" data-col="2"></td>
                  <td data-row="6" data-col="3">(0.018)</td>
                  <td data-row="6" data-col="4"></td>
                </tr>
                <tr>
                  <td data-row="7" data-col="1">sweet_spot_percent</td>
                  <td data-row="7" data-col="2"></td>
                  <td data-row="7" data-col="3"></td>
                  <td data-row="7" data-col="4">-0.108***</td>
                </tr>
                <tr>
                  <td data-row="8" data-col="1"></td>
                  <td data-row="8" data-col="2"></td>
                  <td data-row="8" data-col="3"></td>
                  <td data-row="8" data-col="4">(0.029)</td>
                </tr>
                <tr>
                  <td data-row="9" data-col="1">Num.Obs.</td>
                  <td data-row="9" data-col="2">867</td>
                  <td data-row="9" data-col="3">867</td>
                  <td data-row="9" data-col="4">867</td>
                </tr>
                <tr>
                  <td data-row="10" data-col="1">R2</td>
                  <td data-row="10" data-col="2">0.303</td>
                  <td data-row="10" data-col="3">0.303</td>
                  <td data-row="10" data-col="4">0.313</td>
                </tr>
                <tr>
                  <td data-row="11" data-col="1">R2 Adj.</td>
                  <td data-row="11" data-col="2">0.302</td>
                  <td data-row="11" data-col="3">0.302</td>
                  <td data-row="11" data-col="4">0.312</td>
                </tr>
        </tbody>
      </table>
    </div>
<!-- hack to avoid NA insertion in last line -->
</div>
</div>
<p>このように、Pull Air％ は xwOBA に追加的な情報を与えません。水平角度を組み込んでいないモデルにおいて水平角度は冗長であり、（Sweet Spot％ が情報を追加するように）垂直角度を組み込んでいるモデルにおいて垂直角度は言わば過学習しています。</p>

<div class="no-row-height column-margin column-container"><div class="">
<p>一応ですが、wOBAcon を xwOBAcon で予測するモデルでも変わりません。</p>
</div></div><p>野球に限らず統計モデルにおいてこのような現象は起こりますので、組み込まれていない変数の冗長性、組み込まれている変数の過剰適合には息をするように気を配れるようにしたいものです。</p>




<div id="quarto-appendix" class="default"><section class="quarto-appendix-contents" id="quarto-bibliography"><h2 class="anchored quarto-appendix-heading">参考文献</h2><div id="refs" class="references csl-bib-body hanging-indent">
<div id="ref-tango2024pull" class="csl-entry">
Tango, Tom M. 2024年a. <span>「Pull rate and xwOBA」</span>. <a href="https://tangotiger.com/index.php/site/comments/pull-rate-and-xwoba">https://tangotiger.com/index.php/site/comments/pull-rate-and-xwoba</a>.
</div>
<div id="ref-tango2024spray" class="csl-entry">
Tango, Tom M. 2024年b. <span>「Spray Angle is not needed, part 32」</span>. <a href="https://tangotiger.com/index.php/site/comments/spray-angle-is-not-needed-part-32">https://tangotiger.com/index.php/site/comments/spray-angle-is-not-needed-part-32</a>.
</div>
<div id="ref-tango2024lost" class="csl-entry">
Tango, Tom M. 2024年c. <span>「Spray angles and xwOBA, part I-lost-track」</span>. <a href="https://tangotiger.com/index.php/site/comments/spray-angles-and-xwoba-part-i-lost-track">https://tangotiger.com/index.php/site/comments/spray-angles-and-xwoba-part-i-lost-track</a>.
</div>
</div></section></div> ]]></description>
  <category>xwoba</category>
  <category>pull-air</category>
  <guid>https://solvingbaseball.com/articles/posts/xwoba-pullair/</guid>
  <pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate>
</item>
</channel>
</rss>
