世帯の家族類型の変化

平成27年国勢調査

平成27年国勢調査
速報集計 
抽出速報集計 
表番号:01410
国勢調査 世帯数 家族類型
表題:世帯の家族類型(22区分),6歳未満・18歳未満・65歳以上・75歳以上代世帯-特掲)

家族類型_2015:
総数(家族類型)
親族のみの世帯
核家族世帯
夫婦のみの世帯
夫婦と子供から成る世帯
男親と子供から成る世帯
女親と子供から成る世帯
核家族以外の世帯
夫婦と両親から成る世帯
夫婦と両親から成る世帯 夫婦と夫の親から成る世帯
夫婦,子供と両親から成る世帯
夫婦,子供とひとり親から成る世帯
夫婦と他の親族(親,子供を含まない)から成る世帯
夫婦,子供と他の親族(親を含まない)から成る世帯
夫婦,親と他の親族(子供を含まない)から成る世帯
夫婦,子供,親と他の親族から成る世帯
兄弟姉妹のみから成る世帯
他に分類されない世帯
非親族を含む世帯
単独世帯
世帯の家族類型「不詳」

表章項目:
一般世帯数
一般世帯人員
6歳未満世帯員のいる一般世帯数
6歳未満世帯員のいる一般世帯人員
6歳未満世帯人員
18歳未満世帯員のいる一般世帯数
18歳未満世帯員のいる一般世帯人員
18歳未満世帯人員
65歳以上世帯員のいる一般世帯数
65歳以上世帯員のいる一般世帯人員

データの読み込み

library(readr)
家族類型 <- read_csv("./data/家族類型.csv")
family_type <- 家族類型
dat <- as.data.frame(family_type)
colnames(dat)
##  [1] "tab_code"      "表章項目"      "cat01_code"    "家族類型_2015"
##  [5] "area_code"     "地域(2015)"  "time_code"     "時間軸(年次)" 
##  [9] "unit"          "value"
# "tab_code"  "表章項目"  "cat01_code"  "家族類型_2015" "area_code"  "地域(2015)"   "time_code"  "時間軸(年次)"  "unit"  "value"

library(stringr)
dat$time_code <- as.numeric(str_sub(formatC(dat$time_code,format="d"),1,4))
dat0 <- dat

項目の確認

library(dplyr)
dat_ <- dat %>% 
  filter(tab_code=="6" & (cat01_code=="0" | cat01_code=="10" | cat01_code =="20" | cat01_code=="70" | cat01_code =="300" | cat01_code =="310"| cat01_code =="330") & area_code == "0" & unit == "世帯") %>%
  select(-tab_code,-"表章項目",-area_code,-"地域(2015)",-time_code,-"時間軸(年次)",-unit)

colnames(dat_)[1] <- "family_type"
dat_$family_type <- as.factor(dat_$family_type)
str(dat_$family_type)
##  Factor w/ 7 levels "0","10","20",..: 1 2 3 4 5 6 7
library(forcats)
library(ggplot2)
ggplot(dat_,aes(x=family_type,y=value))+
  geom_col(fill="blue")+
theme_minimal(base_family = "HiraKakuProN-W3")

世帯の家族類型

library(dplyr)
dat_ <- dat %>% 
  filter(tab_code=="6" & (cat01_code=="0" | cat01_code=="10" | cat01_code =="20" | cat01_code=="70" | cat01_code =="300" | cat01_code =="310"| cat01_code =="330") & area_code == "0" & unit == "世帯") %>%
  select(-tab_code,-"表章項目",-area_code,-"地域(2015)",-time_code,-"時間軸(年次)",-unit)

colnames(dat_)[1] <- "family_type" # 項目名cat01_codeをfamily_typeに変更
dat_$family_type <- as.factor(dat_$family_type)
library(forcats)
dat_$family_type <- factor(c("総数","親族のみの世帯","核家族世帯","核家族以外の世帯","非親族を含む世帯","単独世帯","他に分類されない世帯"),levels = c("総数","親族のみの世帯","核家族世帯","核家族以外の世帯","非親族を含む世帯","単独世帯","他に分類されない世帯"))

library(ggplot2)
ggplot(dat_,aes(x=family_type,y=value))+
  geom_col(fill="blue")+
