[R-br] RES: [R-br Teste de diferça entre proporções via loop

Cesar Rabak cesar.rabak em gmail.com
Terça Março 29 17:45:47 BRT 2016


Mauro,

Sua importação de dados gerou uma quinta linha com nº de experimentos menor
que os "acertos" para os testes de proporção.

Veja os seus resultados versus os meus e verás que o valor de N na quinta
linha deve ser 30500 e não 305 como você importou. . .

HTH
--
Cesar Rabak


2016-03-26 17:24 GMT-03:00 Mauro Sznelwar <sznelwar em uol.com.br>:

> Por que não estou conseguindo rodar?
>
>
>
> > dados <- read.table("data_test.txt", header=T, sep= "\t")
>
> > dados$p_valor <- apply(dados[,2:4], 1, function(linha)
> prop.test(x=c(linha[1],linha[2]),n=c(linha[3],linha[3]), correct=F)$p.value)
>
> Error in prop.test(x = c(linha[1], linha[2]), n = c(linha[3], linha[3]),
> :
>
>   elements of 'x' must not be greater than those of 'n'
>
> > dados
>
>   AREA   X1   X2     N
>
> 1    1 1982 9416 11398
>
> 2    2 6546 4084 10630
>
> 3    3 3418  667  4085
>
> 4    4 1503 4408  5911
>
> 5    5  966  339   305
>
> >
>
>
>
>
>
>
>
>
>
> Como sugestão para um código mais enxuto, o objetivo poderia ser atingido
> com a aplicação da função apply:
>
>
>
> > dados <- read.table("data_test.txt", header=T, sep= "\t")
>
> > dados$p_valor <- apply(dados[,2:4], 1, function(linha)
> prop.test(x=c(linha[1],linha[2]),n=c(linha[3],linha[3]), correct=F)$p.value)
>
> > dados
>
>   AREA   X1   X2     N       p_valor
>
> 1    1 1982 9416 11398  0,000000e+00
>
> 2    2 6546 4084 10630 5,362948e-250
>
> 3    3 3418  667 40850  0,000000e+00
>
> 4    4 1503 4408 59110  0,000000e+00
>
> 5    5  966  339 30500  6,472911e-69
>
>
>
> Ademais, se o OP tiver que resolver problemas dessa natureza com
> frequência, pode ser que valha a pena examinar alguns pacotes que têm
> funções para facilitar esse tipo de resumos, como, por exemplo, os pacotes
> *descr* e *reporttools*.
>
>
>
> HTH
>
> --
>
> Cesar Rabak
>
>
>
>
>
> On Wed, Mar 23, 2016 at 1:46 PM, Daniel Tiezzi <dtiezzi em usp.br> wrote:
>
> Boa tarde Wagner
>
>
>
> Supondo que seus dados esteja uma tabela data_test (em anexo)
>
>
>
> acho que você pode resolver assim
>
>
>
>
>
> data<- read.table(“data_test.txt”, header=T, sep= “\t”)
>
>
>
> data_df <- as.data.frame(data)
>
>
>
> res<- list()
>
>
>
> for (i in 1:nrow(data)) {
>
>   y<- prop.test(x = c(data$X1[i], data$X2[i]), n = c(data$N[i],
> data$N[i]), correct = FALSE)
>
>   x= y$p.value
>
>   res[[paste0(i)]] <- x
>
> }
>
>
>
> result <- t(as.data.frame(res))
>
>
>
> data_df1 <- cbind(data_df, result)
>
>
>
> data_df1
>
>
>
>
>
> Espero que funcione
>
>
>
>
>
> daniel
>
>
>
>
>
>
>
> Daniel Tiezzi, MD, PhD
>
> Professor Associado
>
> Departamento de Ginecologia e Obstetrícia
>
> Setor de Mastologia e Oncologia Ginecológica
>
> Faculdade de Medicina de Ribeirão Preto - USP
>
> Tel.: 16 3602-2488
>
> e-mail: dtiezzi em fmrp.usp.br
>
>
>
>
>
>
>
>
>
> On Mar 23, 2016, at 3:50 PM, Wagner Tassinari <wtassinari em gmail.com>
> wrote:
>
>
>
> AREA    X1      X2       N       p_valor
> 1        1982    9416    11398      ?
> 2        6546    4084    10630      ?
> 3        3418    667       4085       ?
> 4        1503    4408      5911       ?
> 5        966        339       305       ?
>
>
>
>
> ------------------------------
> [image: Avast logo]
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>
> Este email foi escaneado pelo Avast antivírus.
> www.avast.com
> <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=emailclient>
>
>
> _______________________________________________
> R-br mailing list
> R-br em listas.c3sl.ufpr.br
> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br
> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça
> código mínimo reproduzível.
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20160329/10a386df/attachment.html>


Mais detalhes sobre a lista de discussão R-br