nishiru3の日記

備忘録です。ネットのゴミ。

正規分布の指数型分布族への変形

指数型分布族

指数型分布族にはいくつかの表現があるが、本記事では次のとおりとする。

f:id:nishiru3:20180714063027p:plain

ここで、\thetaは自然パラメータ、\phiは分散に関するパラメータである。

正規分布の密度関数

正規分布の密度関数は次のとおりである。

f:id:nishiru3:20180714063247p:plain

指数型分布族への変形

指数型分布族への変形は次のとおりである。

f:id:nishiru3:20180714063357p:plain

指数型分布族との比較

上記の二つを比較すると次のとおりである。

f:id:nishiru3:20180714063536p:plain

期待値と分散

指数型分布族の期待値と分散の導出はまだやってないが、
それに従うと、次のとおりである。

f:id:nishiru3:20180714063844p:plain

数値データかどうかのチェック

モチベーション

  • 数値解析をしていると、入力データや出力データが数値データになっているかのチェックをする事が多い。
  • 解析そのものはFortranC言語で書いてるので、入力時や出力時のチェックを行うのも良いが、文字や文字列処理を書くのはめんどくさい。
  • AWKPerlであれば文字や文字列処理は得意。
  • ひと手間かかるが、AWKPerlで一度確認した方が結果的に時間がかからない。

AWKの場合

プログラム

BEGIN{
    FS = ','
}
/^[+-]?([0-9]+[.]?[0-9]*|[.][0-9]+)([eE][+-]?[0-9]+)?$/{
    print $0;
}
END{
}
  • BEGIN内では、フィールドセパレータ(FS)をカンマに設定している。

概略

  • 「^」:最初にマッチ
  • 「$」:最後にマッチ
  • 「[+-]?」:+もしくは-が付いても付かなくても構わない。
  • 最初の小かっこ内は、仮数部に引っかかるようなパターンである。
  • 次の小かっこ内は、指数部に引っかかるようなパターンである。ただし、カッコ後に「?」が付いているので、指数部はあってもなくても構わない。

仮数

  • [0-9]+で1コ以上の数値の並び。
  • 「[.]?」で小数点があってもなくても構わない。
  • [0-9]*でその後の数字が0コ以上。
  • 「|」は、または、の意。整数部が0の場合省略可能。

指数部

  • 指数部は「[eE]」で表記。プログラムによってはDとかでも出力されるので、[eED]としておけば、「e」もしくは「E」もしくは「D」で引っかかるようにできる。
  • 「[+-]?」は指数部のプラスマイナスにマッチする。あってもなくても良い
  • 「[0-9]+」は「1.0E-10」の「10」なんかに引っかかる。「+」が付いているので、1コ以上の数字が必要。
  • 最後の「?」は、指数部全体にかかるので指数部はあってもなくても構わない。

この表現はPerlでも使える。

プログラミング言語AWK

プログラミング言語AWK

  • 作者: A.V.エイホ,P.J.ワインバーガー,B.W.カーニハン,足立高徳
  • 出版社/メーカー: USP研究所
  • 発売日: 2010/01/01
  • メディア: 単行本(ソフトカバー)
  • クリック: 1回
  • この商品を含むブログを見る

表組みのCSSメモ

表組みとCSS

HTML

htmlファイルは次のとおり、linkはCSSファイルのパスを書いておく。
talbleのクラスはCSSファイルを参照。

<!DOCTYPE html>
<html>
<head>
    <title>表組み</title>
    <link rel="stylesheet" href="./css/style.css">
</head>
<body>
<table class="sample">
    <tr>
        <th>th1</th>
        <th>th2</th>
        <th>th3</th>
        <th>th4</th>
    </tr>
    <tr>
        <td>td1</td>
        <td>td2</td>
        <td>td3</td>
        <td>td4</td>
    </tr>
    <tr>
        <td>td1</td>
        <td>td2</td>
        <td>td3</td>
        <td>td4</td>
    </tr>
    <tr>
        <td>td1</td>
        <td>td2</td>
        <td>td3</td>
        <td>td4</td>
    </tr>
    <tr>
        <td>td1</td>
        <td>td2</td>
        <td>td3</td>
        <td>td4</td>
    </tr>
</table>
</body>
</html>

CSS