labs(title="世帯の家族類型(一般世帯)",subtitle="全国",x="家族類型",y="世帯数",caption = "2015年国勢調査")+
theme_minimal(base_family = "HiraKakuProN-W3")+
coord_flip()

パーセントで表示

knitr::kable(dat_)
family_type 家族類型_2015 value
総数 総数(家族類型) 51877000
親族のみの世帯 親族のみの世帯 34428500
核家族世帯 核家族世帯 29663400
核家族以外の世帯 核家族以外の世帯 4765100
非親族を含む世帯 非親族を含む世帯 457000
単独世帯 単独世帯 16845000
他に分類されない世帯 世帯の家族類型「不詳」 146500
dat_$value <- as.numeric(dat_$value) # 追加

# 総数で割りパーセント
ft <- (dat_$value/51877000*100)[3:7]
# 類型の項目と各類型のパーセントからデータフレームを作成
ftm <- data.frame(x=dat_$family_type[3:7],y=ft)
knitr::kable(ftm)
x y
核家族世帯 57.1802533
核家族以外の世帯 9.1853808
非親族を含む世帯 0.8809299
単独世帯 32.4710373
他に分類されない世帯 0.2823988
library(ggplot2)
ggplot(ftm,aes(x=x,y=y))+
geom_col(fill="lightblue",colour="black")+
xlab(NULL)+
ylab("パーセント")+
theme_minimal(base_family = "HiraKakuProN-W3")

ggplot(ftm,aes(x=x,y=y,fill=x))+
geom_col()+
labs(title="世帯の家族類型(一般世帯)",subtitle="全国",x="家族類型",y="パーセント",caption = "2015年国勢調査",fill="凡例")+
theme_minimal(base_family = "HiraKakuProN-W3")+
coord_flip()

par(family="HiraKakuProN-W3")
barplot(ftm[,2],horiz = T,beside=T,col = "lightblue",names=letters[1:5],xlab = "パーセント",ylab = "家族類型",main = "世帯の家族類型(一般世帯)、全国",sub = "")
par(new=T)
legend(38,7,"a:核家族世帯\nb:核家族以外の世帯\nc:非親族を含む世帯\nd::単独世帯\ne:他に分類されない世帯",text.col="blue",bty = "n",title = "凡例",cex=0.9)
#title(sub = "2015年国勢調査")
mtext("2015年国勢調査",side = 1,line = 3,at=53,cex=0.8)

時系列

<div style="text-align: left;">
<image src="ss2020-10-22 12.12.11.png"
width="600" height="400">
</div>

https://dashboard.e-stat.go.jp/timeSeries

library(readr)
TimeSeries核家族世帯 <- read_csv("./data/TimeSeries核家族世帯.csv")
TimeSeries核家族以外の世帯 <- read_csv("./data/TimeSeries核家族以外の世帯.csv")
TimeSeries非親族を含む世帯 <- read_csv("./data/TimeSeries非親族を含む世帯.csv")
TimeSeries単独世帯 <- read_csv("./data/TimeSeries単独世帯.csv")

世帯数

I <- TimeSeries核家族世帯[,-c(2,3,5)]
II <- TimeSeries核家族以外の世帯[,-c(2,3,5)]
B <- TimeSeries非親族を含む世帯[,-c(2,3,5)]
C <- TimeSeries単独世帯[,-c(2,3,5)]

dat <- data.frame(year=I[,1], I=I[,2],II=II[,2],B=B[,2],C=C[,2])
colnames(dat) <- c("時点","a 核家族世帯","b 核家族以外の世帯",
"c 非親族を含む世帯",
"d 単独世帯")

dat0 <- dat
library(tidyr)
dat_ <- gather(dat,"key","value",-時点)

以下のようにgroup=keyとしないと折線が正しく表示されない。

aes(x=時点,y=value,col=key,group=key)
library(ggplot2)
ggplot(dat_,aes(x=時点,y=value,col=key,group=key))+
  geom_line(size=2.5)+
labs(title = "世帯の家族類型",subtitle = "1995-2015",y="世帯数",caption = "https://dashboard.e-stat.go.jp/timeSeries",col="凡例")+
theme_minimal(base_family = "HiraKakuProN-W3")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

