R:NAs中的问题由散射图中的强制引入

R:NAs中的问题由散射图中的强制引入,r,scatter-plot,ancova,R,Scatter Plot,Ancova,我正在努力创造这个 但在这样做时,R表示: 在plot.xy(xy,type,…)中:强制引入的NAs` 我将在下面附上我的全部代码: lnmass <- MoleRat$lnMass lnenergy <- MoleRat$lnEnergy caste <- MoleRat$caste infrequent <- MoleRat[caste == "lazy", ] frequent <- MoleRat[caste == "wo

我正在努力创造这个

但在这样做时,R表示:

在plot.xy(xy,type,…)中:强制引入的NAs`

我将在下面附上我的全部代码:

lnmass <- MoleRat$lnMass
lnenergy <- MoleRat$lnEnergy
caste <- MoleRat$caste

infrequent <- MoleRat[caste == "lazy", ]
frequent <- MoleRat[caste == "worker", ]

lm.infrequent <- lm(lnEnergy ~ lnMass, data = infrequent) #, subset=caste=="lazy")
lm.frequent   <- lm(lnEnergy ~ lnMass, data = frequent)

plot(lnmass, lnenergy, pch = as.numeric(caste), col = as.numeric(caste))
abline(lm.infrequent)
abline(lm.frequent)

为什么不使用
ggplot

ggplot(MoleRat, aes(lnmass,lnenergy, color=caste))+geom_point()+
geom_smooth(method='lm',se=FALSE)+ theme_minimal()

为什么不使用
ggplot

ggplot(MoleRat, aes(lnmass,lnenergy, color=caste))+geom_point()+
geom_smooth(method='lm',se=FALSE)+ theme_minimal()

您可以使用plot执行此操作:

plot(lnEnergy ~ lnMass, MoleRat)
points(lnEnergy ~ lnMass, infrequent, col = "red", pch = 19)
points(lnEnergy ~ lnMass, frequent  , col = "red")
abline(lm.infrequent)
abline(lm.frequent)

或(更容易)使用ggplot:

library(ggplot2)

ggplot(MoleRat, aes(x = lnMass, y = lnEnergy, colour = caste)) +
 geom_point(size = 2) +
 geom_smooth(formula = y~x, method = "lm", se = FALSE) +
 theme_classic() +
 labs(x = "ln(body mass)",
      y = "ln(daily energy expenditure)")

MoleRat$prd <- predict(lm.graph, MoleRat)

ggplot(MoleRat, aes(x = lnMass, colour = caste)) +
 geom_point(aes(y = lnEnergy), size = 2) +
 geom_line(aes(y = prd), size = 1) +
 theme_classic() +
 labs(x = "ln(body mass)",
      y = "ln(daily energy expenditure)")


但是,您发布的图像是由另一个模型创建的:

lm(lnEnergy ~ lnMass + caste, data = MoleRat)
基于此,您将获得以下图像:

lm.graph <- lm(lnEnergy ~ lnMass + caste, data = MoleRat)

plot(lnEnergy ~ lnMass, MoleRat)
points(lnEnergy ~ lnMass, infrequent, col = "red", pch = 19)
points(lnEnergy ~ lnMass, frequent  , col = "red")

lmcoef <- coef(lm.graph)
abline(a = lmcoef[1], b = lmcoef[2])
abline(a = lmcoef[1] + lmcoef[3], b = lmcoef[2])

lm.graph您可以使用绘图:

plot(lnEnergy ~ lnMass, MoleRat)
points(lnEnergy ~ lnMass, infrequent, col = "red", pch = 19)
points(lnEnergy ~ lnMass, frequent  , col = "red")
abline(lm.infrequent)
abline(lm.frequent)

或(更容易)使用ggplot:

library(ggplot2)

ggplot(MoleRat, aes(x = lnMass, y = lnEnergy, colour = caste)) +
 geom_point(size = 2) +
 geom_smooth(formula = y~x, method = "lm", se = FALSE) +
 theme_classic() +
 labs(x = "ln(body mass)",
      y = "ln(daily energy expenditure)")

MoleRat$prd <- predict(lm.graph, MoleRat)

ggplot(MoleRat, aes(x = lnMass, colour = caste)) +
 geom_point(aes(y = lnEnergy), size = 2) +
 geom_line(aes(y = prd), size = 1) +
 theme_classic() +
 labs(x = "ln(body mass)",
      y = "ln(daily energy expenditure)")


但是,您发布的图像是由另一个模型创建的:

lm(lnEnergy ~ lnMass + caste, data = MoleRat)
基于此,您将获得以下图像:

lm.graph <- lm(lnEnergy ~ lnMass + caste, data = MoleRat)

plot(lnEnergy ~ lnMass, MoleRat)
points(lnEnergy ~ lnMass, infrequent, col = "red", pch = 19)
points(lnEnergy ~ lnMass, frequent  , col = "red")

lmcoef <- coef(lm.graph)
abline(a = lmcoef[1], b = lmcoef[2])
abline(a = lmcoef[1] + lmcoef[3], b = lmcoef[2])

感谢您的回复!我们不应该为这个类使用包/附加组件。我可以通过使用as.factorTanks进行响应!我们不应该为这个类使用包/附加组件。我可以用as.factor来做这件事