多元线性回归函数

时间:2018-04-07 03:06:45

标签: r

我只是尝试在R中编写多元线性回归函数。但是当我想将读取数据函数放入一个块时会出现错误。有一个错误: df $ X1:'closure'类型的对象不是子集表调用 当我运行这个块时,这个错误不会发生,只有在我编织时才会出现。

   ```{r, warning=FALSE, message = FALSE}
#Create the function of multiple linear regression
MLG = function (x,y, FileName) {
  df = read.csv(FileName, fileEncoding = "UTF-8-BOM", header = TRUE)

  summary(df)
  #create the model
  lm = lm (x~y, df)
  #call lm to see result
  lm
  #get the result of model
  summary(lm)
  #plot the result of model to analysis the outliers
  par(mfrow = c(2,2))
  plot(lm)
}
MLG(FileName = "1.5.csv", x = df$X1, y= df$X3 + df$X4 + df$X5 + df$X6 + df$X7)

```

这是我的代码。

1 个答案:

答案 0 :(得分:0)

df$X1创建之前,您无法将df传递给某个功能。简单的方法是将公式传递给您的函数(在lm调用之前,它不会查找它引用的对象。

MLG = function (formula, FileName) {
  df = read.csv(FileName, fileEncoding = "UTF-8-BOM", header = TRUE)

  summary(df)
  #create the model
  lm = lm (formula, df)
  #call lm to see result
  lm
  #get the result of model
  summary(lm)
  #plot the result of model to analysis the outliers
  par(mfrow = c(2,2))
  plot(lm)
}
MLG(FileName = "1.5.csv", formula = X1 ~ X3 + X4 + X5 + X6 + X7)

这也使您能够添加交互术语,转换等。

作为旁注,我建议您使用无处不在的约定,y是您的回复,而x是您的预测因素。切换它们会引起混淆。