title: Python PanelOLS different statistics with single categorical and multiple dummy columns
body: <p>I am trying to balance check on a Pandas DataFrame using an OLS with entity fixed effects. An example DataFrame is below:</p>
  <div class="s-table-container">
  <table class="s-table">
  <thead>
  <tr>
  <th style="text-align: left;">county</th>
  <th style="text-align: left;">year</th>
  <th style="text-align: left;">treatment_vs_control</th>
  <th style="text-align: left;">age</th>
  <th style="text-align: left;">gender</th>
  </tr>
  </thead>
  <tbody>
  <tr>
  <td style="text-align: left;">Jefferson</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">1</td>
  <td style="text-align: left;">24</td>
  <td style="text-align: left;">M</td>
  </tr>
  <tr>
  <td style="text-align: left;">Jackson</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">1</td>
  <td style="text-align: left;">31</td>
  <td style="text-align: left;">M</td>
  </tr>
  <tr>
  <td style="text-align: left;">Jefferson</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">0</td>
  <td style="text-align: left;">28</td>
  <td style="text-align: left;">F</td>
  </tr>
  <tr>
  <td style="text-align: left;">Jackson</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">1</td>
  <td style="text-align: left;">24</td>
  <td style="text-align: left;">null</td>
  </tr>
  <tr>
  <td style="text-align: left;">Adams</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">0</td>
  <td style="text-align: left;">72</td>
  <td style="text-align: left;">F</td>
  </tr>
  </tbody>
  </table>
  </div>
  <p>First I try to run the model with the gender field as-is.</p>
  <pre><code>model_as_is = PanelOLS.from_formula(
      formula=&quot;treatment_vs_control ~ age + gender + EntityEffects&quot;,
      data=df
  ).fit()
  
  model_as_is.summary
  </code></pre>
  <p>I get an F statistics of ~3.05 with a p value of 0.0001.</p>
  <p>Then, I try to run the model with one-hot encoded dummy gender columns. The DataFrame looks like below:</p>
  <div class="s-table-container">
  <table class="s-table">
  <thead>
  <tr>
  <th style="text-align: left;">county</th>
  <th style="text-align: left;">year</th>
  <th style="text-align: left;">treatment_vs_control</th>
  <th style="text-align: left;">age</th>
  <th style="text-align: left;">gender_m</th>
  <th style="text-align: left;">gender_f</th>
  </tr>
  </thead>
  <tbody>
  <tr>
  <td style="text-align: left;">Jefferson</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">1</td>
  <td style="text-align: left;">24</td>
  <td style="text-align: left;">1</td>
  <td style="text-align: left;">0</td>
  </tr>
  <tr>
  <td style="text-align: left;">Jackson</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">1</td>
  <td style="text-align: left;">31</td>
  <td style="text-align: left;">1</td>
  <td style="text-align: left;">0</td>
  </tr>
  <tr>
  <td style="text-align: left;">Jefferson</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">0</td>
  <td style="text-align: left;">28</td>
  <td style="text-align: left;">0</td>
  <td style="text-align: left;">1</td>
  </tr>
  <tr>
  <td style="text-align: left;">Jackson</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">1</td>
  <td style="text-align: left;">24</td>
  <td style="text-align: left;">0</td>
  <td style="text-align: left;">0</td>
  </tr>
  <tr>
  <td style="text-align: left;">Adams</td>
  <td style="text-align: left;">2022</td>
  <td style="text-align: left;">0</td>
  <td style="text-align: left;">72</td>
  <td style="text-align: left;">0</td>
  <td style="text-align: left;">1</td>
  </tr>
  </tbody>
  </table>
  </div>
  <p>My model now looks like:</p>
  <pre><code>model_dummy = PanelOLS(
      dependent = df[&quot;treatment_vs_control&quot;], 
      exog = df[[&quot;age&quot;, &quot;gender&quot;]], 
      entity_effects=True, 
      time_effects=False,
  ).fit()
  
  model_dummy.summary
  </code></pre>
  <p>My F statistic is now ~2.61 with a p value of 0.0002.</p>
  <p>If I try to simply keep a single gender column but make it numeric instead of string-type, I get even a third statistical breakdown.</p>
  <p>Why might this happen?</p>