[補足] 必要に応じてデータを読み込む。
# ディレクトリの移動。必須ではない。個々人の設定に応じて。
setwd("D:/home_sub3/R_Dir/KougiDS24") # ディレクトリを移動
# list.files() # ファイル・ディレクトリ一覧を表示
# データの読み込み
Student24<-read.csv("StudAll24b.csv", skip=5, header=TRUE, na.strings="")
言うまでもなく、相関係数は2つの変量間の関係を示す指標である。 欠損値をどのように扱うかで、相関係数の計算方法は2通りある。 3変量以上の変量に対する相関係数を計算する場合、 何れのか変量に欠損値を含んでいるサンプルは、 当該サンプルを除外する方法(計算方法1=完全データのみで算出、前回紹介済み)と、 対となる変量の何れかが欠損値であれば、その対を除外する方法(計算方法2=対ごとに除外) の2通りである。 以下はそれぞれの指定方法である。両者の違いを意識して使い分けてほしい。
# 相関係数
cor(Student24$Height, Student24$Weight) # 欠損値を含んでいると計算できない
## [1] NA
cor(Student24[3:5])
## Height Weight Chest
## Height 1 NA NA
## Weight NA 1 NA
## Chest NA NA 1
# 相関係数
cor(Student24[3:5],
use="complete.obs") # 1変量でも欠損値を含んでいるサンプルはサンプル自身を除外(計算方法1)
## Height Weight Chest
## Height 1.0000000 0.6866926 0.3005029
## Weight 0.6866926 1.0000000 0.4546247
## Chest 0.3005029 0.4546247 1.0000000
cor(Student24[3:5],
use="pairwise.complete.obs") # 欠損値を含んでいる対を除外(計算方法2)
## Height Weight Chest
## Height 1.0000000 0.6514913 0.3005029
## Weight 0.6514913 1.0000000 0.4546247
## Chest 0.3005029 0.4546247 1.0000000
相関係数は変数間の関係を数値的に把握する方法であった。 変数間の相関係数を視覚的に把握する方法として散布図があり、 これを相関行列と同様に行列状に並べたものを「散布図行列」と呼ぶが、 この場合は、上記の「計算方法2」と同様に対で除外して表示する。
plot(Student24[3:5]) # 散布図行列(変量ごとに欠損値を除外して描画する)
散布図行列は複数変量の関係を視覚的に把握するのに優れた手法であり、 3変量以上でも描画できる。 データ分析を開始する初期段階でまずは全体像を掴もうとするような際には 有効に機能する。
【蛇足】2021年(R3)1月に実施された、大学入学共通テスト(初年度、第1日程)の「 数学I 」、「 数学I・数学A 」には、産業構造のデータを題材に散布図行列の設問が出題されていたのだが、 残念なことに、散布図行列であると言及した解説文にはまだ出逢えていない。
plot(DNC21[3:5]) # 散布図行列(変量ごとに欠損値を除外して描画してくれる)
plot(DNC21[6:8]) # 散布図行列(変量ごとに欠損値を除外して描画してくれる)
特定の変量(例: 仕送り額)に注目して、当該変量を回答している集団を抽出することを考える。 いくつかの方法があろうが、今回は、まず、その変量が欠損値となっているサンプルを 抽出し、その後に、「欠損値となっていないサンプルだけ」を抽出する方法で 実現してみる。 その際には、少しトリッキーな表現が用いられ、 一種パズルを組み合わせていくような感覚が求められるかもしれない。
# 仕送り額を観てみよう
summary(Student24$Remittance)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0 0 20000 35523 50000 350000 154
Student24$Remittance
[1] 10000 0 10000 50000 50000 60000 60000 0 40000 NA
[11] NA 20000 0 60000 NA 35000 60000 20000 45000 0
[21] 125000 0 10000 70000 30000 0 120000 0 50000 30000
[31] NA 9000 30000 180000 60000 70000 100000 20000 NA 0
[41] 35000 10000 0 30000 25000 40000 45000 0 NA 0
[51] 0 20000 30000 50000 60000 20000 0 20000 30000 NA
[61] 30000 NA NA 25000 0 NA NA 27500 30000 0
[71] 0 100000 30000 60000 0 NA NA 8000 0 80000
[81] 0 30000 0 50000 50000 0 150000 0 0 0
[91] 60000 0 0 0 0 5000 20000 150000 20000 65000
[ reached getOption("max.print") -- omitted 692 entries ]
# 仕送り額が無回答(NA)の者を抽出
Remi_NA<-is.na(Student24$Remittance) # 仕送り額がNAの者にTRUEを返す
Remi_NA
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE
[13] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[25] FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE
[37] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[49] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE
[61] FALSE TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE
[73] FALSE FALSE FALSE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[97] FALSE FALSE FALSE FALSE
[ reached getOption("max.print") -- omitted 692 entries ]
Student24[Remi_NA,] # 仕送り額が無回答(NA)の者だけを抽出
No Sex Height Weight Chest Residence Remittance Carrier Fee
10 10 F 150.0 47.0 NA 自宅生 NA <NA> NA
11 11 F 151.0 42.0 NA 自宅生 NA <NA> 7700
15 15 F 151.0 NA NA 下宿生 NA <NA> NA
31 31 F 154.0 46.0 NA <NA> NA <NA> NA
39 39 F 155.0 NA NA 自宅生 NA <NA> NA
49 49 F 156.0 NA NA 下宿生 NA <NA> NA
60 60 F 157.0 51.0 NA 自宅生 NA <NA> NA
62 62 <NA> 157.0 55.0 NA 自宅生 NA <NA> NA
63 63 F 157.0 57.0 NA 自宅生 NA <NA> NA
66 66 F 157.8 52.0 83 自宅生 NA <NA> 10000
67 67 F 158.0 45.5 NA 自宅生 NA DoCoMo 10000
[ reached 'max' / getOption("max.print") -- omitted 143 rows ]
Student24[!Remi_NA,] # 欠損値を含まない(回答した者だけ)データの抽出
その上で、以下のプログラムの記述方法と、それらの実行結果に納得できるか?
一種パズル的な要素が入っていると思うので、じっくり理解してほしい。
mean(Student24$Remittance) # 欠損値を含む全データに対して平均値を求める
## [1] NA
mean(Student24[Remi_NA,]$Remittance) # 欠損値を含むデータに対して平均値を求める
## [1] NA
mean(Student24[!Remi_NA,]$Remittance) # 欠損値を含むデータを除外して平均値を求める
## [1] 35523.26
summary(Student24$Remittance) # Remittanceを概観
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0 0 20000 35523 50000 350000 154
先週の4節に示した「演習4-2」では身長以外の変量の分析をお願いした。 その中の小遣い額(Remittance)を分析していて 皆さんの中にはやや違和感というか驚かれた方もおられるのではないか。
summary(Student24$Remittance)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0 0 20000 35523 50000 350000 154
hist(Student24$Remittance, right=FALSE,
breaks = seq(0,350000,25000), ylim = c(0,350),
main="Histgram of Remittance") # ヒストグラム
abline(h=seq(0,350,50), lty=3)
boxplot(Student24$Remittance,
horizontal=T, main="boxplot of Remittance") # 箱ひげ図
abline(v=seq(0,350000,50000), lty=3)
Rのプログラムを作成することに一生懸命になるのは当然だと思うが、 得られた結果の吟味も重要である。
得られた結果から35万円も小遣いをもらっている者がいる。他にも25万円以上もらっている学生も複数いるではないか!! なんとリッチなことよ、と。
このようないわば「外れ値」に相当するものは、 記入ミスや入力ミスの可能性もあり個票に戻って精査する必要がある。 ひょっとすると、35万円だったのは3.5万円だったり、30万円だったのは3.0万円であったかもしれないので、もし、単なる入力ミスであればデータを修正する必要がある。
しかし、実はこの35万円と回答した学生は社会人学生であり、想像するに給与額を回答してくれたようであった。
そこで、このように「外れ値」に対して我々が取るべき手段として少なくとも2通り考えられる。
外れ値は集計から除外するという意味で、欠損値(NA)を割り当てることがある。 このことにより、データ自身は削除されないが当該変量だけは分析から除外されることになる。 処理前後で欠損データが増えたことを確認せよ。 ここでは25万円を越える小遣い額を示した者に欠損値を割り当てることを例に説明する。
# 仕送り額が25万円を超える者を抽出
Remi_Over25<-Student24$Remittance > 250000
Remi_Over25
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE NA NA FALSE
[13] FALSE FALSE NA FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[25] FALSE FALSE FALSE FALSE FALSE FALSE NA FALSE FALSE FALSE FALSE FALSE
[37] FALSE FALSE NA FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[49] NA FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE NA
[61] FALSE NA NA FALSE FALSE NA NA FALSE FALSE FALSE FALSE FALSE
[73] FALSE FALSE FALSE NA NA FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[85] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[97] FALSE FALSE FALSE FALSE
[ reached getOption("max.print") -- omitted 692 entries ]
Student24$Remittance[Remi_Over25] # NAか25万を超える者のリスト
## [1] NA NA NA NA NA NA NA NA NA NA
## [11] NA NA NA NA NA NA NA NA NA NA
## [21] NA NA NA NA NA NA NA NA NA NA
## [31] NA NA NA NA NA NA NA NA NA 300000
## [41] NA NA NA NA NA NA NA NA NA NA
## [51] NA NA NA NA NA NA NA NA NA NA
## [61] NA NA NA NA NA NA NA NA NA NA
## [71] NA NA NA NA NA NA NA NA NA NA
## [81] NA NA NA NA NA 350000 NA NA NA NA
## [91] NA NA NA NA NA NA NA NA NA NA
## [101] NA NA NA NA NA NA NA NA NA NA
## [111] NA NA NA NA NA 300000 NA NA NA NA
## [121] NA NA NA NA NA NA NA NA NA NA
## [131] NA NA NA NA NA NA NA NA NA NA
## [141] NA NA NA NA NA NA NA NA NA NA
## [151] NA NA NA NA NA NA NA
Student24[Remi_Over25,] # 対象者抽出
No Sex Height Weight Chest Residence Remittance Carrier Fee
NA NA <NA> NA NA NA <NA> NA <NA> NA
NA.1 NA <NA> NA NA NA <NA> NA <NA> NA
NA.2 NA <NA> NA NA NA <NA> NA <NA> NA
NA.3 NA <NA> NA NA NA <NA> NA <NA> NA
NA.4 NA <NA> NA NA NA <NA> NA <NA> NA
NA.5 NA <NA> NA NA NA <NA> NA <NA> NA
NA.6 NA <NA> NA NA NA <NA> NA <NA> NA
NA.7 NA <NA> NA NA NA <NA> NA <NA> NA
NA.8 NA <NA> NA NA NA <NA> NA <NA> NA
NA.9 NA <NA> NA NA NA <NA> NA <NA> NA
NA.10 NA <NA> NA NA NA <NA> NA <NA> NA
[ reached 'max' / getOption("max.print") -- omitted 146 rows ]
Student24tmp<-Student24 # 元データを壊したくないので(コピー)
Student24tmp$Remittance[Remi_Over25]<-NA # NAを代入
Student24tmp$Remittance
[1] 10000 0 10000 50000 50000 60000 60000 0 40000 NA
[11] NA 20000 0 60000 NA 35000 60000 20000 45000 0
[21] 125000 0 10000 70000 30000 0 120000 0 50000 30000
[31] NA 9000 30000 180000 60000 70000 100000 20000 NA 0
[41] 35000 10000 0 30000 25000 40000 45000 0 NA 0
[51] 0 20000 30000 50000 60000 20000 0 20000 30000 NA
[61] 30000 NA NA 25000 0 NA NA 27500 30000 0
[71] 0 100000 30000 60000 0 NA NA 8000 0 80000
[81] 0 30000 0 50000 50000 0 150000 0 0 0
[91] 60000 0 0 0 0 5000 20000 150000 20000 65000
[ reached getOption("max.print") -- omitted 692 entries ]
summary(Student24tmp$Remittance)
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0 0 20000 34195 50000 200000 157
boxplot(Student24tmp$Remittance,
horizontal=T, main="boxplot of Remittance") # 箱ひげ図
abline(v=seq(0,350000,50000), lty=3)
この処理により、欠損値が3例増え、また、分布も最高値が20万円に抑えられたことが判る。
もう一つの方策として、一定の条件に合致しないサンプルはデータから除外してしまい、 以後の解析に用いない方法もある。 例えば今回の例であれば、仕送り額が25万円以下の者を抽出して、 新たな変数に割り当てている。こうすることで 毎回除外の式を書かなくても良くなり、式が読み易くなる。 処理前後でヒストグラムと箱ひげ図が変化したことを確認せよ。
# 仕送り額が25万円以下の者を抽出
Remi_Less25<-Student24$Remittance <= 250000
Remi_Less25
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE NA NA TRUE TRUE TRUE
[15] NA TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[29] TRUE TRUE NA TRUE TRUE TRUE TRUE TRUE TRUE TRUE NA TRUE TRUE TRUE
[43] TRUE TRUE TRUE TRUE TRUE TRUE NA TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[57] TRUE TRUE TRUE NA TRUE NA NA TRUE TRUE NA NA TRUE TRUE TRUE
[71] TRUE TRUE TRUE TRUE TRUE NA NA TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[85] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
[99] TRUE TRUE
[ reached getOption("max.print") -- omitted 692 entries ]
Student24$Remittance[Remi_Less25] # 条件に合致する対象者の仕送り額
[1] 10000 0 10000 50000 50000 60000 60000 0 40000 NA
[11] NA 20000 0 60000 NA 35000 60000 20000 45000 0
[21] 125000 0 10000 70000 30000 0 120000 0 50000 30000
[31] NA 9000 30000 180000 60000 70000 100000 20000 NA 0
[41] 35000 10000 0 30000 25000 40000 45000 0 NA 0
[51] 0 20000 30000 50000 60000 20000 0 20000 30000 NA
[61] 30000 NA NA 25000 0 NA NA 27500 30000 0
[71] 0 100000 30000 60000 0 NA NA 8000 0 80000
[81] 0 30000 0 50000 50000 0 150000 0 0 0
[91] 60000 0 0 0 0 5000 20000 150000 20000 65000
[ reached getOption("max.print") -- omitted 689 entries ]
Student24[Remi_Less25,] # 条件に合致する対象者のサンプルの抽出
No Sex Height Weight Chest Residence Remittance Carrier Fee
1 1 F 145.0 38 NA 自宅生 10000 <NA> NA
2 2 F 145.5 42 76 自宅生 0 <NA> 3700
3 3 F 146.7 41 85 自宅生 10000 Vodafone 6000
4 4 F 148.0 42 NA 自宅生 50000 <NA> NA
5 5 F 148.0 43 80 自宅生 50000 DoCoMo 4000
6 6 F 148.9 NA NA 自宅生 60000 <NA> NA
7 7 F 149.0 45 NA 下宿生 60000 <NA> NA
8 8 F 150.0 43 82 自宅生 0 <NA> 4980
9 9 F 150.0 46 86 <NA> 40000 <NA> NA
NA NA <NA> NA NA NA <NA> NA <NA> NA
NA.1 NA <NA> NA NA NA <NA> NA <NA> NA
[ reached 'max' / getOption("max.print") -- omitted 778 rows ]
dim(Student24) # データ全体のデータサイズ
## [1] 792 9
dim(Student24[Remi_Less25,]) # 抽出したデータのデータサイズ
## [1] 789 9
summary(Student24$Remittance) # 元データの概要
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0 0 20000 35523 50000 350000 154
summary(Student24$Remittance[Remi_Less25]) # 抽出したデータの概要
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0 0 20000 34195 50000 200000 154
hist(Student24$Remittance[Remi_Less25], right=FALSE,
breaks = seq(0,350000,25000), ylim = c(0,350),
main="Histgram of Remittance") # ヒストグラム
abline(h=seq(0,350,50), lty=3)
boxplot(Student24$Remittance[Remi_Less25],
horizontal=T, main="boxplot of Remittance") # 箱ひげ図
abline(v=seq(0,200000,50000), lty=3)
毎回この式を指定するのが面倒だと感じ、 加えて、以降の分析において、25万円を超えるサンプルが除外されたものを 恒久的に利用したい場合には、新しい変数に割り当てて利用する手もある。 25万円を超えるサンプルが除外された図となっていることを確認せよ。
Student24_RemiLess25 <- Student24[Remi_Less25,] # 以後恒久的に使いたいなら新しい変数に割り当てる
dim(Student24_RemiLess25) # 新しい変数のデータサイズ
## [1] 789 9
summary(Student24_RemiLess25) # 新しい変数の要約統計量
## No Sex Height Weight
## Min. : 1.0 Length:789 Min. :145.0 Min. : 35.00
## 1st Qu.:192.5 Class :character 1st Qu.:164.0 1st Qu.: 53.38
## Median :390.0 Mode :character Median :170.0 Median : 60.00
## Mean :383.2 Mean :168.8 Mean : 59.88
## 3rd Qu.:566.5 3rd Qu.:174.0 3rd Qu.: 65.00
## Max. :769.0 Max. :187.0 Max. :100.00
## NA's :154 NA's :169 NA's :217
## Chest Residence Remittance Carrier
## Min. : 30.50 Length:789 Min. : 0 Length:789
## 1st Qu.: 82.00 Class :character 1st Qu.: 0 Class :character
## Median : 87.00 Mode :character Median : 20000 Mode :character
## Mean : 86.17 Mean : 34195
## 3rd Qu.: 90.00 3rd Qu.: 50000
## Max. :112.00 Max. :200000
## NA's :573 NA's :154
## Fee
## Min. : 0
## 1st Qu.: 3000
## Median : 4500
## Mean : 5434
## 3rd Qu.: 7000
## Max. :40000
## NA's :420
hist(Student24_RemiLess25$Remittance, right=FALSE,
breaks = seq(0,350000,25000), ylim = c(0,350),
main="Histgram of Remittance") # ヒストグラム
abline(h=seq(0,350,50), lty=3)
boxplot(Student24_RemiLess25$Remittance,
horizontal=T, main="boxplot of Remittance") # 箱ひげ図
abline(v=seq(0,200000,50000), lty=3)
この節を通して多少理解できたかと思うが、Rにおいては欠損値(NA)をどのように扱うかに 注意しながら操作を行う必要がある。この取り扱いを疎かにしていると、目的の分析が行えないので、心して習得してほしい。
このページで取り扱ったプログラムだけを抜き出して以下に列挙しておく。
## 0. 先週のアンケートから
# ディレクトリの移動。必須ではない。個々人の設定に応じて。
setwd("D:/home_sub3/R_Dir") # ホームディレクトリに移動(Set Working Directory)
getwd() # 現在のディレクトリ位置を表示
list.files() # ファイル・ディレクトリ一覧を表示
setwd("KougiDS24") # ディレクトリを移動
list.files() # ファイル・ディレクトリ一覧を表示
# ディレクトリの移動。必須ではない。個々人の設定に応じて。
setwd("D:/home_sub3/R_Dir/KougiDS24") # ディレクトリを移動
# list.files() # ファイル・ディレクトリ一覧を表示
# データの読み込み
Student24<-read.csv("StudAll24b.csv", skip=5, header=TRUE, na.strings="")
dim(Student24)
colnames(Student24)
Student24[1:5,]
## 1. 欠損値を含んだデータに対する相関係数
# 相関係数
cor(Student24$Height, Student24$Weight) # 欠損値を含んでいると計算できない
# 相関係数
cor(Student24[3:5],
use="complete.obs") # 1変量でも欠損値を含んでいるサンプルはサンプル自身を除外(計算方法1)
cor(Student24$Height, Student24$Weight,
use="pairwise.complete.obs") # 欠損値を含んでいる対を除外(計算方法2、変数の指定方法1)
cor(Student24[3:5],
use="pairwise.complete.obs") # 欠損値を含んでいる対を除外(計算方法2、変数の指定方法2)
plot(Student24[3:5]) # 散布図行列(変量ごとに欠損値を除外して描画する)
## 2.1. 欠損値を含まないサンプルの抽出
# 仕送り額を観てみよう
summary(Student24$Remittance)
Student24$Remittance
# 仕送り額が無回答(NA)の者を抽出
Remi_NA<-is.na(Student24$Remittance) # 仕送り額がNAの者にTRUEを返す
Remi_NA
Student24[Remi_NA,] # 仕送り額が無回答(NA)の者だけを抽出
## [演習2.1-1]
Student24[!Remi_NA,] # 欠損値を含まない(回答した者だけ)データの抽出
mean(Student24$Remittance) # 欠損値を含む全データに対して平均値を求める
mean(Student24[Remi_NA,]$Remittance) # 欠損値を含むデータに対して平均値を求める
mean(Student24[!Remi_NA,]$Remittance) # 欠損値を含むデータを除外して平均値を求める
summary(Student24$Remittance) # Remittanceを概観
## 2.2. ある閾値を超えたサンプルの抽出
summary(Student24$Remittance)
hist(Student24$Remittance, right=FALSE,
breaks = seq(0,350000,25000), ylim = c(0,350),
main="Histgram of Remittance") # ヒストグラム
abline(h=seq(0,350,50), lty=3)
boxplot(Student24$Remittance,
horizontal=T, main="boxplot of Remittance") # 箱ひげ図
abline(v=seq(0,350000,50000), lty=3)
## 2.3. 外れ値を欠損値として扱う(外れ値に欠損値を代入する)
# 仕送り額が25万円を超える者を抽出
Remi_Over25<-Student24$Remittance > 250000
Remi_Over25
Student24$Remittance[Remi_Over25] # NAか25万を超える者のリスト
Student24[Remi_Over25,] # 対象者抽出
Student24tmp<-Student24 # 元データを壊したくないので
Student24tmp$Remittance[Remi_Over25]<-NA # NAを代入
Student24tmp$Remittance
summary(Student24tmp$Remittance)
boxplot(Student24tmp$Remittance,
horizontal=T, main="boxplot of Remittance") # 箱ひげ図
abline(v=seq(0,350000,50000), lty=3)
## 2.4. ある閾値以下のサンプルの抽出
# 仕送り額が25万円以下の者を抽出
Remi_Less25<-Student24$Remittance <= 250000
Remi_Less25
Student24$Remittance[Remi_Less25] # 条件に合致する対象者の仕送り額
Student24[Remi_Less25,] # 条件に合致する対象者のサンプルの抽出
dim(Student24) # データ全体のデータサイズ
dim(Student24[Remi_Less25,]) # 抽出したデータのデータサイズ
summary(Student24$Remittance) # 元データの概要
summary(Student24$Remittance[Remi_Less25]) # 抽出したデータの概要
hist(Student24$Remittance[Remi_Less25], right=FALSE,
breaks = seq(0,350000,25000), ylim = c(0,350),
main="Histgram of Remittance") # ヒストグラム
abline(h=seq(0,350,50), lty=3)
boxplot(Student24$Remittance[Remi_Less25],
horizontal=T, main="boxplot of Remittance") # 箱ひげ図
abline(v=seq(0,200000,50000), lty=3)
Student24_RemiLess25 <- Student24[Remi_Less25,] # 以後恒久的に使いたいなら新しい変数に割り当てる
dim(Student24_RemiLess25) # 新しい変数のデータサイズ
summary(Student24_RemiLess25) # 新しい変数の要約統計量
hist(Student24_RemiLess25$Remittance, right=FALSE,
breaks = seq(0,350000,25000), ylim = c(0,350),
main="Histgram of Remittance") # ヒストグラム
abline(h=seq(0,350,50), lty=3)
boxplot(Student24_RemiLess25$Remittance,
horizontal=T, main="boxplot of Remittance") # 箱ひげ図
abline(v=seq(0,200000,50000), lty=3)