如何在 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
>
我目前正在开展一个项目,在该项目中,我必须 运行 使用 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
>