0

我的问题类似于另一个较早的问题“如何获取使用 R 中的函数 multinom 创建的模型中包含的观察数?” 但我要寻找的是模型中分析的确切观察结果,而不是观察结果的数量。最终,我希望将原始数据集与预测(拟合)概率的新列相结合。但是让我用一个例子来说明我的问题:

如果我的样本是1000,一些变量有NA值,我在R中拟合一个multinom(),并使用fitted(),然后发现fitted()的长度只有870,这意味着模型时排除了130个obs估计的。现在,fitted() 只生成一个 870*1(即一列)的数字(概率),我无法知道每个概率数对应于哪个观察值。我认为有两种方法可以解决这个问题:

  1. 在估计模型之前,找出哪些观察被排除并在原始数据中删除它们。
  2. 尝试让 fit() 生成一个 1000*1 矩阵,其中 130 个元素为 NA。

我不知道任何一个的答案。任何意见,将不胜感激。最终目标是能够将拟合概率附加到原始数据集(作为新列),以便我可以得出推论。谢谢。

4

1 回答 1

0

来自?multinom网络:

   model: logical. If true, the model frame is saved as component
          'model' of the returned object.

所以调用multinom(..., model=TRUE),模型框架将在结果中。

编辑:

按照中的示例?multinom

options(contrasts = c("contr.treatment", "contr.poly"))
library(MASS)
example(birthwt)
bwt.mu <- multinom(low ~ ., bwt, model=TRUE)

查看对象内部的模型框架:

>     str(bwt.mu$model)
'data.frame':   189 obs. of  9 variables:
 $ low  : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
 $ age  : int  19 33 20 21 18 21 22 17 29 26 ...
 $ lwt  : int  182 155 105 108 107 124 118 103 123 113 ...
 $ race : Factor w/ 3 levels "white","black",..: 2 3 1 1 1 3 1 3 1 1 ...
 $ smoke: logi  FALSE FALSE TRUE TRUE TRUE FALSE ...
 $ ptd  : Factor w/ 2 levels "FALSE","TRUE": 1 1 1 1 1 1 1 1 1 1 ...
 $ ht   : logi  FALSE FALSE FALSE FALSE FALSE FALSE ...
 $ ui   : logi  TRUE FALSE FALSE TRUE TRUE FALSE ...
 $ ftv  : Factor w/ 3 levels "0","1","2+": 1 3 2 3 1 1 2 2 2 1 ...
 - attr(*, "terms")=Classes 'terms', 'formula' length 3 low ~ age + lwt + race + smoke + ptd + ht + ui + ftv
  .. ..- attr(*, "variables")= language list(low, age, lwt, race, smoke, ptd, ht, ui, ftv)
  .. ..- attr(*, "factors")= int [1:9, 1:8] 0 1 0 0 0 0 0 0 0 0 ...
  .. .. ..- attr(*, "dimnames")=List of 2
  .. .. .. ..$ : chr [1:9] "low" "age" "lwt" "race" ...
  .. .. .. ..$ : chr [1:8] "age" "lwt" "race" "smoke" ...
  .. ..- attr(*, "term.labels")= chr [1:8] "age" "lwt" "race" "smoke" ...
  .. ..- attr(*, "order")= int [1:8] 1 1 1 1 1 1 1 1
  .. ..- attr(*, "intercept")= int 1
  .. ..- attr(*, "response")= int 1
  .. ..- attr(*, ".Environment")=<environment: R_GlobalEnv> 
  .. ..- attr(*, "predvars")= language list(low, age, lwt, race, smoke, ptd, ht, ui, ftv)
  .. ..- attr(*, "dataClasses")= Named chr [1:9] "factor" "numeric" "numeric" "factor" ...
  .. .. ..- attr(*, "names")= chr [1:9] "low" "age" "lwt" "race" ...
于 2016-01-13T00:08:26.113 回答