如何在 R 中正确使用 lm() 以进行 运行 ANCOVA 测试?

How to properly use lm() in R in order to run ANCOVA test?

我目前正在开展一个项目,在该项目中,我必须 运行 使用 R 中集成的数据集进行 ANCOVA 测试。(Iris)

我正在尝试弄清楚如何设置 lm() 以便 运行 此测试。我不想要完整的答案,因为我真的很想学习。

所以,基本上我需要 运行 使用 r 中的数据集 iris 的 ANCOVA。它要求我在调整 Sepal.Width.

的同时比较所有三个物种的 Sepal.Length

我已经尝试了所有方法,但没有任何效果,而且我知道这肯定是用户错误。

我对使用 r 还很陌生,所以请多多关照。

我目前有:

fit2 <- lm(Sepal.Length ~ Species + Sepal.Width, data = iris_data) 

我需要在不同场合将个体 Species 乘以 Sepal.width。我什至创建了不同的对象,以便将它们乘以宽度,但我遇到了无数错误。

我目前创建的对象是这些:

setosa     <- iris[iris$Species == "setosa", ]
versicolor <- iris[iris$Species == "versicolor", ]
virginica  <- iris[iris$Species == "virginica", ]`

请帮我指引正确的方向,谢谢!没有完整的答案,我只需要知道如何设置它,或者我可能不知道在这种情况下可以帮助我的功能。

感谢任何帮助。 谢谢

协方差分析包括因子变量和连续变量作为线性模型中的独立变量。

对于 iris 数据集,我们 运行 如下:

  lm(Sepal.Length ~ Sepal.Width + Species,data = iris)

所以OP中的原始代码确实是设置分析的正确方法,但关键是截距代表了输出中未列出的因子水平,其他因子水平被解释为相对于截距所代表的物种的差异。

由于 Setosa 物种未列在回归系数列表中,因此它由截距项表示。因此,其他物种系数解释为"the effect of Species = Virginica on sepal length is x relative to Setosa, net of sepal width."

要使用系数来预测 Sepal.Length 的值,如果 Species = Setosa,可以忽略 Virginica 和 Versicolor 的系数(即将它们的值设置为 0)。

进行预测

为了使用模型进行预测,我们保存模型对象并将其与 predict() 函数一起使用。

fit <- lm(Sepal.Length ~ Sepal.Width + Species,data = iris)

# predict some values
# first, set up the independent variables
Species <- c("setosa","setosa","virginica","versicolor","setosa")
Sepal.Width <- c(3.1,3.2,3.8,2.9,3.25)

# next, build a data frame
data <- data.frame(Species,Sepal.Width)

# predict and print 
data$predicted <- predict(fit,data)
data

...输出:

> data
     Species Sepal.Width predicted
1     setosa        3.10  4.742432
2     setosa        3.20  4.822788
3  virginica        3.80  7.251741
4 versicolor        2.90  6.040463
5     setosa        3.25  4.862966
>