統計の基本
単なるメモです。
線形回帰 ・・・ 直線、平面
非線形回帰 ・・・ 曲線、局面
単回帰 ・・・ 変量が2
重回帰 ・・・ 変量が3以上
主成分分析 ・・・ Principal Component Analysis
平均 ・・・ Mean
標準偏差 ・・・ Std
単純統計量 ・・・ Simple Statistics
相関行列の固有値 ・・・ Eigenvalue of the Covariance Matrix
固有ベクトル ・・・ Eigen Vector
JavaBeans(Serializable - serialVersionUID)
JavaBeansの仕様に従うため、Serializableインタフェースを実装してみます。
public class X implements java.io.Serializable{
}
eclipseで上記を記述すると、黄色い警告のアイコンが表示され、
「シリアライズ可能クラス X はlong型のstatic final serialVersionUIDフィールドを宣言していません。」
という警告メッセージが出ます。
Serializableインタフェース自体はマーカーインタフェースなので、定義すべきメソッドはありません。文法的にはフィールドも定義する必要はありません。eclipseでは、ヒントマーク(電球アイコン)も出てくるので、そこから
「デフォルト・シリアル・バージョンIDの追加」や「生成シリアル・バージョンIDの追加」を選択すれば該当するフィールド宣言が追加され、警告マークは消えます。
しかし、この警告メッセージは何なのでしょうか?Serializableインタフェースは「オブジェクトデータをストリーム入出力する(ファイルやネットワークに入出力する)」ためのインタフェースであることを思い出してください。オブジェクトデータを入出力する際、オブジェクトのバージョンを意識する必要が出てきます。例えば、ファイルに出力(シリアライズ)した後、入力(デシリアライズ)するまでの間にクラスに仕様変更があり、フィールドが追加されている可能性があるのです。そこで、オブジェクトのバージョンが分かるように数値を設定しておくことが推奨されます。そのフィールドがserialVersionUIDです。
数値の扱いは自由です。バージョンごとに数値が大きくなったほうが分かりやすいでしょう。long型変数ですので、かなり大きな値でも保持できます。例えば、 private static final long serialVersionUID = 20081225L; などの様に作成時の日付が分かるような値にしてもよいでしょう。
http://www.atmarkit.co.jp/fjava/rensai3/tomcat07/tomcat07.html
JavaBeansの仕様(Serializable)
JavaBeansとしてJavaのクラスを定義するには、Serializableのimplementsが必要です。
java.io.Serializableインタフェースは、Javaのオブジェクト情報をシリアライズする際にチェックされるインタフェースです。
Serializableとして定義すべきメソッドはありません。目印用のインタフェースなのでマーカーインタフェースと呼ばれます。
オブジェクトのデータをネットワーク上に出力したりファイルに出力するためのAPIの中では、instanceof Serializableをチェックして、falseとなれば例外を発生させています。
シリアライズ(直列化)はオブジェクトデータをバイト列化することを指します。オブジェクトをシリアライズするとオブジェクトのフィールドをファイルに保存したり、ネットワーク上に送信できるようになります。