約 508,474 件
https://w.atwiki.jp/bambooflow/pages/289.html
GLM - OpenGL Mathematics GLMは3DグラフィックスのためのC++ライブラリです。 GLSLのAPIと類似しており扱いやすくなっています。 GLM - OpenGL Mathematicsダウンロード 簡単な使い方 ヘッダファイル 基本Identity(単位行列) Matrix Transformtranslate行列(移動) rotate行列(回転) scale行列(拡大縮小) Matrix Projectionortho frustum perspective Matrix Transform2lookAt Quaternion使い方 フルにSwizzleを使う 2つのベクトルの角度差 2次元ベクトルの回転 ダウンロード http //glm.g-truc.net/ 簡単な使い方 次のヘッダをインクルードします。 #include glm/glm.hpp #include stdio.h #include glm/glm.hpp int main(int argc, char* argv[]) { glm vec3 pos( 1.0, 2.0, 3.0); printf("x=%f, y=%f, z=%f\n", pos.x, pos.y, pos.z); return 0; } vec3へのアクセスはいろいろ準備されています。 たとえば配列だと、pos[0],pos[1],pos[2]で参照できます。 GLMの扱いやすいところは、GLSLとAPIが似ていることと、swizzleが用意されていること。 ヘッダファイル よく使いそうなヘッダファイルは次のとおり。 #include glm/glm.hpp // for translate, rotate, scale #include glm/matrix_transform.hpp // for ortho, frustum, perspective, project #include glm/matrix_projection.hpp // for lookAt, proj2D, proj3D, etc. #include glm/gtx/transform2.hpp // for value_ptr #include glm/gtc/type_ptr.hpp 基本 Identity(単位行列) #include glm/glm.hpp glm mat4 ident = glm mat4(1.0); glLoadIdentity Matrix Transform translate行列(移動) #include glm/gtc/matrix_transform.hpp template typename T tmat4x4 T translate( tmat4x4 T const m, // 元マトリックス tvec3 T const v // 位置(x,y,z) ); 使い方例 #include glm/glm.hpp #include glm/gtc/matrix_transform.hpp float angle; glm vec3 pos(0.0, 3.0, 0.0); // 位置y=3.0 glm mat4 a; ・・・ glm mat4 b = glm translate(a, pos); rotate行列(回転) #include glm/gtc/matrix_transform.hpp template typename T tmat4x4 T rotate( tmat4x4 T const m, // 元マトリックス T const angle, // 回転角(radian) tvec3 T const v // 回転軸(x,y,z) ); 使い方例 #include glm/glm.hpp #include glm/gtc/matrix_transform.hpp float angle; glm vec3 axis(0.0, 1.0, 0.0); // y軸で回転 glm mat4 a; ・・・ glm mat4 b = glm rotate(a, angle, axis); scale行列(拡大縮小) #include glm/gtc/matrix_transform.hpp template typename T tmat4x4 T scale( tmat4x4 T const m, // 元マトリックス tvec3 T const v // スケール(x,y,z) ); 使い方例 #include glm/glm.hpp #include glm/gtc/matrix_transform.hpp glm vec3 size(0.5, 0.5, 0.5); // スケール 1/2に縮小 glm mat4 a; ・・・ glm mat4 b = glm rotate(a, size); Matrix Projection ortho #include glm/glm.hpp #include glm/gtc/matrix_projection.hpp frustum #include glm/glm.hpp #include glm/gtc/matrix_projection.hpp perspective #include glm/glm.hpp #include glm/gtc/matrix_projection.hpp glm mat4 projectionMatrix; void reshape(int w, int h) { glViewport(0, 0, w, h); projectionMatrix = glm perspective(30.0f, (float)w/(float)h, 1.0f, 100.0f); } Matrix Transform2 lookAt template typename T tmat4x4 T lookAt( tvec3 T const eye, tvec3 T const center, tvec3 T const up ); #include glm/glm.hpp #include glm/gtx/transform2.hpp glm mat4 viewMatrix; viewMatrix = glm lookAt( glm vec3(3.0f, 4.0f, 5.0f), // eye pos glm vec3(0.0f, 0.0f, 0.0f), // center pos glm vec3(0.0f, 1.0f, 0.0f) // up ); Quaternion 使い方 #include glm/glm.hpp #include glm/gtc/quaternion.hpp glm quat a, b, c; // Quatanionの乗算 c = glm cross( a, b ); // Quotanionから行列を求める glm mat4 r = glm mat4_cast( c ); フルにSwizzleを使う たとえば、.x, .y, .zや .t, .sといったものはデフォルトで扱えます。 でも.xyzやxyzwなどは設定が必要になります。 #include glm/setup.hpp #define GLM_SWIZZLE GLM_SWIZZLE_FULL #include glm/glm.hpp
https://w.atwiki.jp/learn_opengl/pages/18.html
GLMライブラリの導入方法について説明します GLMとは? OpenGL用数学ライブラリです。 手順 GLM公式からダウンロードして展開 glm-*.*.*.*/glm/glm フォルダごと C /Program Files (x86)/Microsoft Visual Studio 11.0/VC/include にコピー
https://w.atwiki.jp/hayatoiijima/pages/18.html
GLMについて GLMについてGLM概論GLMで扱う代表的な分布系 平均値と分散 GLMがいつ必要か? GLMで事前に指定しなければならないもの 誤差構造 線形予測子 リンク関数各誤差構造に対して最も一般的に用いられるリンク関数 GLMにおけるパラメータ推定方法 モデル選択AICについて RでのGLMのかけ方一般的な式の形 結果の見方 モデル選択 説明変数の相対的な重要度(IOV relative Importance Of Variable) GLM概論 GLMはGeneralised Linear Model(一般化線形モデル)の略。General Linear Model(一般線形モデル)の略として使われることもある。General Linear ModelはANOVAと回帰分析が似たような誤差分解方法を取ることから、ANOVAと回帰分析の総称として使われる言葉である。 GLMでは独立変数が線形結合している必要がある。線形結合しているモデルとは以下のようなモデルである。 各Xが独立変数としてモデルに組み込んだ要因である。 GLMでは指数関数族に属する分布を扱うことができる。正規分布のみを扱える回帰分析を拡張したものであるため、"一般化"という名前になっている。指数関数族の一般式は以下のように表される。 GLMで扱う代表的な分布系 代表的な指数関数族に属する分布は以下の通り。 平均値と分散 平均値 分散 GLMがいつ必要か? ある現象を説明するモデルを構築したいとき。これだけだと(重)回帰と同じだが、GLMは説明したい現象の起こり方が正規分布に従わない場合でも解析することが可能である。 例えば、個体が生き残った、死んだという現象や、あるプロットは0個体、あるプロットは7個体...というような現象の起こり方の分布は正規分布にはならない。このような場合に正規分布を仮定する(重)回帰を行うと、独立変数のパラメータ推定を誤る。 GLMで事前に指定しなければならないもの 誤差分布 線形予測子 リンク関数 誤差構造 得られたデータのばらつきがどのような構造をしているかを指定する。特に野外で得られるデータの分布は正規分布に従わないケースもあり、自分の取ったデータがどのような分布になるのかはデータの取り方やデータのヒストグラムを書いてチェックする必要がある。主に扱えるのは以下の分布。 カウントデータ (0 x,ただしxは整数) ポアソン分布 あるなしデータ (x = 0 or 1) ベルヌーイ分布 あるなしデータ (x = 0 or 1)を複数回やってできる分布 二項分布 連続データ (0 x) かつ左右非対称 ガンマ分布 連続データ (-∞ x ∞) で左右対称 正規分布 正規分布だったら重回帰でも対応できる。 線形予測子 線形予測子とは、独立変数の効果を線形に合計したもので、以下のような式で表される。 式の左側が線形予測子、xが各独立変数である。βはこれから推定するパラメータ(その独立変数の傾きのようなもの)である。ちなみに式の右側は線形構造と呼ばれる(各要因の和の形になっているから)。 リンク関数 誤差構造で指定した分布の形にデータを変換するための関数がリンク関数である。線形予測子は、データから得られた期待値をリンク関数によって変換することによって得られる。よって、線形予測子は以下の式でも表される。 ここでg()はリンク関数であり、μは期待値である。 各誤差構造に対して最も一般的に用いられるリンク関数 正規分布 ポアソン分布や負の二項分布 二項分布 GLMにおけるパラメータ推定方法 最尤推定法を用いる。具体的には、iteratively reweighted least squares (IRWLS)法によるパラメータ推定を行う。 ηとμを観測値から得る。μはyの値、ηはμをリンク関数で変換したものである。 "調整された従属変数"zを算出する。zはによって与えられる。 重みwを、によって得る。 ηを得るために、βを再推定する。具体的には、重みwをつけてzを従属変数、想定している要因を独立変数とした回帰を行い、新たなβを得る。βが新しいηとなる(ηに逆リンク関数を適用すればμも算出される) 4.によって得られるβの値が安定するまで、2.-4.を繰り返す。 モデル選択 線形モデルにどの変数を含めるべきかを判断する方法としては、 尤度比検定 自由度調整済みR2値 AIC が挙げられる。最も一般的なのは、AICによるモデル選択である。 AICについて AICは以下の式で定義される。 RでのGLMのかけ方 一般的な式の形 result - glm(y ~ x1 + x2 + ..., family=**(**), data=**) y ~ x1 + x2 + ...の部分は単にモデル式の指定である。 family=binomial(logit)の部分は、family=binomialで誤差構造の指定を、(logit)の部分はリンク関数の指定である。ちなみにbinomialの場合は何も入力しなければデフォルトでリンク関数はlogitになる。 data=seizanの部分は、データが入っているオブジェクトの指定である。 例えば、二項分布なら、 result - glm(y ~ x1 + x2 +... , family=binomial(logit), data=seizan) となる。 結果の見方 summary(result) のように、結果を付与したオブジェクトをsummary()に入れることで、結果の完全な要約を出力することができる。 モデル選択 AICによるモデル選択を行う場合は、Rにすでに関数が用意されている。 library(MASS) stepAIC(result) こうすると、AICによるモデル選択が行われ、AICが最も小さくなるモデルが選択される。ただし、stepAIC()によるモデル選択では、全ての(可能性がある)モデル間でAICを比較しているわけではない(らしい)ので、必ずしもAIC最小モデルが選択されるとは限らない。 説明変数の相対的な重要度(IOV relative Importance Of Variable) 重回帰であれば、標準回帰係数を使えばいいのだが、誤差構造に様々な分布を取りうるGLMでは、relative Importance Of Variable (IOV)を使う。 ヌルモデルからフルモデルまで、全ての組み合わせのモデルの中で、どのモデルの重要度が高いのかを、Akaike weightによって算出する。 Akaike weight(=wi)は以下の式で定義される。 Δiは、当該モデルと、AIC最小モデルとのAICの差である。 これによって、各モデルにwiが付与される。 各独立変数の重要度(IOV)は、その変数が含まれる全てのモデルの、wiの和で定義される。 IOVは0から1までの値をとり、1に近いほどその変数が従属変数に大きな影響を与えていることを示す。現在のところ、自動で計算する関数はRでは用意されていないので、計算する自作のスクリプトをここに載せておく。 iov.txt 使うときは、この関数を一度Rにコピペしておいて、データフレームをアタッチし、以下の要領で走らせる。ただし、データフレームは、従属変数が一番右の列になるように作る必要がある。 上記の関数コピペ attach(df) #データフレームをアタッチ result - akaikeW(df,poisson(log)) #データフレーム, 誤差構造(リンク関数) #リンク関数はなくても大丈夫です。 result #結果が表示される #どうやらカテゴリー変数が数字以外で与えられていると #エラーを吐き出すようですが、結果を表示させると #計算は出来ています。 誤差構造は自分に合わせて指定する。また、リンク関数を指定しないときは、誤差構造で デフォルトに設定されているリンク関数が適用される。
https://w.atwiki.jp/hayatoiijima/pages/33.html
輪読Extending the linear model with R このページでは、Julian J. Farawayの「Extending the linear model with R」の輪読会の様子を紹介します。発表ファイルやExerciseの回答、当日の議論の内容など。 Update! 7/4:9章と10章の発表ファイルを追加 累積訪問者数(from 08/05/2007): - 今日来てくれた人: - 輪読Extending the linear model with R ゼミの日時・場所 Introduction, Appendix A当日議論したこと線形モデルの結果を出力するsummary()における、各変数の有意確率って? 線形モデルにおけるカテゴリカル変数の扱いについて 重みつき最小二乗法で、具体的には、どのように重み付けをしているのか? この章を読む上で役立つもの Binomial Data当日議論したことDevianceとは何か? ProspectiveとRetrospectiveな研究の違い モデルの当てはまり Overdispersionって? Matched case-control studiesって? この章を読む上で役立つもの Count Regression当日議論したことリンク関数と「変数変換」の違い offsetがらみ negative binomialの使い方 GLMの結果としてR2値があまり使われないのはなぜか? Contingency Tables当日議論したことdrop1によるモデル比較 2×2表でのGLM 4×4表でのGLM 三元表 順序の情報の生かし方 Generalized Linear Models当日議論したことGLMのアルゴリズム 誤差構造が違うDeviance(結局は対数尤度)を比較し、どちらが当てはまりがよいかを論じてよいのか? この章を読む上で役立つもの Other GLMs Random Effects当日議論したこと尤度比検定は保守的な結果を導きがち 特殊?な条件指定 Random effectの種類、構造 Random effect1 Blocks Random effect2 Split Random effect3 NestedとCrossed Random effect4 Multilevel RにおけるRandom effectの指定方法Blocks Split Nested Crossed Multilevel Repeated Measures and Longitudinal Data Mixed Effect Models for Nonnormal Responses ゼミの日時・場所 場所:N356 4/18(水)10時~:Introduction, Likelihood Theory(飯島) 4/25(水)10時~:Binomial Data(上野) 5/2(水)13時~:Count Data(高橋) 5/9(水)13時~:Contingency Tables上(渡辺) 5/16(水)13時~:Contingency Tables下(渡辺) 5/24(木)13時~:Generalized Linear Models(江口) 5/31(木)13時~:Other GLMs(森) 6/6(水)13時~:Random Effects上(志田) 6/20(水)13時~:Random Effects下(志田) 7/4(水)13時~:Repeated Measures and Longitudinal Data, Mixed Effect Models for Nonnormal Responses(飯島) Introduction, Appendix A 担当:飯島(造林) 発表ファイル:1andAppendix 当日議論したこと 線形モデルの結果を出力するsummary()における、各変数の有意確率って? 各変数が相互に完全に独立であると仮定した場合(そんなことはほとんどの場合ありえないが)、各変数の推定された係数が、0と有意に異なっているかどうかを検定した結果。 線形モデルにおけるカテゴリカル変数の扱いについて Rでは、アルファベットで最も最初にあるカテゴリーの係数が0として扱われ、残りのカテゴリーの係数は、最初のカテゴリーに対する値として見る。 どのカテゴリーとどのカテゴリーが有意に異なる、ということは算出できるのかわからない。 重みつき最小二乗法で、具体的には、どのように重み付けをしているのか? 残差を、重み(要は共変量的にばらつきを大きくさせる変数)で割ることで重み付けをしている。 この章を読む上で役立つもの 「生物学を学ぶ人のための統計のはなし」粕谷英一著 文一総合出版:通称ぴんく本。Appendixを読むときに、6章の最尤法の説明がすばらしく役に立つ。 Binomial Data 担当:上野(野生生物保護) 発表ファイル:Binomial 当日議論したこと Devianceとは何か? より大きいモデルの対数尤度(Ll)とより小さいモデルの対数尤度(Ls)の差の2倍。具体的には、Llは完全にデータに当てはまっているモデル(従属変数そのもの)であり、Lsは自分の組んだモデルである。 RでGLMを行ったときに算出されるNull Devianceは、Lsが切片しか与えないモデルにおけるDevianceであり、Residual Devianceは、Lsが自分が組んだモデル(要は独立変数を与えたモデル)におけるDevianceである。 ProspectiveとRetrospectiveな研究の違い 医学調査でよく問題となる。あるリスクに曝露されたときに、曝露された群とされなかった群で病気になる危険性がどれだけ高まるかということを問題にしたときに考える必要がある。 Prospective(前向き):あらかじめリスクに曝露している群と曝露していない群を同じ数だけ用意し、その後実際に病気が発祥したか調べる方法。 Retrospective(後ろ向き):実際にはProspectiveな方法をとれるシチュエーションがほとんどないので、病院などにいる患者に、リスクを曝露されたことがあるかどうか、そして現在病気を持っているかどうか訪ねる方法。容易に調査を行えるが、調査対象群にフィルターがかかっている(死んだ人に対して調査ができない、病気を持っている人の割合が多くなる)ため、リスクの曝露による病気の発症率の増加を簡単には評価できなくなる。 ただし、これらの方法の違いは、切片の推定値の違いにしか現れないとされている(p.35下段)。 モデルの当てはまり Deviance:データに対する予測値の当てはまりを判断する基準である。定義は上述。 PearsonのX2:これはDevianceと(ほぼ)同じ。 R2値:この本で紹介されているR2値(p.41)は、いわゆる自由度調整済みR2値を、GLMの枠組みの中で使えるように一般化したものである。決めたモデルが、全体のばらつきの「何割」を説明しているかに興味があるときに使う。 Overdispersionって? 誤差の分布として仮定した分布から予想されるばらつきよりもばらつきが大きいこと。二項分布やポアソン分布の分散は期待値の関数であり、個体差がまったく生じないものとして定義されている。そのため、実際のデータはしばしば予想されるばらつきよりも大きいばらつきとなり、仮定した分布に対するあてはまりが悪くなる。 Matched case-control studiesって? なにかしらの線形モデルを組むときに、独立変数のある要因1(カテゴリーデータ)内において、検討したい要因の影響を検討すること。要因1は、例えば、検討したい要因が病気の発生に与える影響を検討するときに、対象患者の人種、性別など。様々な人種、あるいは性別を対象に取られたデータでも、これらの要因の影響を考慮した形で、病気の発生しやすさへの検討したい要因の影響を検討できる。「対応」あるいは「ブロック」と呼ばれるものが要因1にあたる(と思う)。 Rの中では、library(survival)に入っているstrata()に要因1を入れて、独立変数としてモデルに投入することで行える。 この章を読む上で役立つもの Rによる保健医療データ解析:群馬大学の中澤先生の講義資料。12章のあたりが特に関連。 「医学統計学シリーズ2 統計モデル入門」丹後俊郎著 朝倉書店:6章の一般化線形モデルが参考になる。 Count Regression 担当:高橋(生態管理) 発表ファイル:Count 当日議論したこと リンク関数と「変数変換」の違い リンク関数:構築した線形予測子にリンク関数をかませることで、期待値を算出する。つまり、「線形予測子」をリンク関数で変換しているだけである。リンク関数をかますのは、想定している誤差分布に線形予測子を合わせるためだけであり、結果は変数(つまり取ったデータそのもの)の影響として考えることができる。 変数変換:取ったデータそのものを本当に変換してしまう。つまり、それによって得られる結果は「変数変換した変数」(←当然自然にはこんなものは存在しない)の影響を評価していることになる。 offsetがらみ offset()の中に入れる変数にlogがついている(p.63の式)のは、poissonのデフォルトのリンク関数がlogだから。p.62の最後の式がわかりやすいが、式の右辺は線形予測子であるから、従属変数は当然logで囲まれたものとなる。従属変数のうち、offset()に含めるべき部分を独立変数に回すので、logがついている。p.62の式と、p.63の式で、Residual devianceの自由度が異なっている点に注意。 negative binomialの使い方 library(MASS) result - glm.nb(..., df) #familyの指定がいらない で実行できる。 GLMの結果としてR2値があまり使われないのはなぜか? (推測の域を出ないが)誤差構造に正規分布を仮定する回帰(重回帰)の場合、誤差の等分散性が仮定されているため、データのレンジによらず、与えられたデータのばらつきに対する説明できた分でR2を構築しても(それほど)問題ないが、誤差構造に正規分布以外を仮定するGLMの場合、誤差の等分散性はまったく仮定されていないため、R2値の意味が、データのレンジによって異なってしまうから。 また、サンプル数に対するばらつきの増え方が、線形的なのかもよくわからない。そのため、やはりR2の持つ意味は、データ数や範囲によって(かなり)異なると考えられるので、R2を出すことにそれほど意味がないから使われていない(のかもしれない)。Binomialの賞で説明した方法でむりくり算出はできるが。 Contingency Tables 担当:渡辺(野生生物保護) 発表ファイル:Contingency 当日議論したこと drop1によるモデル比較 ポアソンモデルでdrop1関数を用いてモデルを比較する際にカイ二乗検定を使用している(p.70)。前の章(p.60)で過分散があるときはカイ二乗検定よりもF検定を使用すべきと述べているが、過分散がない(あるいは考えなくてもいい)場合にはカイ二乗検定でいいということか? 2×2表でのGLM 応答変数にmatrix()を使うと、ベクトルを使用した場合と比べてモデル式の作り方が若干変わる。(p.73-74)。 4×4表でのGLM ポアソンモデルで分析している(p.76)。この際変数間の交互作用を予測変数に含めると自由度が不足するので、予測変数には交互作用項を含めないで分析を行い、算出されたデビアンスと自由度の数値から独立性を判断する。ただし判断に際しての数値的な基準は不明。 三元表 マンテル-ヘンツェル検定で帰無仮説(すべての部分表の条件付オッズ比が1)が棄却された場合には、部分表を見比べて変数間の関係をみることも重要。 順序の情報の生かし方 例では、順序情報をもつ変数を1,2,3...という整数で置き換えて解析している。これらは順序変数ではなく間隔変数だが、これらを用いて解析することによってモデルの当てはまりがよくなれば、順序情報を使用しないモデルよりもよいと判断できるのであろう。 Generalized Linear Models 担当:江口(造林) 発表ファイル:GLM 当日議論したこと GLMのアルゴリズム この辺に少しまとめてあります。 誤差構造が違うDeviance(結局は対数尤度)を比較し、どちらが当てはまりがよいかを論じてよいのか? 結論から言うと可能。ただし、連続変数と離散変数の尤度は本質的に異なるものなので、比較できない。 久保さんのページのこの辺(11月8日)に解説が。 例えば、binomialとpoissonの結果は比較できるが、gaussianとpoissonは比較できない。 また、binomialでも、random effectsを含むglmmの結果とは比較できない(現在のRのRandom effectsとして用意されているのは正規分布であり、そのためglmmの尤度は離散変数と連続変数を含むから。 この章を読む上で役立つもの 「S‐PLUSによる統計解析」 W.N. ヴェナブルズ, B.D. リプリー著 シュプリンガー・フェアラーク東京:一般化線形モデルの説明のところが関連。 Other GLMs 担当:森(野生生物保護) 発表ファイル:OtherGLM Random Effects 担当:志田(生態管理) 発表ファイル:Random effects 当日議論したこと 尤度比検定は保守的な結果を導きがち 尤度比検定は尤度が構築できれば行える便利な検定だが、p値が大きくなりやすい(有意になりにくい、保守的だ)傾向があるので、ブートストラップ法によって新たに検定統計量を構築することが多いようだ。 特殊?な条件指定 あるベクトルで一定の条件を満たすものを探す場合、 d - rnorm(100, 50, 20) d[d 70] というように、[ ]を使うが、 (d 70) とすると、dの全データに関して、70より大きいかどうかが、TRUEとFALSEで返される。これを応用すると、 mean(d 70) とすることで、70以上の値が全体の何パーセントに当たるのか計算することができる(TRUEが1、FALSEが0)。 Random effectの種類、構造 本文中では、 Blocks Split Nested Crossed Multilevel を挙げている。 Random effect1 Blocks まずは基本。 その変数が応答変数に与える影響には興味がないが、影響を与える要因としては考慮したい ex. 個体、プロットなど Random effect2 Split Random effectは1つ 各Random effect内において、2つの固定効果が存在。 各Random effect内において、片方の固定効果は何処理かが含まれるが、もう片方の固定効果は1種類しか含まれない。 各Random effectが固定効果の種類によって分割されている、と見るべきか。 ex. 苗畑で、CO2付加と窒素処理による樹木の成長を見てるときに、例えば8個同じような処理区を設けていて(いわゆる反復)、一つの処理区で窒素処理はありなし両方作れるが、CO2処理は付加する、あるいはしないのどちらかしか設定できないような場合。 実験計画法的に考えると、完全無作為化処理ができない場合、として考えることができる。 Random effect3 NestedとCrossed Random effectが2つ以上の場合 Nested 下位のRandom effectが、上位の各Random effect内で完全に完結し、上位のRandom effect間ではかぶらない場合(ex. 調査地が2つあり、各調査地では区画1から50まであり、各区画で植物の個体数を測定している。例えば区画1は両調査地にあるが、それは同じものではない) Crossed 下位のRandom effectが、上位のRandom effect間にまたがっている場合(ex. 2つの地域があり、両地域を移動する(しない個体もいる)動物の体サイズを測定している。両地域で同じ個体が出現する場合がある) Random effect4 Multilevel NestedとCrossedのように、階層性のあるRandom effect(NestedとCrossedの総称?) NestedやCrossedよりも、より上位、下位という関係がはっきりしている場合なのかもしれない。 上位のRandom effectの影響を組み込んだ、新しい固定効果変数を作ることもできる。 RにおけるRandom effectの指定方法 まずは必要な架空データの生成 Seedlings - c(rnbinom(50, 1, 0.3), + rnbinom(50, 5, 0.3)) Light - Seedlings + rnorm(100, 20, 10) Subp - rep(c(rep(1, 25), rep(2, 25)), 2) Plot - rep(rep(1 25, 2), 2) Site - c(rep("S1", 50), rep("S2", 50)) #これらをデータフレーム化 d - data.frame(Seedlings, Light, + Subp, Plot, Site) d$Subp - as.factor(d$Subp) d$Plot - as.factor(d$Plot) このデータフレームの意味 調査地Site内に方形区Plotがあり、方形区は小方形区Subpに分けられている。Subpごとに明るさLightが測定されており、またある植物の個体数Seedlingsが測定されている。 いわゆる説明変数がLightであり、応答変数がSeedlingsである。その他はRandom effectである。 Random effectは、固定効果(Fixed effect)の「傾き」あるいは「切片」に対して設定できる。 上記のRandom effectの種類は、「傾き」あるいは「切片」どちらに対しても生じうる。 われわれが扱うケースでは、切片にRandom effectを仮定するケースが多いか(ex. 調査地でそもそも個体数が違っており、調査地がRandom effectの場合)。 以下では、Random切片を中心に紹介。 Blocks 単純に、調査地Site間でそもそもSeedlingsの数が違っていそうで、SiteをRandom effect(切片)とする場合。 library(lme4) result - lmer(Seedlings ~ Light + + (1 | Site), + family=poisson, d) ランダム切片の基本的な指定の仕方は、Random effectのラベルをREとすると、以下のようである。 (1 | RE) SiteごとにLightに対するSeedlingsの反応が異なると予想される場合は、SiteはLightに対するRandom傾きを与えるRandom effectである。 library(lme4) result - lmer(Seedlings ~ Light + + (0 + Light | Site), + family=poisson, d) ランダム傾きの基本的な指定の仕方は、Random effectのラベルをRE、Fixed effectのラベルをFEとすると、以下のようである。 (0 + FE | RE) ちなみに、Random effectが1個で、かつ誤差構造としてbinomialあるいはpoissonが仮定され、かつRandom切片指定の場合であれば、glmmML()がお手軽(モデル選択もstepAIC()で実行できる)。 library(glmmML) result - glmmML(Seedlings ~ Light, + cluster=Site, family=poisson, d) Split Nested Random effectとして、SiteかつPlotを想定するケース。 result - lmer(Seedlings ~ Light + + (1 | Site/Plot), + family=poisson, method="Laplace", d) この場合、Siteが上位のRandom effect、Plotが下位のRandom effectである。 複数のRandom effectを指定する場合、数値積分による尤度の最適解を見つけることが数学的に不可能になるため、Laplace近似による方法を指定する必要がある(詳しくはこの辺を参照) ありがちで犯しやすいミス:Site間で、Plotに同じ番号をつけてしまう(Site AのPlot 1とSite BのPlot 1は違う!) これを防ぐ方法1 lmer()で指定するときに、以下の方法で「階層化した変数」を作る。 result - lmer(Seedlings ~ Light + + (1 | Site/Plot), + family=poisson, method="Laplace", d) #これでも同じこと result - lmer(Seedlings ~ Light + + (1 | Site) + (1 | Site Plot), + family=poisson, method="Laplace", d) これを防ぐ方法2 あらかじめ「階層化した変数」を作っておく SitePlot - c(100 + Plot[1 50], 200 + Plot[51 100]) d - data.frame(Seedlings, Light, Subp, + Plot, Site, SitePlot) #factor化処理は省略 result - lmer(Seedlings ~ Light + + (1 | Site) + (1 | SitePlot), + family=poisson, method="Laplace", d) #こんな方法も有効(Plotの番号を調査地間でかぶらないようにする) Plot2 - c(rep(1 25, 2), rep(26 50, 2)) d - data.frame(Seedlings, Light, Subp, + Plot, Site, Plot2) #factor化処理は省略 result - lmer(Seedlings ~ Light + + (1 | Site) + (1 | Plot2), + family=poisson, method="Laplace", d) Crossed Multilevel Repeated Measures and Longitudinal Data 担当:飯島(造林) 発表ファイル:Repeated Mixed Effect Models for Nonnormal Responses 担当:飯島(造林) 発表ファイル:GLMM
https://w.atwiki.jp/bambooflow/pages/293.html
2次元ベクトルの回転 変換式 θは2つのベクトルの角度差。 サンプルコード #include stdio.h #include glm/glm.hpp #include glm/gtx/rotate_vector.hpp int main(int argc, char* argv[]) { glm dvec2 a(1.0, 0.0); glm dvec2 b; glm dvec2 c; b = glm rotate(a, 30.0); // degree printf("a = %f,%f\n", a.x, a.y); printf("b = %f,%f\n", b.x, b.y); return 0; } a = 1.000000,0.000000 c = 0.866025,0.500000
https://w.atwiki.jp/fun-sci/pages/23.html
テストデータでscipy、rpyのglmの使い方を勉強してみる。 出展はハーバード大学講義テキスト 生物統計学入門のChapter 19 データは公開されているものなのでOKかと コードはこんな感じ from scipy import * from rpy import * import csv # low_infants.txtは下の「データ」のテキストファイル rd1 = csv.reader(file("low_infants.txt")) low_inf = [] for line in rd1 low_inf.append(line) # この時点では文字列のarray low_infa = array(low_inf) # 文字列を64精度の数値に変換 low_infa = low_infa.astype(float64) x1=low_infa[ ,4].tolist() x2=low_infa[ ,2].tolist() y=low_inf[ ,1].tolist() ret = r.glm(r("y~x1+x2"),data=r.data_frame(x1=x1,x2=x2,y=y,family= gaussian )) ret[ coefficients ] 係数は本に載っていたように出てきた。 一応、うまく行ってる? データ 27,41,29,1360,37,0 29,40,31,1490,34,0 30,38,33,1490,32,0 28,38,31,1180,37,0 29,38,30,1200,29,1 23,32,25,680,19,0 22,33,27,620,20,1 26,38,29,1060,25,0 27,30,28,1320,27,0 25,34,29,830,32,1 23,32,26,880,26,0 26,39,30,1130,29,0 27,38,29,1140,24,0 27,39,29,1350,26,0 26,37,29,950,25,0 27,39,29,1220,25,0 26,38,29,980,28,0 29,42,33,1480,30,0 28,39,33,1250,31,1 27,38,29,1250,37,0 25,36,28,920,31,0 25,38,30,1020,21,0 24,34,27,750,21,0 31,42,33,1480,30,0 28,37,32,1140,23,0 23,32,28,670,33,1 26,36,29,1150,18,0 25,34,28,1030,20,0 23,33,29,560,29,0 28,37,30,1260,26,0 35,36,31,900,23,0 24,31,30,620,33,0 33,39,31,1440,26,0 28,39,29,1350,38,0 26,37,27,1170,23,0 26,36,27,1170,23,0 26,37,27,1170,26,0 28,40,32,1420,27,0 29,43,31,1475,27,0 28,37,28,1200,19,0 27,36,30,970,30,1 27,38,29,1190,27,0 28,39,28,1350,31,0 28,41,31,1460,29,0 22,32,27,570,23,1 22,32,25,620,35,0 28,40,30,1200,27,0 24,32,28,660,35,0 28,40,28,1280,28,0 23,33,25,830,21,0 22,31,23,680,26,0 23,32,27,640,21,0 28,39,28,1440,29,0 25,38,27,1150,32,0 27,35,27,850,32,0 24,29,26,760,24,0 23,20,25,620,19,0 21,32,23,660,41,0 25,35,26,985,33,0 22,33,24,690,17,0 27,38,29,1200,26,1 28,40,29,1370,20,0 26,35,27,1170,25,0 28,38,30,1200,30,0 27,39,30,1100,32,0 31,43,32,1480,33,0 30,38,33,1350,34,1 26,38,27,1160,23,0 27,38,31,1330,30,0 24,36,26,960,22,0 25,39,27,1080,35,0 25,36,27,1000,26,0 29,41,35,1490,34,1 25,35,28,880,18,1 29,41,30,1370,23,0 31,40,31,1325,18,1 29,39,30,1400,20,0 26,37,27,1240,29,0 23,31,25,660,18,0 23,34,25,780,25,0 25,37,26,950,14,0 25,36,29,850,39,0 28,40,29,1200,32,0 30,42,34,1440,35,1 26,38,30,1100,23,1 26,38,29,1250,18,0 29,42,33,1420,28,1 28,38,30,1400,19,0 27,36,29,1420,36,0 24,34,24,900,29,0 29,38,33,1160,33,1 23,34,25,820,39,0 28,41,32,1410,29,1 27,39,31,1300,33,1 26,38,31,1110,30,0 26,37,31,820,30,1 27,40,29,1150,28,0 28,35,32,880,35,1 28,41,33,1320,36,1 26,38,28,1080,36,0
https://w.atwiki.jp/bambooflow/pages/292.html
2つのベクトルの角度差 2つの3次元ベクトルa, bがあるとき角度差(0-180度)を求める。 手順は次のとおり。 ベクトルaを正規化 ベクトルbを正規化 aとbの内積を求める 内積をacosした結果を角度差として取得 #include stdio.h #include glm/glm.hpp int main(int argc, char* argv[]) { glm vec3 a(2.0, 0.0, 0.0); glm vec3 b(0.0, 5.0, 0.0); a = glm normalize(a); b = glm normalize(b); double dot = glm dot( a, b ); double angle = glm acos(dot) * 180.0 / M_PI; printf( "angle=%f\n", angle ); return 0; }
https://w.atwiki.jp/vipkotei-j/pages/621.html
1 俺の名は健二 1 名前:健二 ◆AKIBA10gLM [sage] 投稿日:2011/03/01(火) 10 59 32.01 ID Dd8H5y4p0 よろしくね 携帯で自分のマンコの中を撮影してみる 1 名前:健二 ◆AKIBA10gLM [] 投稿日:2011/02/10(木) 01 48 46.54 ID a1rkGuzX0 しかしチンコしか持たない健二でした もどる
https://w.atwiki.jp/zinsagi/pages/42.html
判定持続19F 全体50F 後隙31F 10.2%(頭部)11.73% 【主な用途】シールドブレイク要因。削り値が大きく何か技を当てた後だと割りやすい。 【注意点】横移動はあまりしなくなったので復帰には基本使わない。 シールドの削り量=(攻撃判定ダメージ+シールド削り値)*1.19 削り値自体はOPがかからず一定である。 削り量はダメージ量が関わってくるためOPがかかればその分減る。 【シールド削り狙い所】 下強で固めてるところ(崖上がり後とか)。 下り空中攻撃から強攻撃でガード張りっぱなしを意識させる→不意に強攻撃の代わりにNBを使う。 台上で固まってる相手に。
https://w.atwiki.jp/satou/pages/59.html
NB社 NB社はねこです・ソビエト社会主義共和国(現大日本帝国ねこ臨時政府)が便乗して作った会社である。 社長は大日本帝国ねこ臨時政府、社員はサイコ神賢いbotの二人である。 月収は49万(手取り)、主なものはゲーミングPCとグッピー(熱帯魚)である。 関連記事 会社ブーム