我应该如何格式化 R mlogit 包的数据?

2024-04-10

我正在使用mlogit与 R 一起打包。

使用以下方式导入我的数据后:

t <-read.csv('junk.csv',header=TRUE, sep=",", dec=".")

并致电:

x <- mlogit.data(t,choice="D",shape="long",id.var="key",alt.var="altkey")

我收到以下错误:

Error in `row.names<-.data.frame`(`*tmp*`, value = c("1.1", "1.2", "1.3",  : 
  duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘1.1’, ‘1.2’, ‘1.3’, ‘1.4’, ‘1.5’, ‘1.6’

有什么想法如何修复它吗?

我的数据以以下格式存在于 csv 文件中:

[垃圾.csv]

key,altkey,A,B,C,D
201005131,1,2.6,118.17,117,0
201005131,2,1.4,117.11,115,0
201005131,3,1.1,117.38,122,1
201005131,4,24.6,,122,0
201005131,5,48.6,91.90,122,0
201005131,6,59.8,,122,0
201005132,1,20.2,118.23,113,0
201005132,2,2.5,123.67,120,1
201005132,3,7.4,116.30,120,0
201005132,4,2.8,118.86,120,0
201005132,5,6.9,124.72,120,0
201005132,6,2.5,123.81,120,0
201005132,7,8.5,119.23,115,

我的经历mlogit是它对不符合的数据不是很宽容exactly它应该是这样的。

在你的例子中,我注意到第一个受访者有 6 个选择,而第二个受访者有 7 个选择。如果您将数据格式化为每个受访者都有相同数量的替代方案mlogit.data功能工作原理:

dat <- read.table(sep=",",text="
key,altkey,A,B,C,D
201005131,1, 2.6,118.17,117,0
201005131,2,1.4,117.11,115,0
201005131,3,1.1,117.38,122,1
201005131,4,24.6,,122,0
201005131,5,48.6,91.90,122,0
201005131,6,59.8,,122,0
201005132,1,20.2,118.23,113,0
201005132,2,2.5,123.67,120,1
201005132,3,7.4,116.30,120,0
201005132,4,2.8,118.86,120,0
201005132,5,6.9,124.72,120,0
201005132,6,2.5,123.81,120,0
201005132,7,8.5,119.23,115,0
", header=TRUE)

Running mlogit所有数据上都会重现错误:

> mlogit.data(dat, choice="D", shape="long", id.var="key", alt.var="altkey")
Error in `row.names<-.data.frame`(`*tmp*`, value = c("1.1", "1.2", "1.3",  : 
  duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': '1.1', '1.2', '1.3', '1.4', '1.5', '1.6' 

但是,删除第 13 行(即第七个替代方案)是有效的:

> mlogit.data(dat[-13, ], choice="D", shape="long", id.var="key", alt.var="altkey")
          key altkey    A      B   C     D
1.1 201005131      1  2.6 118.17 117 FALSE
1.2 201005131      2  1.4 117.11 115 FALSE
1.3 201005131      3  1.1 117.38 122  TRUE
1.4 201005131      4 24.6     NA 122 FALSE
1.5 201005131      5 48.6  91.90 122 FALSE
1.6 201005131      6 59.8     NA 122 FALSE
2.1 201005132      1 20.2 118.23 113 FALSE
2.2 201005132      2  2.5 123.67 120  TRUE
2.3 201005132      3  7.4 116.30 120 FALSE
2.4 201005132      4  2.8 118.86 120 FALSE
2.5 201005132      5  6.9 124.72 120 FALSE
2.6 201005132      6  2.5 123.81 120 FALSE

当然,这不是很令人满意,因为它破坏了一些数据。更好的解决方案是以以下格式构建数据:mlogit()期望,然后调用mlogit()直接地:

dat$key <- factor(as.numeric(as.factor(dat$key)))
dat$altkey <- as.factor(dat$altkey)
dat$D <- as.logical(dat$D)
row.names(dat) <- paste(dat$key, dat$altkey, sep = ".")

现在数据如下所示:

    key altkey    A      B   C     D
1.1   1      1  2.6 118.17 117 FALSE
1.2   1      2  1.4 117.11 115 FALSE
1.3   1      3  1.1 117.38 122  TRUE
1.4   1      4 24.6     NA 122 FALSE
1.5   1      5 48.6  91.90 122 FALSE
1.6   1      6 59.8     NA 122 FALSE
2.1   2      1 20.2 118.23 113 FALSE
2.2   2      2  2.5 123.67 120  TRUE
2.3   2      3  7.4 116.30 120 FALSE
2.4   2      4  2.8 118.86 120 FALSE
2.5   2      5  6.9 124.72 120 FALSE
2.6   2      6  2.5 123.81 120 FALSE
2.7   2      7  8.5 119.23 115 FALSE

你可以打电话mlogit()直接地:

mlogit(D ~ A + B + C, dat, 
       chid.var = "key", 
       alt.var = "altkey", 
       choice = "D", 
       shape = "long")

Result:

Call:
mlogit(formula = D ~ A + B + C, data = dat, chid.var = "key",     alt.var = "altkey", choice = "D", shape = "long", method = "nr",     print.level = 0)

Coefficients:
2:(intercept)  3:(intercept)  4:(intercept)  5:(intercept)  6:(intercept)  
      10.7774         4.8129         5.2257       -17.2522        -7.7364  
7:(intercept)              A              B              C  
      10.0389         1.6010         2.7156         2.9888  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我应该如何格式化 R mlogit 包的数据? 的相关文章

随机推荐

  • IShellLink::SetIconLocation 将我的图标路径转换为 ​​%Program Files% 这是错误的

    有谁知道如何纠正这种行为 目前 当我们的安装程序安装我们的应用程序时 它会获得一个IShellLink 然后加载我们的快捷方式图标 在开始菜单和桌面中 所需的数据 然后使用IPersistFile 保存写出快捷方式 问题是为图标指定的路径
  • 中缀表示法的有趣行为

    有时 有人试图躲在电脑屏幕后面 试图摆脱女朋友 然而 我发现Scala有时和我的女孩一模一样 这将打印两个列表之间的交集 val boys List Person John Person Kim Person Joe Person Piet
  • MVVM - 分离视图之间的通信

    我试图弄清楚如何执行以下操作 我有一个CustomerListViewModel其中包含一个ObservableCollection
  • 在 Swift 中使用 Tab 键选择下一个 NSTextField

    在 Swift 中 有没有办法通过按键盘上的 Tab 来更改响应者或选择另一个文本字段 笔记 这是填空式申请 我的 VC 创建了一个单词列表 Word 每个单词都有自己的 WordView word wordView WordView 就是
  • Maven 3.5.2 无法将工件部署到 Artifactory,并出现错误 417

    我正在创建简单的pom项目如下
  • 在故事板中使用 UIPageViewController

    有没有一种方法可以在故事板中为 UIPageViewController 配置数据源 委托和视图控制器而无需编写代码 我确实在 UIPageViewController 中看到了数据源和委托的出口 但无法在场景之间建立连接 也无法将额外的控
  • Laravel 5.2:未找到 Imagick 类

    我们正在将 PDF 页面转换为多个单个图像 我们在stackoverflow中找到了一段代码片段 并将其转换为服务类 我们安装了 Imagick 它也显示在 phpinfo 中 然而 在我们的 Laravel 应用程序版本 5 2 中 我们
  • 如何设置 intel_idle.max_cstate=0 来禁用 c 状态?

    我想在我的计算机上禁用 c 状态 我在 BIOS 上禁用了 c state 但没有获得任何结果 不过 我找到了一个解释 大多数较新的 Linux 发行版 在配备 Intel 处理器的系统上 使用 intel idle 驱动程序 可能编译到内
  • 如何从Python列表中的前一个值中减去该值?

    我正在尝试获取列表中的值 例如 1 2 3 并将它们彼此相减 所以它会返回 1 1 因为第一个值是1 2第二个值是2 3 我如何在 python 中实现这一点 我努力了 x y for x y in list 但这会出现 需要多个值才能解包
  • 带有数组赋值的 JavaScript 意外控制台输出;

    在 webkit 浏览器 Chrome 16 0 912 77 和 Safari 5 1 2 7534 52 7 中进行数组分配后 我收到意外的控制台输出 这是我的函数 它演示了该错误 function test var myArray c
  • 即使用户不接受照片,相机意图 onActivityResult 代码也会保存(空白)图像

    当用户单击叉号不接受照片时 它会以与接受拍摄的照片时相同的方式结束意图 它将文件保存到设备库 但它是空白的 单击叉号不应该意味着 resultCode RESULT OK 吗 我还缺少一张支票吗 谢谢 这是代码 等等 我正在保存活动结果之前
  • 如何从 zip 中打开 html 文件?

    有什么方法可以从包含 html 引用的图像的 zip 文件中打开 html 文件吗 我生成带有资源相对路径的 html 但浏览器不会在 zip 文件中找到它们 我必须先将其提取 从拉链打开它是理想的选择 有什么办法可以做到吗 据我所知 只有
  • 创建 Angular/React 应用程序时的 .Net 本地主机服务器

    我正在使用 VS2017 2019 和 NET Core 2 1 来创建Angular or React应用程序 Angular CLI or create react app用于设置一切 以下所有内容都与开发阶段有关 当我们构建 NET
  • 针对数字板难题的优化 CLP(FD) 求解器

    考虑问题从https puzzling stackexchange com questions 20238 explore the square with 100 hops https puzzling stackexchange com
  • let* 和 set 之间的区别?在 Common Lisp 中

    我正在从事一个基因编程爱好项目 我有一个函数 宏设置 当以 setq setf 形式评估时 将生成一个如下所示的列表 setq trees make trees 2 gt x abs x 然后它将绑定到 lambda 函数
  • 如何使用 Swift 在 stderr 上打印?

    我在 Linux 上使用 Swift 2 2 需要在标准错误流上编写一些调试输出 目前 我正在执行以下操作 import Foundation public struct StderrOutputStream OutputStreamTyp
  • 在没有窗口的windows桌面上绘制OpenGL

    我见过这样的事情 我想知道这是否可能 假设我运行我的应用程序 它会显示其下方的渲染结果 所以基本上 在没有窗口的情况下在屏幕上渲染 可能还是谎言 注意 想要在 Windows 和 C 中执行此操作 可以使用您的应用程序在其他应用程序的窗口上
  • Perl 函数中的引用返回值是否更好?

    与返回数组或哈希的引用相比 返回数组或哈希有哪些优缺点 对内存或执行时间有影响吗 两者在功能上有何区别 sub i return an array my a push things in a return a sub i return a
  • cudaMemcpyToSymbol 与 cudaMemcpy [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我试图找出
  • 我应该如何格式化 R mlogit 包的数据?

    我正在使用mlogit与 R 一起打包 使用以下方式导入我的数据后 t lt read csv junk csv header TRUE sep dec 并致电 x lt mlogit data t choice D shape long