如何在R中正确使用lm()来运行ANCOVA检验?

问题描述 投票:0回答:1

我目前正在做一个项目,在这个项目中,我必须用R中集成的数据集运行ANCOVA检验。 (Iris)

我想知道如何设置lm()来运行这个测试。我不想要完整的答案,因为我真的想学习。

所以,基本上我需要使用r中的数据集iris来运行一个方差分析。Sepal.Length 所有三个物种,同时调整了 Sepal.Width.

我什么都试过了,什么都不给我用,我知道这肯定是用户错误。

我对使用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", ]`

请帮助我找到正确的方向,谢谢!没有完整的答案,我只是需要知道如何设置,或者我不知道有什么函数可以帮助我解决这种情况。

任何帮助都是感激不尽的!谢谢

r statistics analysis ancova
1个回答
0
投票

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

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

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

所以上文中的原始代码确实是正确的分析方法 但关键是截距代表了没有在输出中列出的因子水平 而其他因子水平被解释为相对于截距所代表的物种的差异

enter image description here

由于 Setosa 品种没有列在回归系数表中,它是由截距项来表示的。因此,其他物种系数解释为 "物种= Virginica对萼片长度的影响是 x 相对于塞特萨,扣除萼片宽度"。

要使用系数来预测值的 Sepal.Length如果物种=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
> 
© www.soinside.com 2019 - 2024. All rights reserved.