【问题标题】:Linear Discriminant Analysis in R - Training and validation samplesR 中的线性判别分析 - 训练和验证样本
【发布时间】:2013-09-26 01:44:31
【问题描述】:

我正在使用lda 命令分析一个 2 列、234 行的数据集 (x):X1 列包含预测变量(度量),X2 列包含自变量(分类,4 个类别)。我想通过使用 150 个观测值来构建一个线性判别模型,然后使用其他 84 个观测值进行验证。在对数据进行随机分区后,我得到了 x.build 和 x.validation,分别有 150 和 84 个观察值。我运行以下

fit = lda(x.build$X2~x.build$X1, data=x.build, na.action="na.omit")

然后我像这样运行预测命令:

pred = predict(fit, newdata=x.validation)

通过阅读命令描述,我认为在pred$class 中,我会根据构建的模型获得验证数据的分类,但我得到的是 150 个观察值的分类,而不是我打算用作验证数据的 84 个观察值.我真的不知道发生了什么,谁能给我一个例子来说明我应该如何进行这个分析?

非常感谢您。

【问题讨论】:

    标签: r validation


    【解决方案1】:

    试试这个:

    fit = lda(X2~X1, data=x.build, na.action="na.omit")
    pred = predict(fit, newdata=x.validation)
    

    如果您在构建模型时使用此公式x.build$X2~x.build$X1,则预测需要验证数据中的x.build$X1 列。显然没有,因此您可以对训练数据进行预测。

    【讨论】:

    • 更不用说 x.build$X2 在 data 参数中有 x.build 时是多余的。
    • 非常感谢!我想知道为什么以 xbuild$X2 的方式引用数据列是错误的......你能告诉我一些别的东西来学习更多吗?再次感谢你:)
    • 有两个问题:1)没有必要告诉R X1 应该在x.build 中找到(这是x.build$X1 所做的),您已经通过说data=x.build。但更重要的是:2) predict 将在 newdata 中查找具有您在 lda 中提供的名称的列。如果你在lda 中使用x.build$X1,predict 将寻找x.validation$x.build$X1! (当然找不到)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-19
    • 2011-08-03
    • 2015-10-31
    • 1970-01-01
    • 2013-12-10
    • 2018-07-08
    • 2022-06-22
    相关资源
    最近更新 更多