Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 从列中读取数据时遇到问题_R_Max_Apply - Fatal编程技术网

R 从列中读取数据时遇到问题

R 从列中读取数据时遇到问题,r,max,apply,R,Max,Apply,我有大约280个个体的数据和两个称为“外来”和“prevgrad”的虚拟协变量。数据如下: Name Program foreign prevgrad ******* ******* 0 0 ******* ******* 0 0 ******* ******* 1 1 ******* ******* 0 0 ******* ******* 1 1

我有大约280个个体的数据和两个称为“外来”和“prevgrad”的虚拟协变量。数据如下:

    Name    Program foreign prevgrad    
    ******* *******   0       0 
    ******* *******   0       0 
    ******* *******   1       1 
    ******* *******   0       0 
    ******* *******   1       1 
    ******* *******   0       1 
每个人都属于一个程序集群,A或B。我将数据分为两个子集,A和B。我正在尝试生成一个简单的最大似然估计,并尝试执行以下操作:

    ##The density function for subset A
    PrA  <- function(u, piA0, piA1, piA2, piB0, piB1, piB2, z1, z2) {
   (1/sqrt(2*pi)*exp(-u^2/2))*3*exp(piA0+piA1*z1+piA2*z2+u  /(3*exp(piA0+piA1*z1+piA2*z2 + u)+5*exp(piB0+piB1*z1+piB2*z2))
    }

    logIntA  <- function(a0, a1, a2, b0, b1, b2, zee1, zee2) {
    log(integrate(function(u, piA0=a0, piA1=a1, piA2=a2, piB0=b0, piB1=b1, piB2=b2, z1=zee1, z2=zee2) PrA(u, piA0 = piA0, piA1 =piA1, piA2=piA2, piB0 = piB0, piB1 =piB1, piB2=piB2, z1=z1, z2=z2), lower=-10, upper=10)$integral)
    }

    #The density function for subset B
    PrB  <- function(u, piA0, piA1, piA2, piB0, piB1, piB2, z1, z2) {
    (1/sqrt(2*pi)*exp(-u^2/2))*5*exp(piB0+piB1*z1+piB2*z2)/(3*exp(piA0 + piA1*z1 +piA2*z2 + u)+5*exp(piB0+piB1*z1+piB2*z2))
    }

     logIntB  <- function(a0, a1, a2, b0, b1, b2, zee1, zee2) {
     log(integrate(function(u, piA0=a0, piA1=a1, piA2=a2, piB0=b0, piB1=b1, piB2=b2, z1=zee1, z2=zee2) PrB(u, piA0 = piA0, piA1 =piA1, piA2=piA2, piB0 = piB0, piB1 =piB1, piB2=piB2, z1=z1, z2=z2), lower=-10, upper=10)$integral)
    }

    ##The maximum likelihood statistic
    toMax2  <- function(t) {
    piA0=t[1]
    piA1=t[2]
    piA2=t[3]
    piB0=t[4]
    piB1=t[5]
    piB2=t[6]
    (sum(apply(studentsA[,c('foreign','prevgrad')],1, function(s) logIntA(piA0, piA1, piA2, piB0, piB1, piB2, s['foreign'], s['prevgrad'])))+sum(apply(students.AB[,c('foreign','prevgrad')],1, function(s) logIntB(piA0, piA1, piA2, piB0, piB1, piB2, s['foreign'], s['prevgrad']))))
   }
子集A的密度函数
PrA我不认为为行向量
s
编制索引是你的问题。如果在base R中使用
integrate(…)
函数,则返回的列表中没有
$integral
元素。您需要的是
$value
。我怀疑这会导致您使用
日志(NULL)
,这会导致该错误。顺便说一句:R中有几个软件包可以使您尝试执行的操作更轻松。请参见stats4包中的包和
mle(…)
,以及base R中的
logLik(…)