2016-11-30 112 views
1

我得比较以下两个模型的输出:解释netlogit输出

PTA.Logit.Ctrl <-glm(pta~ally+distance+ltrade+language+igo+affinity, 
       family=binomial(link="logit"),data=pta.ally.dyadic.1990.csv) 

PTA.QAPX.Ctrl <- netlogit(pta_network_1990,list(ally_network_1990,distance_1990,trade_1990, language_1990, igos_1990, affinity_1990), intercept=TRUE, mode="graph", diag=FALSE, nullhyp=c("qapx"), reps=100) 

看起来如下:

enter image description here

enter image description here

现在,glm输出非常简单,但我仍然在努力处理净logit输出,特别是关于显着性分数。对于第一种模型,网络数据以二元形式使用,第二种以矩阵形式使用。任何有关如何解释净logit输出的帮助将不胜感激!

+0

这个问题对于交叉验证更合适,因为它是一个统计问题,而不是编程问题。我会在这里给出一个答案,并且如果它被迁移就将其移交。 – paqmo

+0

哦,是的,你是对的,谢谢你指出,当然你的答案! – atzepeng

回答

1

与参数化的glm模型不同,qap模型是非参数化的,使用基于置换的方法更适合于网络数据。您注意到系数是相似的(实际上应该是相同的,因为netlogit使用glm来估计模型)。但是,p值和标准误差是模型不同的地方。 qap模型对模型矩阵的行和列进行置换(取决于采用的方法,这里是x个置换),并重新计算系数和测试统计量。它按照rep=n中指出的次数执行此操作。这创建了一个分布,对最初估计的测试统计进行比较。最后的三列(Pr(<=b)等)分别代表较低,较高和双尾测试。

我会用玩具网络来说明这一点。

library(igraph); library(ggplot2) 
x<-rgraph(25,2) 
y.l<-x[1,,]*3 
fit <- netlogit(y, x, reps=100, nullhyp = "qapx") 

以下是汇总统计:

> summary(fit) 

Network Logit Model 

Coefficients: 
      Estimate Exp(b) Pr(<=b) Pr(>=b) Pr(>=|b|) 
(intercept) 0.1859224 1.2043289 1.00 1.00 1.00  
x1   -0.2377116 0.7884300 0.08 0.92 0.13  
x2   -0.2742033 0.7601775 0.03 0.97 0.08  

你可以看到模型中的每个术语分布在netlogit对象与fit$dist[,2]为x1和fit$dist[,3]为x2和使用fit$tstat[2]检验统计量和fit$tstat[3]

ggplot() + geom_density(aes(fit$dist[,2])) + geom_vline(aes(xintercept=fit$tstat[2])) 

enter image description here

您可以看到,大约0.08个观察值小于或等于x2的检验统计量,而0.92大于或等于检验统计量。

我们可以用数字看到:

> mean(fit$dist[,2] >= fit$tstat[2]) 
[1] 0.92 
> mean(fit$dist[,2] <= fit$tstat[2]) 
[1] 0.08 
> mean(abs(fit$dist[,2]) >= abs(fit$tstat[2])) 
[1] 0.13 

然后,我们在标准的方式解释这些p值 - 如果有y和X1(空)之间没有任何关系,然后观察测试的概率统计值大于或等于0.92等。关键是分布不是参数分布,而是基于数据的排列。