我正在尝试对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)
我做错了什么?
提前致谢。
答案 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"