CSSファイルは次のとおり。
コメントは/**/ で行う。

table, th, td {
    border-collapse: collapse;
    border: 1px solid #ccc;
    line-height: 1.5;
}
/* sampleはhtml側でclassとして指定する*/
table.sample th {
    width: 150px;
    padding: 10px;
    font-weight: bold;
    vertical-align: top;
    background: #3f3f3f;
    color: #ffffff;
}
table.sample td {
    width: 350px;
    padding: 10px;
    vertical-align: top;
}
/* 偶数と奇数で切り替える */
tr:nth-child(even) {
    background: #d9d9d9;
}

セッション

ページをまたいでデータを保持する

  • PHPにおいてページをまたいでデータを引き継ぎたいときは、セッションを使う。

a1.phpのコード(遷移元)

  • これを最初のページ(遷移元)にする。
  • ただし、phpコードの最初に記述すること。途中からsession_startすると、データが失われる。
  • 配列aaa1のデータを設定し、$_SESSION[['a1']に保存している。
<?php
session_start();
$aaa1 = [1000,1001,1002];
$_SESSION['a1'] = $aaa1;
echo '配列$aのデータ@a1.php<br/>';
foreach ($aaa1 as $a1) {
    echo $a1.'<br />';
}
echo '<a href="./a2.php">別ページに遷移</a>';

a2.php(遷移先)

  • a2.phpは遷移先のページである。
  • a1.phpと同様にしてsession_start();を記述する。
  • $_SESSION['a1']から引き取って、$aaa2に入れている。
<?php
session_start();
$aaa2 = $_SESSION['a1'];
echo '配列$aのデータ@a2.php<br/>';
foreach ($aaa2 as $a2) {
    echo $a2.'<br />';
}

フィッシャー情報量の事例(ポアソン分布)

フィッシャー情報量

フィッシャー情報量は次の記事を参照。
nishiru3.hatenablog.com


ポアソン分布の基本的性質

ポアソン分布の基本的性質は次の記事を参照。
nishiru3.hatenablog.com

ポアソン分布の対数尤度関数

f:id:nishiru3:20180711060842p:plain

ポアソン分布のフィッシャー情報量

f:id:nishiru3:20180711060922p:plain

フィッシャー情報量の事例(正規分布)

フィッシャー情報量

フィッシャー情報量は次の記事を参照。
nishiru3.hatenablog.com

正規分布の基本的性質

正規分布の基本的性質は次の記事を参照。
nishiru3.hatenablog.com

正規分布の対数尤度関数

f:id:nishiru3:20180711054829p:plain

正規分布のフィッシャー情報量

f:id:nishiru3:20180711054909p:plain

MySQLの設定

MySQL8.0のインストール

次のサイトでインストーラーをダウンロード。

URL:https://www.mysql.com/jp/

インストールファイル:
mysql-installer-community-8.0.11.0.msi

認証方式の変更

設定ファイルの変更

C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

の中の

「default_authentication_plugin=caching_sha2_password」

「default_authentication_plugin=mysql_native_password」
に変更。

ユーザーの確認と追加

MySQL 8.0 Command Line Client を立ち上げて確認。

SELECT user, host, plugin FROM mysql.user;

次のコマンドでユーザーを追加。

CREATE USER 'admin'@'localhost' IDENTIFIED by 'pass';

権限の付与

GRANT ALL ON projects.* TO 'admin'@'localhost';

これで、localhostのadminユーザーに対して、projectsデータベースへの権限を与えている。

phpでの接続確認とデータの追加

<?php
/**
 * MySQLへの接続
 */
$dsn = 'mysql:dbname=projects;host=localhost';
$user = 'admin';
$password = 'pass';

try{
    $dbh = new PDO($dsn, $user, $password);
    print('接続に成功しました。<br>');

}catch (PDOException $e){
    print('Error:'.$e->getMessage());
    die();
}
/**
 * データベースへの追加
 */
$id = 1;
$name = 'nanashi';

$stmt = $dbh -> prepare("INSERT INTO personal (id, name) VALUES (:id, :name)");
$stmt->bindParam(':id', $id, PDO::PARAM_STR);
$stmt->bindValue(':name', $name, PDO::PARAM_INT);
$stmt->execute();
#
$dbh=NULL;