更新日:2025年11月7日

ここから本文です。

統計を使って分析してみよう(応用編)

このページでは、実際に統計データを使って分析する手法を紹介しています。
手順を紹介しているので、是非皆さんもパソコンなどで実際に手を動かして分析してみてください。
手順を覚えたら、今度は自分で気になるテーマについて、データを探して分析してみましょう。

使用したデータ

使用した環境及びツール

  • Microsoft Excel
  • R(version4.1.2)
  • R Studio

Rを使った分析

データ分析で利用されているプログラミング言語「R言語(以下、「R」と言います。)」を用いて分析をしてみます。
Rなどのプログラミング言語で分析を行う利点のひとつに、どういうステップでデータ解析を行ったのかをスクリプトに記録することで、他の機会への再現性を保てることがあります。ここでは、「R」とあわせて「RStudio」を利用しています。

なお、Rのコードは滋賀大学データサイエンス学部の佐藤健一先生にご協力いただいています。

データを準備する

まずは必要なデータを準備します。
ここでは、以下の2つのデータをダウンロードしました。

統計名/データ名 ファイル名 出典 基準年 地域
国土数値情報-地価公示データ L01-25_26_GML.zip 国土交通省
国土数値情報ダウンロードサイト(外部リンク)
2025年 京都府
住民基本台帳に基づく人口、人口動態及び世帯数調査
【総計】市区町村別年齢階級別人口
2504ssnen.xlsx

総務省
政府統計の総合窓口e-Stat(外部リンク)

2025年 -

 

データ準備の詳細な説明をみる(PDF:1,004KB)

Rを使った地価公示価格と年齢階級別人口割合の分析

詳しいスクリプトの解説をみる(PDF:718KB)

データの読み込みと整理

#以下はコメント(注釈)として補足を記載しています(#以下は入力しても影響がありませんので、入力不要です)。

# データの読み込み
library(sf) 
d <- read_sf("L01-25_26_GML")
dim(d)

# データの整理
d1 <-st_drop_geometry(d)
dim(d1)
df <- as.data.frame(d1)
df_house <- subset(df, grepl("住宅" , L01_028))

# 箱ひげ図の作成
png("地価公示価格(住宅)_箱ひげ図.png",width=1000,height=1000,pointsize=24)
boxplot(df_house$L01_008,log="y",ylab="地価公示価格[円/㎡]", ylim = c(10^3, 10^7),axes=F)
axis(side=2,at=10^(3:7),labels=c("千","万","十万","百万","千万"))
dev.off()

箱ひげ図が作成されました。

図1:京都府の地価公示価格(住宅用途)の箱ひげ図
京都府の地価公示価格(住宅用途)の箱ひげ図

地価公示価格は数千円台から数十万円台に分布し、四分位範囲は数万円から数十万円であることが分かります。
また外れ値が多くあり、平米単価が数百万円台となっている地点が数か所あることがうかがえます。

箱ひげ図:データの分布をおおまかに把握できるグラフ。
箱の下の線が第1四分位数、箱の中の線が第2四分位数、箱の上の線が第3四分位数を表しています。

今回作成した箱ひげ図からはデータのばらつきが大きいこと、外れ値があることが分かります。
代表値を選択する際に平均値は外れ値の影響を受ける可能性があるため、中央値を選択することにします。

行政区域ごとに代表値を設定

# 行政区域ごとに地価公示価格の代表値(中央値)を設定
d2 <- aggregate(L01_008~L01_001,data=df_house,FUN=median)
dim(d2)
write.csv(d2,"行政区域コード別集計(住宅).csv",row.names=F)

#行政区域ごとに代表地点(座標)を設定
d3 <- aggregate(cbind(X,Y)~L01_001, data=cbind(d1,st_coordinates(d)),FUN=mean)
head(d3)

# 地価公示価格の代表値と代表地点を合わせたデータに整理する
d23 <- merge(x=d2,y=d3,by="L01_001")
dim(d23)
write.csv(d23,"座標付公示価格(住宅).csv",row.names=F)

行政区域ごとの地価公示価格の代表値と代表地点をまとめたCSVファイルが作成されました。

ファイルを確認すると、行政区域ごとにデータが確認できます。

地図グラフに可視化

# データの読み込み
library(maps)
library(mapdata)
png("地価公示価格分布(住宅).png",width=1000,height=1000,pointsize=24)
map("japan","kyoto")

# 価格帯に合わせて色ラベルを設定し軸や凡例を設定
k <- cut(d23$L01_008,breaks = c(0, 100000, 300000, 500000, 700000), labels = FALSE)
palette(c("blue", "green", "gold", "tomato"))
points(d23$X, d23$Y, pch=19, col=k)
legend("bottomleft", legend = c("〜10万円", "10万〜30万円", "30万〜50万円", "50万~70万円"), fill = c(1, 2, 3, 4))
dev.off()

地図グラフが作成されました。

図2:京都府の行政区域ごとの地価公示価格の中央値分布図
京都府の行政区域ごとの地価公示価格の中央値分布図
地図データはRのmapsおよびmapdataパッケージに基づいて作成(原典:U.S. CIA World DataBank II)したものです。

地図グラフにしてみると、位置関係と価格帯が一目で分かり、全体の傾向が見やすくなります。

地価公示価格の中央値は、京都市とその周辺地域で10万円を超え、それ以外の地域では10万円未満であることが分かります。

地価公示価格データと人口データを合わせて相関係数を調べる

# 人口データの読み込み
d4 <- read.csv("2504ssnen.csv")

# 人口データと合わせる
d234 <- merge(x=d23,y=d4,by.x="L01_001",by.y="団体コード")
dim(d234)

# 地価公示価格と年齢階級別割合との相関係数
prop <- d234[,9:29]/d234[,8]
png("地価公示価格_相関係数(住宅).png",width=1000,height=1000,pointsize=24)
par(mar=c(10,4,4,2))
barplot(cor(d234[,"L01_008"],prop),las=3,ylab="相関係数")
dev.off()

相関係数の棒グラフが作成されました。

図3:京都府の市区町の地価公示価格(中央値)と年齢階級別人口割合の相関係数
京都府の市区町の地価公示価格(中央値)と年齢階級別人口割合の相関係数のグラフ

棒グラフのラベルの頭文字に”X”がありますが、これはR言語の仕様で、データの列名が数字から始まるときは頭文字に”X”がをつきます。
気になる場合は、例えばbarplot関数のオプションに「names.arg=seq(from=0,to=100,by=5)」を追記すると0から100まで5刻みの数字がラベルとして表示されます。

20~24歳から30~34歳までの年齢階級では相関係数が約0.7と強い正の相関がみられ、反対に70~74歳の年齢階級では相関係数が約-0.7と強い負の相関がみられます。

このことは、地価公示価格(中央値)が高い地域では20~24歳から30~34歳の年齢階級の割合が高く、反対に地価公示価格(中央値)が低い地域では70~74歳の年齢階級割合が高い傾向があることを示しています。

 

是非、色んなデータで実践して、解釈をしてみてください。

 

お問い合わせ

総合政策環境部企画統計課

京都市上京区下立売通新町西入薮ノ内町

ファックス:075-414-4482

kikakutokei@pref.kyoto.lg.jp