Rを使用したビン型GAM結果のルート平均平方根偏差
-
28-09-2019 - |
質問
バックグラウンド
PostgreSQLデータベースはPL/Rを使用してR関数を呼び出します。スピアマンの相関を計算するためのR呼び出しは次のように見えます。
cor( rank(x), rank(y) )
また、Rでは、適合一般化された添加剤モデル(GAM)の素朴な計算:
data.frame( x, fitted( gam( y ~ s(x) ) ) )
ここ x
1900年から2009年までの年を表します y
その年の平均測定(例:最低温度)です。
問題
次の写真で見ることができるように、フィットしたトレンドライン(GAMを使用)はかなり正確です。
問題は、相関(左下に示されている)が、モデルがデータにどれだけ密接に適合するかを正確に反映していないことです。
可能な解決策
相関の精度を改善する1つの方法は、ビン型データでルート平均平方根誤差(RMSE)計算を使用することです。
質問
Q.1。 R言語で、測定に適合するGAMの相関(0〜1の間)を取得するために、ビン型データにRMSE計算をどのように実装しますか?
Q.2。 データへのGAMの適合性の精度を見つけるためのより良い方法はありますか?もしそうなら、それは何ですか(たとえば、ルート平均偏差)?
試行されたソリューション1
- 観測された量とモデル(GAM)の量を使用してPL/R関数を呼び出します。
correlation_rmse := climate.plr_corr_rmse( v_amount, v_model );
- 定義
plr_corr_rmse
次のように(ここでo
とm
観測されたデータとモデル化されたデータを表します):CREATE OR REPLACE FUNCTION climate.plr_corr_rmse( o double precision[], m double precision[]) RETURNS double precision AS $BODY$ sqrt( mean( o - m ) ^ 2 ) $BODY$ LANGUAGE 'plr' VOLATILE STRICT COST 100;
o - m
間違っている。両方のデータセットを計算してビンしたい mean
5つのデータポイントごとに(最大110のデータポイントがあります)。例えば:
omean <- c( mean(o[1:5]), mean(o[6:10]), ... )
mmean <- c( mean(m[1:5]), mean(m[6:10]), ... )
次に、RMSE計算を次のように修正します。
sqrt( mean( omean - mmean ) ^ 2 )
どのように計算しますか c( mean(o[1:5]), mean(o[6:10]), ... )
適切な数のビンの任意の長さベクトルの場合(たとえば、67の測定にはわずか67の測定には理想的ではないかもしれません)?
私は考えていません hist
ここで適していますか?
試行されたソリューション2
次のコードで問題が解決しますが、リストの最後からデータポイントをドロップします(リストを5で分割できるようにします)。数字「5」がかなり魔法のようなものであるため、ソリューションは理想的ではありません。
while( length(o) %% 5 != 0 ) {
o <- o[-length(o)]
}
omean <- apply( matrix(o, 5), 2, mean )
他にどのようなオプションが利用できますか?
前もって感謝します。
解決
あなたはそれを言います:
問題は、相関(左下に示されている)が、モデルがデータにどれだけ密接に適合するかを正確に反映していないことです。
適合値と測定値との相関関係を計算できます。
cor(y,fitted(gam(y ~ s(x))))
なぜあなたがあなたのデータをビンしたいのかわかりませんが、次のようにそれを行うことができます:
mean.binned <- function(y,n = 5){
apply(matrix(c(y,rep(NA,(n - (length(y) %% n)) %% n)),n),
2,
function(x)mean(x,na.rm = TRUE))
}
少し醜いように見えますが、長さがビンの長さの倍数ではないベクトルを処理する必要があります(つまり、例では5)。
あなたもそれを言います:
相関の精度を改善する1つの方法は、ビン型データでルート平均平方根誤差(RMSE)計算を使用することです。
私はあなたがこれによって何を意味するのか分かりません。相関は平均四角誤差を決定する要因です - たとえば、の式10を参照してください マーフィー(1988年、毎月の天気レビュー、v。116、pp。2417-2424). 。しかし、あなたが何を意味するのか説明してください。