[解決済み] [解答】幾何平均:組み込みはあるのか?
2022-04-14 11:56:31
質問
geometric meanの組み込みを探したが、見つからなかった。
(スクリプトの場合、私はできるだけ頻繁にビルトインを使用するようにしています。
ない場合のために(ないとは思いますが)、私のはこちらです。
gm_mean = function(a){prod(a)^(1/length(a))}
解決方法は?
Rで幾何平均を計算するための、ベクトル化された、ゼロおよびNAトレラントな関数です。
mean
を含む計算を行います。
length(x)
が必要な場合は
x
は正でない値を含む。
gm_mean = function(x, na.rm=TRUE){
exp(sum(log(x[x > 0]), na.rm=na.rm) / length(x))
}
を指摘してくれた@ben-bolkerに感謝します。
na.rm
パススルーと、それが正しく動作することを確認してくれた @Gregor に感謝します。
の誤った等価性に関連するコメントもあると思います。
NA
の値とゼロの値があります。私が考えていたアプリケーションでは、それらは同じものですが、もちろん一般的にはそうではありません。したがって、もしゼロの伝搬を任意で行いたいのであれば、データ中の
length(x)
の場合は異なる。
NA
を削除する場合、上記の関数に代わる少し長い代替案として、次のようなものがあります。
gm_mean = function(x, na.rm=TRUE, zero.propagate = FALSE){
if(any(x < 0, na.rm = TRUE)){
return(NaN)
}
if(zero.propagate){
if(any(x == 0, na.rm = TRUE)){
return(0)
}
exp(mean(log(x), na.rm = na.rm))
} else {
exp(sum(log(x[x > 0]), na.rm=na.rm) / length(x))
}
}
また、負の値もチェックし、より情報量の多い、適切な
NaN
幾何平均が負の値に対して定義されていない(ゼロに対しては定義されている)ことを尊重する。この件に関して、私のケースに留まったコメンターに感謝します。
関連
-
[解決済み] Stataバージョン5-12の.dtaファイルではない
-
[解決済み】ggplotの線幅を変更するには?
-
[解決済み】プロット時に 'x' と 'y' の長さが異なる ERROR が発生する。
-
[解決済み] write.tableしようとすると、未実装の型リストが表示される。
-
[解決済み】ggplot boxplotでPosition-dodge警告?
-
[解決済み】データのマージ - fix.by(by.x, x)のエラー)
-
[解決済み】R ggplot2 で scale_x_discrete を使用する。
-
[解決済み】長いオブジェクトの長さは、短いオブジェクトの長さの倍数ではない?[重複]。
-
[解決済み】Rで文字ベクトルから引用符を削除する
-
[解決済み】ggplot2でのプロット:「Error: カテゴリ軸のY軸に "Discrete value supplied to continuous scale "と表示される。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】R:関数に有限な'ylim'値が必要
-
[解決済み】knitrのドキュメントでinstall.packagesが失敗する。"ミラーを設定せずにCRANを使おうとしている"
-
[解決済み】ベースグラフィックスでプロットエリアの外側に凡例をプロットする?
-
[解決済み] テスト
-
[解決済み】データのマージ - fix.by(by.x, x)のエラー)
-
[解決済み】R ggplot2 で scale_x_discrete を使用する。
-
[解決済み】Rでデータフレームのサブセットをプロットする方法は?
-
[解決済み】 .subset2(x, i, exact = exact)のエラー:Rの添え字が範囲外である。
-
[解決済み】dplyr: "Error in n(): 関数は直接呼ばれるべきではありません"
-
[解決済み】"object not interpretable as a factor "というエラーの意味は?[クローズド]