当前位置: 首页 > 知识库问答 >
问题:

prob包似乎误判了条件概率?

李景天
2023-03-14

我的数据集是

 Q1 Q2 Q3 Q4 

  1  1  0  0  
  0  0  0  0  
  0  1  0  1  
  0  1  0  1  

我想计算prob(Q2=1,给定q4=1),根据我的知识,它应该是1。但是当我在R中使用following命令时

prob(a,q2==1,q4==1)返回0.5

第二个问题是如果我将数据集更改为

  Q1 Q2 Q3 Q4 
  1  1  0  0 
  1  0  1  0 
  0  1  0  1 
  1  1  1  1 

当我使用上面的数据并计算上面的概率时,它返回1。当我不改变Q2和Q4时,概率怎么会改变。
我的想法是,在这两种情况下,概率应该是相同的1。

为什么它只是随着其他参数Q1和q3的变化而变化。我认为它应该改变,因为P(q2=1/q4=1)独立于Q1和q3。

共有1个答案

宗冠宇
2023-03-14

问题是prob使用intersect,它排除了重复项。因此,它执行的计算是sum(intersect(A,B)$probs)/sum(B$probs),即0.25/0.5=0.5。

如果您想要正确的计算,您必须使用排他性概率,如下所示(第3行的概率为50%):

a <-read.table(text="Q1 Q2 Q3 Q4
  1  1  0  0
  0  0  0  0
  0  1  0  1",header=TRUE,stringsAsFactors=FALSE)
a$probs <-c(0.25,0.25,0.5)

Prob(a,event=Q2==1,given=Q4==1)
[1] 1

至于第二个问题,prob工作正常,因为intersect没有删除重复项,因为第3行和第4行不同。

 类似资料:
  • 我正在尝试为一个相对较小的程序使用jpack创建一个本机安装程序。创建的应用程序映像的大小约为120 MB。这很奇怪,因为我以前使用过jlink,运行时映像过去只有约40 MB。经过一些挖掘,我在我的应用程序映像中发现了,一个90 MB大小的文件。由于列出了很多东西(模块?)我不使用,我认为jpack打包了它不应该打包的东西,但我不确定。 注意:程序不应该是模块化的。我的理解是,这只在制作多部件程

  • 问题内容: 我正在比较测试程序上的两个变体。两者都在具有四个内核的计算机上以4线程运行。 在“模式1”下,我非常类似于执行程序服务来使用池。我把一堆任务扔了进去。与普通的固定线程执行器服务相比,我获得了更好的性能(即使有对Lucene的调用,该调用在其中执行了一些I / O)。 这里没有分而治之。从字面上看,我知道 在“模式2”中,我向池提交一个任务,然后在该任务中调用ForkJoinTask.i

  • 我正在查询具有嵌套对象的集合。域模型如下所示: 我正在使用如下所示的条件进行查询: 同时,我还在研究如何解决这个问题,因为我不能改变文档结构...

  • 当我从android studio运行android项目时,它正在工作。可能是gradle的问题,但不能解决它。请帮忙

  • 我正在创建一个应用程序,用户在其中输入 7-10 个数值。然后,条目用于一个相当分层的公式,该公式向用户返回结果。两个值给我带来了麻烦,并产生了一个我无法弄清楚的数字。 从微调器中选择一个条目,因为只有4种可能的选择: 此选项不仅用于等式,还用于确定是否需要额外的信息。 获得IHCValue: 如果用户从此下拉列表中选择“2”,则下一个活动将要求 ,也用于等式的一部分: 获取FISHEntry:

  • 问题内容: 如果我在节点中编写以下程序: 然后在服务器上单击两次,在服务器上看到两次- 我不确定为什么单个HTTP请求导致两次执行。 问题答案: 那是正常现象-您的浏览器拨打了多个电话。 例如,大多数浏览器都会呼叫来获取。 尝试记录网址: 然后您会看到正在调用的内容。