revell

  •  
  • 2008年3月28日
  • 注册于 2007年4月10日
  • 请问cOPULA在计量经济学里可以干什么?我有一个公司数据,里面有两个有相关的变量.我老板叫我做一个这两个变量的copula,然后从中间抽样,再作者两个变量的simulated的数据的plot.到底有什么意义呢?我的理解是就和bootstrap差不多,通过joint distribution来增大样本量,为以后的quantile 分析作准备.我们原来有200多家公司的数据. 另外请问有没有step-by-step教你如何在某个软件里面生成copula,然后再抽样的教程?我想在Stata里面做,但是力不从心,底子太薄了 不知道如何下手

    • ryo 觉得很赞
  • 最简单的那种.假设我有两个变量X,Y,想在Stata里面做一个Gaussian Normal Copula, 做出F(X,Y)=C(FX(x), FY(y),theta). 然后从中间抽样1000次.有人做过类似的东西吗?可以把Code贴上来看看吗?谢谢.
  • 回楼上的,别的论坛有人指出来了。改成如下的即可.你指出的问题是对的.程序也条是通过了。回答True. Function本身是对的.



    Sub test2()

    Dim s As String

    s = "cat"

    Dim temp10 As Variant

    temp10 = Array("cat", "dog", "bird")

    Dim yesno As Boolean

    yesno = IsInArray(s, temp10)

    Debug.Print yesno

    End Sub
  • 请问楼上有没有懂VBA的?我写了一个子方程模块,要比较一个字段和一个数组,如果字段在数组里面就返回True,否则返回False.



    Function IsInArray(s, temp10) As Boolean

    Dim i As Long

    For i = LBound(temp10) To UBound(temp10)

        If temp10(i) = s Then

              IsInArray = True

        Exit For

        Else

              IsInArray = False

        End If

    Next i

    End Function

    ------------------------------

    Sub test2()

    Dim s As String

    s = "cat"

    Dim temp10(1 To 3) As String

    temp10 = Array("cat", "dog", "bird")   <==高亮在这里

    Dim yesno As Boolean

    yesno = IsInArray(s, temp10)

    Debug.Print yesno

    End Sub



    然后用test2()去调试。结果说“cann't assign to array”,并且高亮显示“temp10”.不知道错在哪里?

    能不能帮我看看不知道错在哪里? 本质上来说这个功能很直白的. 谢谢.
  • 谢谢楼上的。我现在在看VBA的书,打算自己编一个程序.
  • 手头上有一批数据要处理,自己算了一下手动要336个小时的工作量而且就算自己一口气干完估计也差不多了.我向能不能找人来变个程序?下面简单描述一下任务.





    数据并不复杂,两张Excel表。一个是200多家公司的名单,一个是这200多家公司的子公司的详细列表.在表一里面选择第一家公司,然后在表二里面从详细信息里找到相关的公司,然后生成一个新的变量,根据简单规则给这家公司变个代码,0,1,2三种情况而以,将0,1或2储存到这个新变量里面. 然后返回表一,选择下一家公司再到表二里面比对.







    估计手动完成这200多家公司的比对需要24个小时(比较宽松的强度),问题是我有14年的数据,总时间就是336小时.







    突然想了一下这么长的工作时间,不如干脆找人来编个程序算了.我想问问像我这样的任务,可以用数据库软件来编程吧?能在Excel里面实现吗?因为我手动匹配就是在Excel里面做的.VB可以吗?或者Foxpro,如果这个软件还有的话.再高级的数据库软件我也没有了.



    实际情况比这个要略为复杂一点. 谢谢.
  • . spearman y c1



    Number of obs =   3248

    Spearman's rho =     0.0995



    Test of Ho: y and c1 are independent

      Prob > |t| =     0.0000



    . tabulate y c1, chi2



          |       c1

          y |       0       1 |   Total

    -----------+----------------------+----------

          0 |   2,094     697 |   2,791

          1 |     285     172 |     457

    -----------+----------------------+----------

      Total |   2,379     869 |   3,248



          Pearson chi2(1) = 32.1362   Pr = 0.000





    上面两个检验发现y和c1不是独立的,实际的联系是y取值为0的概率在c1=0,1的情况下更高一些. 而且chi2检验已经给出了transition matrix .



    那么问题是要想知道当c1=1时y=1的条件概率的大小程度,是不是只能用离散变量回归来计算?比如probit?
  • 我有两个离散变量,分别表示某公司当期进入市场与否,和他的竞争对手上一年进入与否。即Y(某公司进入 at t)和C(他的竞争对手进入 at t-1). 我用简单的Probit模型发现P(Y=1)=alpha+beta*C的系数beta显著为正。请问一下还有什么方法可以检验Y,C取值=1的情况是否相互独立?或者说检验我进入和我的对手进入的决策是对立或者不独立的.



    用相关系数吗?我用Excel作了一下只有0.1不到的相关度。



    用Transition Matrix吗?但是没办法检验结果的显著性.



    请问还有什么常见的统计方法。我使用Stata9和10. 谢谢.
  • 多谢楼上的指点.我不熟悉hierarchical model,能给几篇文章的名字吗?我这里应该可以找到.



    我的朋友是用VAR做关于经济增长和innovation之间关系的.
  • 最近有人问我该如何平均posterior.他是做宏观经济的.他有个模型可以计算出14个国家的posterior,关于某个系数的.然后他想求得一个一般的posterior,有两个方法,一是简单算术平均,二是根据标准差来权重,即标准差越大的,权重越小.我觉得他的方法挺好的.但是他还不满意想找更好的方法.



    所以我想请教一下,如果能够取得若干个posterior的话,有什么好的办法综合所有的posterior?我依稀记得有这方面的东西但是找不到关键词,从google里也搜不到什么.



    谢谢.
  • 随便说说的啊,动用高性能计算吧.n台机器联网算他个一个月.
  • 这是在discrete choice model,比如probit中有人提到的要求.请问为什么?比如下面的例子

    _i1指的是下标



    y_i1 = F(z_i1*beta + α_i*theta + u_i1 > 0)

    Since y is binary, a normalization is required. A convenient one is σ2(u的方差)=1.



    如果y是0或1的话,怎么可能转化成正态分布呢?如果不转化可以吗?我看很多discrete choice model的实证研究都没有这样做啊。



    谢谢!
  • Sensitivity of Prior is an important part of a Bayesian analysis project.Bayesian approach provides numorous possibilities to her admirers, but requesting a careful heart of them.
  • Fine.Thanks for the help and I will try.
  • 数据的list之前和结尾之后要留出至少一个空行,要不然程序读不了数据.



    还有logit(p)<-alpha0+alpha1*x1[ i ]+alpha2*x2[ i ]+alpha12*x1[ i ]*x2[ i ]+b



    最后的b是不是individual-specific effects?要不要写成b[ i ]?我觉得按你上面的代码程序无法分别alpha0和b.
  • 1、b服从标准正态分布,在程序中怎么增加语句

    b~dnorm(0,1),不知道对不对.

    2、在导入数据的时候说N变量有问题

    数据间要加逗号。

    r=c(10,23,23,26,17,5,53,55,32,46,10,8,10,8,23,0,3,22,15,32,3),

    n=c(39,62,81,51,39,6,74,72,51,79,13,16,30,28,45,4,12,41,30,51,7),

    x1=c(0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1),

    这样.



    3、赋初值的时候说模型中有的变量没有赋值

    b要在initial里表达.



    建议你找个例子仔细看看每个语法细节.我也是初学者,共同进步.
  • 谢谢hangover的解释。我对likelihood之类的概念掌握的不是很好。没办法写出likelihood,再根据likelihood写出WinBUGS程序.所以基本上是改写别人的代码,当然在概念上尽量搞懂为什么这样做.:(



    我最近改写了Tony的代码,试着把多个自变量放进去,而且还是二维的数据.我用WinBUGS试过了可以运行.但是不知道代码对不对.如果你看得懂pp.307页的代码的话,能不能帮我看看我改写的代码是否符合orthogonal reparametrization的思想.下面的代码包含两个自变量(x和num),以及数据和inits.简单的解释一下,pz是指定每一时期的lam都是1/13的概率,而pw是指定每个自变量对lam赋值的时候都有1/2的概率.也许是比较stupid的方法?



    我另外还将二维数据改写成了三维数据,但是很怀疑是否正确。所以如果下面的应用于二维数据的代码可以用的话,我情愿不去碰三维数据.



    MODEL2.1         treating incidental parameter problem, two independent variables

    model{

    for( i in 1 : N ) {

    for( j in 1 : T ) {

    y[i, j] ~ dbern(mu[i, j])

    mu[i, j] <- phi(alpha +beta * x[i, j] + beta.num * num[i, j] + beta.yr[j])}

    alpha ~ dnorm(nu, 1)

    nu <- lam[i, z, w]

    z ~ dcat (pz[])

    w ~ dcat (pw[])

    lam[i, 1, 1] <- -beta * x[i, 1]

    lam[i, 2, 1] <- -beta * x[i, 2]

    lam[i, 3, 1] <- -beta * x[i, 3]

    lam[i, 4, 1] <- -beta * x[i, 4]

    lam[i, 5, 1] <- -beta * x[i, 5]

    lam[i, 6, 1] <- -beta * x[i, 6]

    lam[i, 7, 1] <- -beta * x[i, 7]

    lam[i, 8, 1] <- -beta * x[i, 8]

    lam[i, 9, 1] <- -beta * x[i, 9]

    lam[i, 10, 1] <- -beta * x[i, 10]

    lam[i, 11, 1] <- -beta * x[i, 11]

    lam[i, 12, 1] <- -beta * x[i, 12]

    lam[i, 13, 1] <- -beta * x[i, 13]

    lam[i, 1, 2] <- -beta.num * num[i, 1]

    lam[i, 2, 2] <- -beta.num * num[i, 2]

    lam[i, 3, 2] <- -beta.num * num[i, 3]

    lam[i, 4, 2] <- -beta.num * num[i, 4]

    lam[i, 5, 2] <- -beta.num * num[i, 5]

    lam[i, 6, 2] <- -beta.num * num[i, 6]

    lam[i, 7, 2] <- -beta.num * num[i, 7]

    lam[i, 8, 2] <- -beta.num * num[i, 8]

    lam[i, 9, 2] <- -beta.num * num[i, 9]

    lam[i, 10, 2] <- -beta.num * num[i, 10]

    lam[i, 11, 2] <- -beta.num * num[i, 11]

    lam[i, 12, 2] <- -beta.num * num[i, 12]

    lam[i, 13, 2] <- -beta.num * num[i, 13]

    }

    for(j in 1:T){

    beta.yr[j] ~ dnorm(0,0.001)

    }

    beta ~ dnorm(0, 0.001)

    beta.num ~ dnorm(0, 0.001)

    }



    init for model 1 and 2 only

    list(alpha=c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0),

        beta = 0,

        beta.num = 0,

        beta.yr = c(NA,0,0,0,0,0,0,0,0,0,0,0,0),

    )



    Data 2 for Model 2 and model 2.1 only



    list(

      N=10,T=13,

      pz=c(0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923, 0.076923),

      pw=c(0.5, 0.5),

      y=structure(

          .Data=c(

    0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,

    0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,

    1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,

    0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1,

    0, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0,

    0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,

    0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,

    0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,

    0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,

    0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0),

              .Dim=c(10,13)

    ),

          x=structure(

            .Data=c(

    0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0,

    0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0,

    1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0,

    1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1,

    1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,

    0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0,

    1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0,

    0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,

    0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0,

    1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0),

              .Dim=c(10,13)

    ),    

        num=structure(

                .Data=c(

    0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 1.0986, 1.0986, 1.0986, 1.0986,

    1.6094, 1.6094, 1.6094, 1.6094, 1.6094, 1.6094, 1.6094, 1.7918, 1.7918, 1.7918, 1.7918, 1.7918, 1.7918,

    2.3979, 2.4849, 2.5649, 2.5649, 2.5649, 2.5649, 2.5649, 2.6391, 2.6391, 2.6391, 2.6391, 2.6391, 2.6391,

    2.6391, 2.6391, 2.6391, 2.6391, 2.7081, 2.7081, 2.7081, 2.7081, 2.7726, 2.7726, 2.9444, 2.9444, 2.9957,

    2.7081, 2.7081, 2.7081, 2.7726, 2.8904, 2.9444, 3.0445, 3.0445, 3.1355, 3.1355, 3.1781, 3.1781, 3.1781,

    2.1972, 2.1972, 2.3026, 2.3026, 2.3026, 2.3979, 2.3979, 2.3979, 2.3979, 2.3979, 2.3979, 2.3979, 2.3979,

    1.7918, 1.7918, 1.7918, 1.7918, 1.7918, 1.7918, 1.7918, 2.0794, 2.1972, 2.3026, 2.3026, 2.3026, 2.3026,

    0.0000, 0.0000, 0.0000, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931, 0.6931,

    1.9459, 1.9459, 2.0794, 2.0794, 2.0794, 2.0794, 2.0794, 2.0794, 2.0794, 2.0794, 2.1972, 2.1972, 2.1972,

    2.3026, 2.3026, 2.3026, 2.4849, 2.4849, 2.5649, 2.8332, 2.8332, 2.8332, 2.9444, 3.0445, 3.0445, 3.0445),  

              .Dim=c(10, 13)            

        )

    )

    END