2014-06-30

交差検証法

不要な変数を削除するために、交差検証法を使って変数選択します。

2014-06-22

Adblock Edge

Adblock Plusには「控えめな広告を表示する」というチェックボックスがあり、デフォルトでチェックされています。
この状態では、googleのテキスト広告などが表示されます。
チェックを外せばよいのですが、他にも何かあるかもしれないのでAdblock "Plus" から "Edge" へ乗り換えたを参考に他のアドインを探して、次の5つを入れることにしました。

1. Adblock Edge Adblock Plusの代わりに使います。
フィルターには、最初から入っている
Disable Tracking
Disable Malware Domain
Disable Social Media
の他に、fanboy-annoyances
https://secure.fanboy.co.nz/fanboy-addon.txt
を使うとfacebookの広告も消すことができ、日本独自の広告を消すにはABP Japanese Filtersの他に
fanboy-Japanese
https://secure.fanboy.co.nz/fanboy-japanese.txt
を使います。
さらに豆腐フィルタも使います。

2.Disconnect
3.FlashBlock
4.RequestPolicy
高木浩光@自宅の日記 - 「NoScript」をやめて「RequestPolicy」にしたによると
> YouTubeなどを埋め込んだページや、はてなブックマークの「○○ users」の画像なども、デフォルトでは全てのサイトでブロックされてしまうが、ステータスバーのメニューから「Allow requests to hatena.ne.jp」を選ぶことで、信用性の高い(はずの)サイトについて全サイトからの参照を許可してしまえば、その後はそのまま使うことができる。これを必要とするサイトは、そう多くはない。
> 一方、「Allow requests from example.jp」は滅多に使わない方がよい。これを許可してしまうと、そのサイトが改竄されたときに対策がパアになる。面倒でも、個別に「Allow requests from example.jp to example.com」でひとつひとつ許可して使う。そうすれば、攻撃者がexample.jpを改竄したとしても、example.comも同時に改竄しない限りこの対策はパアにならない。
Firefoxを便利に - RequestPolicyの設定例
5.Privacy Badger

関係ないですが、最近のThinkPadを買った人のブログ
espresso3389の日記
100円グリス
小型SSDの規格がmSATAからm.2というものに変わっていました。
ThinkStation E31 システム リカバリ ディスクを複数回作成する

2014-06-17

行列式

3次の行列式の性質を説明しました。
前回は演習だったのでスライドはありません。

2014-06-09

多変量回帰

今日から新しい内容に入ります。

前回の解答を今後の講義で使うのでブログ本文に書いておきます。
先月載せたものと基本的に同じですが、引数の引き渡しだけが違っています。
Sub 前回の課題()
Dim x()
Sheets(1).Select
i = 1
Do While Cells(i, 1) <> ""
  i = i + 1
Loop
p = i - 1
ReDim x(p, p + 1)
For i = 1 To p
  For j = 1 To p
    x(i, j) = Cells(i, j)
  Next j
Next i
Sheets(2).Select
For i = 1 To p
  x(i, p + 1) = Cells(i, 1)
Next i
Sheets(3).Select
場所 = 0
For i = 1 To p
  For j = 1 To p
    Cells(場所 + i, j) = x(i, j)
  Next j
Next i
Call 連立一次方程式(x(), p)
場所 = 場所 + p + 1
For i = 1 To p
 For j = 1 To p + 1
  Cells(場所 + i, j) = x(i, j)
 Next j
Next i
End Sub

Sub 連立一次方程式(係数行列(), r)
Rem (c) 2014 Kaoru Fueda
Dim 最大値()
ReDim 最大値(r)
For i = 1 To r
  If i < r Then
    最大比 = 0
    最大行 = i
    For j = i To r
      最大値(j) = 0
      For k = i To r + 1
        If Abs(係数行列(j, k)) > 最大値(j) Then
          最大値(j) = Abs(係数行列(j, k))
        End If
      Next k
      If 最大値(j) > 0 Then
        If 最大比 < Abs(係数行列(j, i) / 最大値(j)) Then
          最大比 = Abs(係数行列(j, i) / 最大値(j))
          最大行 = j
        End If
      End If
    Next j
    If 最大行 > i Then
      For k = 1 To r + 1
        temp = 係数行列(i, k)
        係数行列(i, k) = 係数行列(最大行, k)
        係数行列(最大行, k) = temp
      Next k
    End If
Rem ここは講義では説明していません。
Rem ピボットが0の場合は最も0=0に近い行を第i行に移動して、後に無視する
    If 最大比 = 0 Then
      最小値 = 最大値(i)
      最小行 = i
      For j = i + 1 To r
        If 最小値 > 最大値(j) Then
          最小値 = 最大値(j)
          最小行 = j
        End If
      Next j
      If 最小行 > i Then
        For k = 1 To r + 1
          temp = 係数行列(i, k)
          係数行列(i, k) = 係数行列(最小行, k)
          係数行列(最小行, k) = temp
        Next k
      End If
    End If
  End If
Rem ピボットを1に
  If 係数行列(i, i) <> 0 Then
    For k = i + 1 To r + 1
      係数行列(i, k) = 係数行列(i, k) / 係数行列(i, i)
    Next k
  Else
Rem ここは講義では説明していません。
    MsgBox ("解けないので解の一つを0とします。")
    For k = i + 1 To r + 1
      係数行列(i, k) = 0
    Next k
  End If
  係数行列(i, i) = 1
