方差分析检验回归与 R 中的 knn



我正在尝试对 R 中的两种不同模型进行方差分析:lm模型与knn模型。问题是出现此错误:

Error in anova.lmlist(object, ...) : models were not all fitted to the same size of dataset

我认为这是有道理的,因为我想知道是否有统计证据证明模型之间的差异。为了给您一个可重现的示例,这里有:

#Getting dataset
xtra <- read.csv("california.dat", comment.char="@")
names(xtra) <- c("Longitude", "Latitude", "HousingMedianAge",
"TotalRooms", "TotalBedrooms", "Population", "Households",
"MedianIncome", "MedianHouseValue")
n <- length(names(xtra)) - 1
names(xtra)[1:n] <- paste ("X", 1:n, sep="")
names(xtra)[n+1] <- "Y"
#Regression model
reg.model<-lm(Y~.,data=xtra)
#Knn-model
knn.model<-kknn(Y~.,train=xtra,test=xtra,kernel = "optimal")
anova(reg.model,knn.model)

我做错了什么?

提前谢谢。

我的猜测是这两个模型无法与anova()进行比较,并且抛出此错误是因为其中一个模型将被视为空的。

anova(object,...)文档中:

  • 对象 - 包含模型拟合返回的结果的对象功能(例如,LM 或 GLM(。

  • ... - 相同类型的其他对象。

当您查看是否可以比较模型时,您可以看到它们属于不同的类型:

> class(knn.model)
[1] "kknn"
> class(reg.model)
[1] "lm"

可能更重要的是,如果您尝试运行anova() knn.model,您可以看到您无法将该函数应用于kknn对象:

> anova(knn.model)
Error in UseMethod("anova") : 
  no applicable method for 'anova' applied to an object of class "kknn"

最新更新