はじめに

Homeデザイン > 街区の造形

街区の造形

一様な乱数と正規分布

自然界に存在する事象には複雑でおもしろいばらつきが見られます。「Towers of Lights」や「Design by Boxes」は,そんなばらつきの造形を目指したデザインだったと思いますが,そこで使っていたのは「一様な乱数」でした。

「一様な乱数」というのは,サイコロの目のように,すべての目が出る確率が等しい場合の乱数です。「一様な乱数」を発生させる関数の一つが,random() でした。たとえば,以下のように x を生成させれば,x は,1000〜2000の間で一様に変化します。

x = 1000 + random.random() *1000

「一様な乱数」を使っても,ある種の複雑でおもしろいばらつきは生成できると思いますが,しかし,実際に自然界に存在する事象のばらつきは「正規分布」にしたがう(「正規分布」で説明できる)ものが多いことがわかっています。

ここでは,「正規分布」によるデザインの例として,「街区の造形」について考えてみましょう。

5つの都市中心部

図1は,東京の主要な都市中心部である浅草,銀座,池袋,渋谷,新宿の街区の立体構成を示してたものです。この図は,建物の外形(平面)がプロットされた地図データ(ゼンリンの住宅地図)に基づき,建物の外形を階数情報にしたがって立ち上げて作成しています。

詳しくは以下の参考文献を参照してください(やや古いデータに基づく図です)。

参考文献:

  • 安藤直見他,街区の立体構成による空間領域と量塊的イメージの形成 都市中心部の街区構成に関する研究,日本建築学会計画系論文報告集 No.502,1997年12月

図1 都市中心部の立体構成

 

図1の5つの都市中心部のカタチ(形態)はそれぞれに特徴的です。それぞれの地区の「らしさ」がこの図に表れていると思います。では,その「らしさ」はどのような特性をもつものなのでしょうか?

カタチをデザインするというお話からは脱線しますが,都市の形態にどのような特性を見いだすことができるのかを,図1に示した都市中心部の立体構成を例に考えてみましょう。

図1の範囲は表1の通りです。浅草では浅草寺を中心に周辺の地区を対象範囲としています。池袋,渋谷,新宿では,高層ビル街の他,周辺の住商混在地区や住宅地区も範囲に含んでいます。

表1 対象地区

 

ここで「街区」と言っているのは,道路で囲まれた領域を指しています。一般に,街区内には1つ以上の(多くの場合は複数の)敷地が存在し,そこに1つ以上の(多くの場合は多数の)建物が建っています。それぞれの街区の概要(特性)は計算すると表2のようになっていました。

表2 街区の概要

 

「建物/街区」は,1街区あたりの平均建物数を示しています。浅草で,1街区あたりに立つ建物数が最も多いのは浅草で,渋谷,銀座が続きます。

「平均階数」は,街区を単位とした場合の建物の階数の平均値です。すなわち,街区内の最も高い階数の建物をその街区の建物階数とし,その平均値を求めた数値です。建物単位の階数の平均値とは多少異なりますが,おおざっぱには,地区全体の建物の高さの平均を表しています。詳しくは後述しますが,浅草では高層ビルが少なく2〜3階建ての建物が多いため,数値が小さくなっています。一方,超高層ビルが集まる新宿では数値が大きくなっています。

「全体建坪率」は,地区全体の街区面積に対する建物面積の割合です。「平均建坪率」は,街区単位の建坪率の平均値です。「全体建坪率」と「平均建坪率」が乖離しているのは浅草と新宿ですが,これは,広大な街区面積をもつ浅草寺や超高層ビル街が「全体建坪率」を押し下げているからです。

表2は,各地区のおおざっぱな特性を示したものですが,それぞれの地区の「らしさ」の一端を表すものだと思います。

このように,いくつかの事象(この場合は5つの都市中心部)の平均値を比較すると,その違いの一端を把握することができます。実際,平均値は,集合(事象)を比較するための常套手段です。でも,いつも平均値だけで事象の特性の違いが把握できるとは限りません。

 

どちらが優秀?(統計の基礎)

デジタルデザインの話からさらに脱線しますが(ほんとは脱線してはいませんけど),ここで,統計の基礎について復習をしましょう。

単純なモデルを取り上げます。あなたは,ある会社の社長だとしましょう。あたなの会社には,営業1課と2課があり,2つの課の社員の営業成績が表3の通りだったと考えてください(これは単純モデルですから,成績は正しく評価されており,成績以外のファクターは考えないことにしてください)。あなたは,営業1課と2課にボーナスをどのように配分しますか?

表3 営業成績

 

営業成績の平均値を計算すると,1課は6.7点,2課は7.3点です。「2課の方が成績が優れているので,2課に多くのボーナスを配分する」というのがとりあえずの回答になりそうです。でも,ほんとにそれでいいんでしょうか?