library(ggplot2)
ggplot(dat_,aes(x=時点,y=value,col=key))+
  geom_point(size=2.5)+
labs(title = "世帯の家族類型",subtitle = "1995-2015",y="世帯数",caption = "https://dashboard.e-stat.go.jp/timeSeries",col="凡例")+
theme_minimal(base_family = "HiraKakuProN-W3")+
coord_flip()

library(ggplot2)
ggplot(dat_,aes(x=時点,y=value,col=key,fill=key))+
  geom_col(size=2.5,position = "dodge")+
labs(title = "世帯の家族類型",subtitle = "1995-2015",y="世帯数",col="凡例",fill="凡例",caption = "https://dashboard.e-stat.go.jp/timeSeries")+
theme_minimal(base_family = "HiraKakuProN-W3")

構成比率

dat <- dat0

# 世帯数の合計を計算
t <- dat[,2] + dat[,3] + dat[,4] + dat[,5]

# 計の列を追加する
dat$T <- t

# 扱いやすいよう項目名を簡略化
colnames(dat) <- c("year","a","b","c","d","T")

library(tidyr)
dat <- dat %>%
  mutate(dat, ar=a/T*100,br=b/T*100,cr=c/T*100,dr=d/T*100) %>%
  select(year,ar,br,cr,dr)

# 項目名をもとに戻す
colnames(dat) <-  c("年","a 核家族世帯","b 核家族以外の世帯",
"c 非親族を含む世帯",
"d 単独世帯")

# long formatに変換
dat_ <- gather(dat,"key","value",-年)
aes(x=年,y=value,col=key,group=key)
geom_line()
library(ggplot2)
ggplot(dat_,aes(x=年,y=value,col=key,group=key))+
  geom_line(size=2.5)+
labs(title = "世帯の家族類型(構成比率)",subtitle = "1995-2015",y="パーセント",caption = "https://dashboard.e-stat.go.jp/timeSeries",col="凡例")+
theme_minimal(base_family = "HiraKakuProN-W3")

aes(x=年,y=value,col=key,fill=key)
 geom_col()
library(ggplot2)
ggplot(dat_,aes(x=年,y=value,col=key,fill=key))+
  geom_col(size=2.5)+
labs(title = "世帯の家族類型(構成比率)",subtitle = "1995-2015",y="パーセント",caption = "https://dashboard.e-stat.go.jp/timeSeries",col="凡例",fill="凡例")+
theme_minimal(base_family = "HiraKakuProN-W3")

核家族率

核家族率を親族世帯数分母にして計算。

# 保存したデータを呼び出す
dat <- dat0
str(dat)
## 'data.frame':    5 obs. of  5 variables:
##  $ 時点              : chr  "1995年" "2000年" "2005年" "2010年" ...
##  $ a 核家族世帯      : num  25702598 27272891 28327091 29206899 29754438
##  $ b 核家族以外の世帯: num  6747188 6322014 5918670 5308648 4560560
##  $ c 非親族を含む世帯: num  210748 276160 359686 456455 463639
##  $ d 単独世帯        : num  11239389 12911318 14457083 16784507 18417922
# IとIIの計を計算
t <- dat[,2] + dat[,3]

# 計の列を追加する
dat$T <- t

# 扱いやすいよう項目名を簡略化
colnames(dat)
## [1] "時点"               "a 核家族世帯"       "b 核家族以外の世帯"
## [4] "c 非親族を含む世帯" "d 単独世帯"         "T"
colnames(dat) <- c("year","a","b","c","d","t")
colnames(dat)
## [1] "year" "a"    "b"    "c"    "d"    "t"
library(tidyr)
dat <- dat %>%
  mutate(dat, ar=a/t*100) %>% # 核家族率を計算
  select(year,ar) # 年と核家族率だけを選択
dat
# long formatに変換
dat_ <- gather(dat,"key","value",-year)

col=key,group=keyとaesで設定する。

ggplot(dat_,aes(x=year,y=value,col=key,group=key))+
  geom_line(size=1)+
ylim(0,100)+
theme_minimal(base_family = "HiraKakuProN-W3")+
theme(legend.position = "none")+
labs(title="「核家族率」の推移",subtitle="親族のみの世帯を分母で計算",y="パーセント",x="時点",caption="国勢調査、全国")