Rem ピボット以外を0に
  For j = 1 To r
    If j <> i Then
      For k = i + 1 To r + 1
        係数行列(j, k) = 係数行列(j, k) - 係数行列(i, k) * 係数行列(j, i)
      Next k
      係数行列(j, i) = 0
    End If
  Next j
Next i
End Sub

今日使うデータです。

都市番号 都市 気温y緯度x1経度x2標高x3
1稚内-8.0 45.42 141.68 2.8
2旭川-13.6 43.77 142.37 111.9
3札幌-9.5 43.05 141.33 17.2
4青森-5.4 40.82 140.78 3.0
5盛岡-6.7 39.70 141.17 155.2
6仙台-3.2 38.27 140.90 38.9
7金沢-0.1 36.55 136.65 26.1
8長野-5.5 36.67 138.20 418.2
9高山-7.6 36.15 137.25 560.2
10軽井沢-10.0 36.33 138.55 999.1
11名古屋-0.9 35.17 136.97 51.1
12飯田-4.7 35.52 137.83 481.8
13東京-0.4 35.68 139.77 5.3
14鳥取0.5 35.48 134.23 7.1
15京都-0.6 35.02 135.73 41.4
16広島0.2 34.37 132.43 29.3
17福岡1.5 33.58 130.38 2.5
18鹿児島2.0 31.57 130.55 4.3
19高知0.1 33.55 133.53 1.9
20那覇13.5 26.23 127.68 34.9
出典:坂元慶行、石黒真木夫、北川源四郎著「情報量統計学」共立出版株式会社

2014-06-07

Nokia Lumia1020で撮ったDNGファイルをDxO Optics Proで現像する

デジカメのRAWファイルの現像に使っているDxO Optics ProがNokiaのWindows Phone 8スマートフォンLumia 1020のカメラのDNGファイルに対応しました。
2/3インチセンサーで4100万画素という物凄い画素数で、縦横比4:3なら7136x5356画素、縦横比16:9なら7712x4348画素で記録されます。
実際のところ、そこまで解像度が高いわけではなく、ズームレンズがないので中央部を切り取ってデジタルズームするためです。
一度の撮影で、4:3なら約3822万画素のDNGファイルと約500万画素のJPEGファイルが記録されて、普通にアップロードする時はJPEGファイルの方が使われます。
広角で写すときには3800万画素を500万画素に縮小してJPEGファイルを作り、望遠で写すときには中央部の500万画素を切り抜いてJPEGファイルを作ってくれます。

このブログでは長辺1600画素までしか載せられませんが、例えば広角側で

このような写真を撮れる時、望遠にすると

このように、広角で撮った場合と同じくらいシャープな写真が撮れます。
普通のスマホで拡大して撮るとぼやけますが、Lumia1020なら元の画素数が多いのでぼやけません。

パソコンでDxOやLightroomを使って現像すると元の3800万画素のファイルが作れるので、上の写真の一部分を見てみます。
まず中央部は

このように写っていて、これで約11倍のズーム相当です。
ここまで拡大すればぼやけてきますが、それでも塔の瓦、手前の樹木の葉は一枚一枚写ってます。
端の方の写り方は、左下隅は

これくらい写っていてまだ悪くないのですが、右下隅だと

このように流れています。ZEISS銘であっても、こんな小さなレンズですから仕方ないでしょう。
広角側では縮小されますので、このようのなボケは分からなくなりますし、望遠側では中央部を切り抜きますので周辺は使いません。

DxOで現像する時の注意点として、このカメラ固有の情報が正しく設定されていないようで、ホワイトバランスのプリセットは使えません。
撮影時のオートホワイトバランスのままで現像すると

このようになる写真を、昼光プリセットで現像すると

このような色になってしまいます。
撮影時のオートホワイトバランスは色温度5780K、色相-29で、この写真の雲の白い部分で色を合わせても同じような値になります。
ホワイトバランスは撮影時の値を使うか、手動で合わせる必要があります。

2/3インチセンサーで4000万画素前後ですから、画素の大きさは1/3インチセンサーの約1000万画素と同じで、高感度ノイズは多いです。
でもDxOのノイズリダクションPrimeを使ってから縮小すれば、何せ元の画素数が大きく縮小率が高いので、ノイズは潰れてしまって分からなくなります。

この写真は感度オートの上限ISO400で撮りました。
夜空の部分にも街燈の光芒にもノイズは無く、それでいてビルの窓灯りはぼやけていません。
手動ではISO4000まで上げられます。

DxOには歪曲収差の自動補正機能がありますが、既に補正情報がDNGに書き込まれているのか良く分かりませんが、歪曲収差補正を切った方が直線が直線として写ります。
周辺光量落ちは大きいですが、DxOで補正量をAUTOにすると正しく補正されます。

トータルで見て、スマートフォンなのに望遠にしてもぼやけないのは凄いです。
ただ、センサーの大きさを、デジタルズームのための画素数の多さに使っているので、2/3インチで約1200万画素センサーのデジカメ(フジのX20など)と比べれば色、諧調の豊かさで負けます。
高感度ノイズは、等倍で見れば多いですが、他のデジカメと同じ大きさに縮小してしまえばノイズは潰れてしまうので、2/3インチセンサーのコンパクトデジカメに負けません。
個人的には縦横比3:2で撮りたいのにその設定がないのが残念ですが、周辺は流れるので4:3で撮って上下を切って7136x4758にすれば良いかなと思います。

2014-06-02

一般の連立一次方程式

連立一次方程式の最終回です。
未知数の個数を3個に限定しないようにします。