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 回答