我读过 Gardner 和 Le Roux 关于将 Biplot Methodology 扩展到判别分析的论文。我想问是否有人对这种方法有任何实际经验。我有一个来自 kaggle Human Resources Analytics 的数据集的 FDA 模型,可在此处获取 data set。我使用了代码
modFDA = train(left~. , data = train, method = 'fda',
tuneGrid = data.frame(degree = 1:10, nprune = 1:10),
trControl = trainControl(method = 'cv', number = 10, repeats = 5))
来拟合模型。训练样本选择使用
smp.size = floor(0.7*nrow(data))
set.seed(123)
train.ind = sample(seq_len(nrow(data)), size = smp.size)
train = data[train.ind,]
test = data[-train.ind,]
当我尝试使用该biplot
函数时,我收到一个缺少 y 值的错误。我知道有一个 ggbiplot 函数,但它似乎只适用于 LDA,因为它需要线性判别式进行绘图。而且我在我的模型输出中找不到那些更精确的判别值。我似乎错过了一些东西,但我无法弄清楚它是什么..
我的更多代码
biplot(modFDA$finalModel)
返回缺失的 y 值。
还尝试缩放数据集
train_z = lapply(train, function(x) if (is.numeric(x)) scale(x) else x)
FDAfit = fda(left~., data = train_z)
df = fortify(FDAfit, train_z)
尝试使用虹膜数据上的示例但使用 LDA 来拟合 ggplot,但不知道用于aes
. 似乎也没有名为 geom_axis 的函数
g <- ggplot(df, aes(x = (LD1)?, y = (LD2)?)) +
geom_point(aes(color = left)) +
stat_ellipse(aes(group = left, color = left)) +
geom_axis(data = attr(df, "basis"), aes(label = abbreviate(.name))) +
coord_equal()