Statistics: Simpson’s paradoxを考える, google sheets, python, r ver. 5

Last Updated on May 12, 2021 by shibatau

VIの2(Rの色つきの表)を追加しました。

I.何をする?

 

次の文書を参考にしてSimpthons’s Paradoxを学びます。合わせて、Google Sheets、Python、Rの使い方を学びます。

 

The curious case of Simpson’s Paradox

 

II.問題

 

下のグラフのように、バークレー大学の受験者に対する男女の入学許可率に10%近くの差がありました。女性に差別的な入試であると言えるでしょうか?

適切な判断だと思うものを選んでください。

 

  1. 男女に有意な差があり、差別的な入試だと言える。
  2. 男女に差があるが、差別といえるほどの偏りではない。
  3. この数値だけではわからない。
  4. その他。

 

Google Sheetsで作成

 

III.学部別の集計

 

それぞれの学部の受験者数に対する入学許可者数の割合はの女性が高い場合が多いことがわかります。

 

Google Sheetsで作成

 

IV.Google Sheetsの場合

 

次のページからデータを読み込みます。

 

Probability and Statistics | Simpson’s Paradox (UC Berkeley’s Lawsuit)

 

1.全学の男女比

 

(1)次を実行して表を読み込みます。

 

=importhtml("https://www.geeksforgeeks.org/probability-and-statistics-simpsons-paradox-uc-berkeleys-lawsuit/","table",1) 

(2)表をコピーして、適当なセルに値のみを貼り付けます(右クリックで選択)。

(3)不要な記号を除きます。

(4)列を加えてAdmitted列に100をかけます。

(5)x軸のラベルとする列と追加した列を選んで、insert>chartでグラフを挿入します。

(6)Chart Editor>Customize>SeriesのData labelsにチェックをいれます。

 

 

2.学部別男女比

 

(1)次を実行して表を読み込みます。

 

=importhtml("https://www.geeksforgeeks.org/probability-and-statistics-simpsons-paradox-uc-berkeleys-lawsuit/","table",2) 

(2)男女の割合の高い方を赤字にするために、MenのAdmitted列にconditional formattingを設定します。

 

(3)Conditional formattingを他のセルにコピーします(オートフィルを使用)。

(4)WomenのAdmitted列にconditional formattingを設定します。

(3)Conditional formattingを他のセルにコピーします(オートフィルを使用)。

 

 

V.Pythonの場合

 

1.全学の男女比

 

PandasでページのHTMLのすべてのテーブルを簡単に取得できます。

%を含む文字列から%を除く、整数に変換します。

 

import pandas as pd
from matplotlib import pyplot as plt
table = pd.read_html("https://www.geeksforgeeks.org/probability-and-statistics-simpsons-paradox-uc-berkeleys-lawsuit/")
df1 = table[0]
# convert strings to int values
df1['Admitted'] = df1['Admitted'].str[:-1].astype(int)
# create a bar plot
df1.plot.bar(x='Unnamed: 0', y='Admitted', rot=0)
plt.show()
 

 

 

VI.Rの場合

 

1.全学の男女比

 

htmltapを用いて表を取得し、sub( )で%をのぞきます。

スクリプトは次です。

 

# import libraries
library(tidyverse)
library(htmltab)
# load the data
url <- "https://www.geeksforgeeks.org/probability-and-statistics-simpsons-paradox-uc-berkeleys-lawsuit/"
df0 <- htmltab(doc = url, which = 1)
# remove %s
df0$Admitted = as.integer(sub("%", "",df0$Admitted))
# Map the time of day to different fill colors
ggplot(df0, aes(x = V1, y = Admitted, fill = V1)) +
geom_bar(stat = "identity")
 

 

 

2.学部別男女比

 

kableExtraを使ってLaTeX Tableを作成します。

スクリプトは次です。men_admitted列はまだできていません。

 

# import libraries
library(tidyverse)
library(htmltab)
library(janitor)
library(kableExtra)
# load the data
url <- "https://www.geeksforgeeks.org/probability-and-statistics-simpsons-paradox-uc-berkeleys-lawsuit/"
df2 <- htmltab(doc = url, which = 2)
# clean the column names
df2_cleaned <- clean_names(df2)
# remove %s
df2_cleaned$men_admitted = as.integer(sub("%", "",df2_cleaned$men_admitted))
df2_cleaned$women_admitted = as.integer(sub("%", "",df2_cleaned$women_admitted))
df2_cleaned %>% 
  mutate(
    women_admitted = cell_spec(women_admitted, color = ifelse(women_admitted > men_admitted, "red","green"))) %>% 
  kable(escape = FALSE) %>%
  kable_styling(position = "left", full_width = FALSE) %>%
  column_spec(1, bold = TRUE, border_right = TRUE, color = "black", background = "lightgrey")

 

 

To be continued.

 

About shibatau

I was born and grown up in Kyoto. I studied western philosophy at the University and specialized in analytic philosophy, especially Ludwig Wittgenstein at the postgraduate school. I'm interested in new technology, especially machine learning and have been learning R language for two years and began to learn Python last summer. Listening toParamore, Sia, Amazarashi and MIyuki Nakajima. Favorite movies I've recently seen: "FREEHELD". Favorite actors and actresses: Anthony Hopkins, Denzel Washington, Ellen Page, Meryl Streep, Mia Wasikowska and Robert DeNiro. Favorite books: Fyodor Mikhailovich Dostoyevsky, "The Karamazov Brothers", Shinran, "Lamentations of Divergences". Favorite phrase: Salvation by Faith. Twitter: @shibatau

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.