web-dev-qa-db-ja.com

ラップ関数を使用してGGally :: ggpairsでloessメソッドを使用する方法

CourseraR回帰モデルコースで与えられたこの簡単な例を複製しようとしています。

_require(datasets)
data(swiss)
require(GGally)
require(ggplot2)
ggpairs(swiss, lower = list(continuous = "smooth", params = c(method = "loess")))
_

6x6ペアのプロットが表示されることを期待しています。スイスのデータの6つの変数の組み合わせごとに、より滑らかで信頼区間が1つの散布図です。

ただし、次のエラーが発生します。

Display_param_error()のエラー: 'params'は非推奨の引数です。関数を「ラップ」して引数を指定してください。 help( "wrap"、package = "GGally")

ggpairs()およびwrap()ヘルプファイルを調べ、wrap()およびwrap_fn_with_param_arg()関数の多くの順列を試しました。

これを期待どおりに機能させることができます。

_ggpairs(swiss, lower = list(continuous = wrap("smooth")))
_

しかし、レス部分を追加すると、次のようにはなりません。

_ggpairs(swiss, lower = list(continuous = wrap("smooth"), method = wrap("loess")))
_

上記の行を試したときにこのエラーが発生します。

Value [3L]のエラー:次のggpairプロット関数をすぐに使用できます:continuous:c( 'points'、 'smooth'、 'density'、 'cor'、 'blank')combo:c( 'box'、 'dot '、' facethist '、' facetdensity '、' denstrip '、' blank ')離散:c(' ratio '、' facetbar '、' blank ')na:c(' na '、' blank ')

diag Continuous:c( 'densityDiag'、 'barDiag'、 'blankDiag')diagdiscrete:c( 'barDiag'、 'blankDiag')diag na:c( 'naDiag'、 'blankDiag')

Function(data、mapping、...){のAPIに続く独自の関数を提供することもできます。 。 。 }そしてggplot2プロットオブジェクトを返します例:my_fn <-function(data、mapping、...){p <-ggplot(data = data、mapping = Mapping)+ geom_point(...)p} ggpairs(data、lower = list(continuous = my_fn))

提供される機能:レス

明らかに、私は間違った場所でレスに入っています。誰かがレス部分を追加する方法を理解するのを手伝ってもらえますか?

Params引数が非推奨になったため、ggpairsにloessを実装する方法を尋ねているので、私の問題は this one とは異なることに注意してください。

どうもありがとう。

15
meenaparam

簡単な方法の1つは、独自の関数を作成することです...以下の関数は、質問のggpairsエラーメッセージによって提供された関数から編集されたものです。

library(GGally)
library(ggplot2)    
data(swiss)

# Function to return points and geom_smooth
# allow for the method to be changed
my_fn <- function(data, mapping, method="loess", ...){
      p <- ggplot(data = data, mapping = mapping) + 
      geom_point() + 
      geom_smooth(method=method, ...)
      p
    }

# Default loess curve    
ggpairs(swiss[1:4], lower = list(continuous = my_fn))

enter image description here

# Use wrap to add further arguments; change method to lm
ggpairs(swiss[1:4], lower = list(continuous = wrap(my_fn, method="lm")))

enter image description here


これにより、各geon_に渡される引数をもう少し制御できるようになります。

  my_fn <- function(data, mapping, pts=list(), smt=list(), ...){
              ggplot(data = data, mapping = mapping, ...) + 
                         do.call(geom_point, pts) +
                         do.call(geom_smooth, smt) 
                 }

# Plot 
ggpairs(swiss[1:4], 
        lower = list(continuous = 
                       wrap(my_fn,
                            pts=list(size=2, colour="red"), 
                            smt=list(method="lm", se=F, size=5, colour="blue"))))
26
user20650

たぶん、Courseraオンラインコースの回帰モデルを受講していて、コースで指定されたRmarkdownファイルをhtmlファイルに変換しようとすると、私と同じようにこのエラーが発生します。

私が試した方法は次のとおりです。

require(datasets); data(swiss); require(GGally); require(ggplot2)
g = ggpairs(swiss, lower = list(continuous = wrap("smooth", method = "lm")))
g

また、method="loess"を使用してみることができますが、結果は講義で与えられたものとは少し異なります。 method = "lm"は私が見るようにより適しているかもしれません。

9
scarain

あなたもCourseraのクラスを受講しているのではないかと思いました。ただし、ggplotの例を含むgithubリポジトリは見つかりませんでした。

これが私がそれを機能させるためにしたことです:

gp = ggpairs(swiss, lower = list(continuous = "smooth"))
gp
2
Firefighter1017