Anova测试回归与R中的kn

时间:2017-11-20 10:32:01

标签: r regression knn anova

我正在尝试对R中的两个不同模型进行anova测试: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)

我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

来自anova(object,...)的文档:

  • 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"