2

また行き詰まった…

線形回帰の仮定をチェックするためのいくつかの統計を取得する関数を作成したいと考えています。私が引用している機能はまだ完成していませんが、要点は理解できると思います。

check.regression <- function(regmodel, dataframe, resplots = TRUE,
                             durbin = TRUE, savecheck = TRUE) {
     print(dwt(regmodel)) # Durbin-Watson-Test
     dataframe$stand.res <- rstandard(regmodel) # Saving Standardized Residuals                   
}

ご覧のとおり、モデルの標準化された残差を指定されたデータフレームに保存したいと思います。

regmodel は線形回帰 lm( y~x) によって計算されたモデルを指し、dataframe は回帰モデルが計算されるデータフレームの名前です。

問題は、関数内に何も保存されないことです。関数なしでコマンドを実行すると、残差がデータフレームに適切に保存されます。

私は、次のようなものがあるに違いないと思います

save(dataframe$stand.res <- rstandard(regmodel))

関数内でコンソールにプロットまたは書き込みを指定する必要があるためですが、そのコマンドがどのようになるかわかりません。

何か案は?

4

1 に答える 1

4

R が使用するpass-by-valueので、関数に送信されるのは data.frame のコピーです。(ちょっと、詳細を伝えます。)

したがって、関数を呼び出すときは、1) 変更された data.frame を返し、2) 割り当てる必要があります。そうしないと、結果が失われます。

check.regression <- function(regmodel, dataframe, resplots = TRUE,
                             durbin = TRUE, savecheck = TRUE) {
     print(dwt(regmodel)) # Durbin-Watson-Test
     dataframe$stand.res <- rstandard(regmodel) # Saving Standardized Residuals
     return(dataframe)                  
}

dataframe <- check.regression(regmodel, dataframe)
于 2013-08-30T10:03:52.280 に答える