標準偏差

中学か高校の数学で「標準偏差」を習ったと思います。標準偏差の計算式は以下の通りです。

で,営業1課と2課の標準偏差を計算すると表4のようになります。

表4 標準偏差

 

標準偏差は,値が大きいほど平均からのずれが大きくなる数値で,以下の手順で求められます。

  1. 個々の標本(個々の課員)の標本値(成績)の平均値からのずれ(差)を計算
  2. 差の正負を消去するためにいったん二乗して合計を求める
  3. その合計を標本数(この場合は課員数=15名)で割り,標本(課員)あたりのずれ(差)を算出
  4. その値は二乗して算出されているので平方する

表4に見られるように,1課と2課の標準偏差は 2.24 と 0.68 です。すなわち,1課のばらつきが2課に比べてかなり大きくなっています(これはそのように作った極端な例題だからなのですが…)。この標準偏差の違いは,平均の 6.73 と 7.27 の違いに比べてより顕著です。

1課のばらつきが大きいのは,1課には成績が10点の課員No.4とか,成績が0点の課員No.13らがいるからです。一方,2課は,大半の課員の成績が7点で,1課のように極端に成績がよかったり悪かったりする課員がいません。つまり,1課は凸凹の激しい課で,2課はおしなべて平均的な課ということです。

標準偏差は,表4のようにまともに計算すると面倒ですが,今日では,表計算ソフトを使えば一瞬で計算できます。Excelならば,stdevという関数で計算できます。

ついでに,Excelの使い方について補足をしますと,Excelには「分析ツール」というアドインがあります(なぜかMacintosh版の最新バージョン「Excel 2011 for mac」ではなくなってしまったのですが,Windows版にはついています)。標準ではインストールされないアドインですが,簡単にインストールできます。分析ツールを使うと,基本統計量,相関マトリクス,重回帰分析などの高度な統計解析が手軽にできます(より専門的な統計解析は専用のアプリケーションを使う方がいいと思いますが…)。

中央値とばらつき

社長(あなた)の判断としては,成績が最悪の1課の課員No.13をクビにする,ということもありえるのかもしれませんが,ここでの問題は,課員の集合に注目しているので,個々の課員の成績には立ち入るべきではありません。なぜなら,課員No.13は自分の成績を犠牲にして課のために働いている人かもしれないからです。統計は個々の優劣を見るためのものではなく,集合(データの集まり)の特性を把握するためのものです。表3のデータだけでは,課員No.13がいなくなった後の1課がどのような成績になるかは予測できませんから,このデータから1課と2課の集団としての特性を分析することと,課員No.13の評価をすることは別問題です。

集合(データの集まり)の特性を表すための基本統計量としては,平均と標準偏差の他に,メジアン,モード,範囲,最小,最大などの指標もあります。でも,平均と標準偏差が,もっとも基本的で,そしてもっとも重要な基本統計量です。集合の中央の値を表すのが平均で,中央からのばらつきを表すのが標準偏差です。

平均が日常的によく使われるのに対して,標準偏差は使われないことが多いかもしれません。実際には,標準偏差には,「標本の標準偏差」とか「母集団の標準偏差の推定値」などいくつかの計算方法があって,平均ほど計算が単純ではないという面もあります。でも,平均だけでなく,ばらつき(偏差)を見ることでものごとの大事な特性に気がつくことがあります。

 

街区の高さ分布

さて,街区の立体構成に話を戻します。

前述の5つの都市中心部の街区の高さ(各街区内に建つ建物の階数のうちもっとも値が大きなもの)の分布(総街区面積に対する各街区の階数別の割合)を示すと,表5および図2のようになっていました。

表5 高さ(階数)の分布

 

図2 高さ(階数)の分布

 

先に述べたことと一部重複しますが,図2を見ると,以下のことが把握できると思います。

  1. 浅草では,2〜7階の比較的低層な建物が広く分布している。
  2. 銀座は8〜10階の高さの街区が全体の約7割を占めている。
  3. 池袋,渋谷,新宿には8〜10階の高さの街区が多いが,より低層,あるいは,より高層の街区も広く分布している。
  4. 新宿には22階を超える高さの街区が数多く分布している。

図2で,もっとも注目するべきことは,階数の分布グラフが,浅草では7階,その他の4つの地区では8〜10階を頂点として,左右に(より低層または高層に)末広がりに伸びていく山形のカタチをしていることです。中学または高校の数学で「正規分布」を習ったと思います。図2のグラフのカタチはその正規分布に似ています。

