用R创建线性模型

时间:2017-02-08 18:44:53

标签: r

我尝试使用基于以下代码的自定义数据集创建简单的线性回归:

data(iris)
head(iris)

fit1 <- lm(Sepal.Length ~ Petal.Width, data = iris)
summary(fit1)

library(ggplot2)

ggplot(iris, aes(x = Petal.Width, y = Sepal.Length)) + 
  geom_point() +
  stat_smooth(method = "lm", col = "red")

生成:

enter image description here

要为自定义数据集修改此代码,其中y轴值为100,200,300,x轴值为1,2,3我使用:

> rg <- data.frame("y"=integer() , "x" = integer(), stringsAsFactors=FALSE)
> rg[nrow(rg) + 1, ] <- c(100 , 1)
> rg[nrow(rg) + 1, ] <- c(200 , 2)
> rg[nrow(rg) + 1, ] <- c(300 , 3)
> fit1 <- lm(rg.x ~ rg.y, data = rg)

但我收到错误:

Error in eval(expr, envir, enclos) : object 'rg.x' not found

rg.x确实存在:

rg
    y x
1 100 1
2 200 2
3 300 3

我没有正确设置数据框吗?

更新:

感谢@PinkFluffyUnicorn

> rg <- data.frame("y"=integer() , "x" = integer(), stringsAsFactors=FALSE)
> rg[nrow(rg) + 1, ] <- c(100 , 1)
> rg[nrow(rg) + 1, ] <- c(200 , 2)
> rg[nrow(rg) + 1, ] <- c(300 , 3)
> fit1 <-lm(x~y,data=rg)
> 
> ggplot(rg, aes(x = x, y = y)) + 
+     geom_point() +
+     stat_smooth(method = "lm", col = "red")

enter image description here

1 个答案:

答案 0 :(得分:1)

尝试

fit1 <-lm(x~y,data=rg)

您无法使用.

访问框架的列

如果您想获取一列的值,则应使用$符号,例如rg$x