正規分布というのは,図3に示したような平均を頂点とした山形のカタチの分布のことです。ここで,平均±標準偏差の範囲に分布するケースが全体の68%,平均±標準偏差×2の分布が全体の95%,平均±標準偏差×3の分布が全体の99.7%を占めます。

 

図3 ヴォリューム

 

自然界に存在するものの分布,たとえば,集団における身長とか体重とか試験の成績の分布は正規分布にしたがうことがわかっています。すなわち,集団における個々の出来事は,平均を中心にばらついていることが多いのです。とはいっても,実際には,人間は,自然に逆らってものごとを混乱させることがよくあるので,分布がゆがむことがあります。一例ですが,測定したはずの体重の値がアンケートによるものであった場合,体重を少なめに回答する人が多ければ,完全な正規分布が成り立ちません。試験の成績にしても,一部の問題が極端に簡単だったり難しかったりすれば,正確な正規分布からはずれます。よく勉強する集団と勉強しない集団が混じっている場合,その混成集団の試験の成績は,1つではなく,2つの山が重なるような分布になるかもしれません。

それでも,正確ではないとしても,自然界の出来事は,おおまかには,正規分布にしたがいます。図2はそのことを示しています。

高さ分布のシミュレーション

建物の高さ分布のシミュレーションをしてみましょう。

街区(グリッド)

図4は,平面が6m×6m,高さが30mのビル(直方体)を,3mの間隔を空けて,10×10個,並べたカタチです。

図4 街区(グリッド)

 

このカタチを生成する手順はスクリプト1のようになります(簡単なスクリプトですよね。もう慣れましたか?)。

スクリプト1

  1. #nx×nyのグリッド状に建物を配置
  2. #建物の幅×奥行:6000×6000
  3. #高さは30000
  4. import random
  5. scene = xshade.scene() #インスタンス
  6. nx = 10
  7. nz = 10
  8. w = 6000   #幅と奥行
  9. h = 30000   #高さ
  10. bx = 3000   #建物の間隔(X方向)
  11. bz = 3000   #建物の間隔(Y方向)
  12. n = 0
  13. scene.create_primitive_plane("Ground", 0, True, 1, 1, [87000, 0, 0], [87000, 0, 87000], [0, 0, 87000], [0, 0, 0])
  14. for x in range(nx):
  15. → for z in range(nz):
  16. → → n = n + 1
  17. → → x0 = x * (w + bx)
  18. → → z0 = z * (w + bz)
  19. → → scene.create_primitive_plane("Volume"+str(n), 0, True, 1, 1, [x0, 0, z0], [x0+w, 0, z0], [x0+w, 0, z0+w], [x0, 0, z0+w])
  20. → → scene.solid_extrude([0, h, 0])
  21. → → obj=scene.active_shape()
  22. → → obj.has_surface_attributes = 1
  23. → → obj.surface.has_diffuse = True
  24. → → obj.surface.diffuse_color = (random.random(), random.random(), random.random())
  25. print(n,h)

街区(ランダム)

図5は,ビルの高さを,乱数(random関数)を用いて,30m±30m,すなわち,0〜60mの間で一様にに変化させたカタチです。

図5 街区(ランダム)

 

図5を生成したスクリプト2は,スクリプト1の2箇所を書き換えています。

スクリプト2

第1には,11行目の「h = 30000」を以下のように変えています。

  1. h_center = 30000  #高さの中心値
  2. h_range = 10000  #高さの範囲

また,第2に,23行目に以下の1行を加えています。

  1. h = h_center - h_range + random.random() * h_range * 2

random.random() によって0〜1の乱数が発生しますから,上記の数式によって,h は,h_center ± h_range の範囲で変化します。

 

街区(平均とばらつき)

続いて,図6は,ビルの高さを,平均が30m,ばらつき(標準偏差)が5mとなるように分布させたカタチです。

図6 街区(平均とばらつき)

 

図6を生成したスクリプト3は,スクリプト1(またはスクリプト2)の2箇所を書き換えています。

スクリプト3

第1には,11行目の「h = 30000」を以下のように変えています。

  1. h_avg = 30000  #高さの平均
  2. h_dev = 5000   #高さの偏差

また,第2に,23行目に以下の1行を加えています。

  1. h=random.gauss(h_avg, h_dev)

ここでは,上記の23行目にあるように,random.random() の代わりに,random.gauss(平均, 標準偏差) という関数を使っています。random() が0〜1の一様な乱数を発生させるのに対して,gauss(平均, 標準偏差) は,平均と標準偏差で指定された正規分布にしたがう乱数を発生させます。

実際の街区では,近接する建物の高さが図5のように一様に変化することはまれだと思います。工事中であればそんな場合もあるかもしれませんが…。建物の高さの分布は正規分布に類似するはずですから,図6の方がリアルです。

(続く)