<jupyter_start><jupyter_text>sumário* title: c5c6-turmas1* dates: 2021/06/13* input: exam* output: moodle* options: single* index: * keywords: * author: <NAME>Num doc_exam só funciona assim:- um enunciado comum a todo o exame (contendo por exemplo, dados comuns, uma situação comum)- cada questão pode ter variantes mas serão sempre questões sobre esses dados comuns- o que se assumir no enunciado comum é válido para todas as variantes de cada questão, se estas existirem problemaSeja X = altura de uma *acácia longifolia*.Sabe-se que o desvio padrão populacional da v.a. X é \\(\sigma=DESVIOPOP\\).Foi recolhida uma amostra de alturas tendo-se registado as seguintes características:- dimensão n = NN - média amostral \\(\bar x = MEDIA\\) Questão 1Apenas com base no gráfico:justifique se pode afirmar que- "A altura de uma acácia longifolia é bem modelada por uma distribuição normal."Note que a sua decisão deverá afetar todas as respostas seguintes, sempre que nada for dito.{:OPENQUESTION:} Questão 2(i) Determine um intervalo a CONFIANCA% de confiança para a média populacional de alturas de acácias longifolia, assinalando todas as etapas do **cálculo manual**, desde a justificação de qual a fórmula do intervalo a usar do formulário passando pelo cálculo do quantil apropriado (com calculadora ou linguagem R).(ii) Qual a interpretação do intervalo obtido?(iii) O que significa dizer CONFIANCA% de confiança?{:OPENQUESTION:} Questão 3Seja [IC_LEFT,IC_RIGHT] um intervalo de confiança a OUTRACONFIANCA% para a média populacional de alturas de acácias *longifolia*.Com base no referido intervalo, efetue o seguinte teste de hipóteses:- H0: \\(\mu = PONTO_DO_IC\\) &nbsp; vs  &nbsp; H1: \\(\mu \neq PONTO_DO_IC\\)considerando: - (i) um valor apropriado para o nível de significância \\(\alpha\\), - (ii) a decisão do teste - (iii) a conclusão **no contexto do problema**.{:OPENQUESTION:} Questão 4A amostra recolhida sugere que a *acácia longifolia* está **mais baixa** do que quando se instalou em Portugal em que tinha Q4_ALTURAPOP m de altura média. Realize um teste de hipóteses paramétrico, ao nível de significância de OUTRONIVEL%, usando o método do valor-p.Na sua reposta deverá assinalar: - (i) as hipóteses em teste, - (ii) a estatística de teste a usar (justifique a escolha), - (iii) o valor p, - (iv) a decisão do teste - (v) a conclusão **no contexto do problema**.{:OPENQUESTION:} Questão 5Há um novo tratamento que dificulta a reprodução da acácia, sendo esta uma espécie invasora. Numa amostra de 100 árvores, após o tratamento, verificou-se que apenas 25 árvores tem a capacidade de se reproduzir largando as suas sementes.Pretende-se realizar o seguinte teste de hipóteses H0: p=0.2 vs H1: p\\(\neq\\) 0.2pelo método da região crítica considerando \\(\alpha=0.01\\).Assim:- a região crítica do lado negativo é ]\\(-\infty\\), {1:NUMERICAL:=ZCRIT:0.01}[- o valor observado da estatística de teste é: {1:NUMERICAL:=ZOBS_PROP:0.01} Questão 6MELHORAR POIS podem determinar n: escrever o enunciado para um n real e colocar tolerância Com base numa outra amostra de média Q6_ALTURA metros (e diferente dimensão), foi obtido um intervalo a 99% de confiança para a altura média (populacional). O limite superior desse intervalo é Q6_LSUP. O limite inferior desse intervalo será necessariamente igual a {:NUMERICAL:=Q6_LINF:0.0} ResoluçãoQuestão 4 (10 pontos)Mais detalhes em:http://sweet.ua.pt/pedrocruz/bioestatistica/ipn-ztest.html(i) As hipóteses em teste são - H0: média populacional=Q4_ALTURAPOP- H1: média populacional < Q4_ALTURAPOP.Pontos: 2 (H0H1 + parâmetro)Erros:- falta especificar o parâmetro que é a média da altura (populacional)- não especifica as hipóteses(ii) a estatística de teste a usarTeste Z porque o desvio padrão populacional é conhecido.Pontos: 2 (estatística + justificação)Erros:- escolha errada da estatística de teste pois o desvio padrão fornecido é populacional (mas justificação está correta)- justificação incorreta(iii) o valor pCorreto: Z Test valor-p = Q4_PVALUE com zobs = Q4_ZOBSVersão errada Z com variância 2^2: - valor-p = Q4_PVALUE_ERRVARVersão errada Z com variância sqrt(2): - valor-p = Q4_PVALUE_ERRRAIZSIGMAVersão errada T com variância 2^2: - valor-p = Q4_PVALUE_T_ERRVARVersão errada T com variância sqrt(2): - valor-p = Q4_PVALUE_T_ERRRAIZSIGMAPontos: 2 (1=valor-p apropriado  +  1=fórmula+tobs do valor-p)Erros:- (anulada) expressão de cálculo do valor-p bilateral errada ou inexistente- (sem desconto) expressão de cálculo do valor-p bilateral errada ou inexistente- usou variância corrigida em vez do desvio padrão corrigido - valor-p desconhecido pelos métodos usuais- [-1 valor] o valor-p deve estar no intervalo [0, 1](iv) a decisão do testenão se rejeita H0Pontos: 1Erros:- razão da não rejeição de H0 errada- não rejeita H0 e devia rejeitar OU rejeita H0 e não devia rejeitar<jupyter_code>def make_random(ekey, NN, MEDIAPOP, DESVIOPOP, CONFIANCA):

    import numpy as np
    from numpy.random import choice,seed
    

    seed(ekey)

    r'''
    # problema
    Seja X = altura de uma *acácia longifolia*.
    Sabe-se que o desvio padrão populacional da v.a. X é \\(\sigma=DESVIOPOP\\).
    Foi recolhida uma amostra de alturas tendo-se registado as seguintes características:
    * dimensão n = NN 
    * média amostral \(\bar x = MEDIA\)
    '''

    from megua.themes import stats as st
    from scipy.stats import norm
    my_normal = norm(loc=MEDIAPOP, scale=DESVIOPOP)
    sample = st.normal_sample(dist=my_normal, size=NN, lower=0.0, upper=100.0, random_state=ekey)
    
    MEDIA = st.mean(sample)
    
    
    r'''
    ## Questão 1
    Apenas com base no gráfico
    QQPLOT
    justifique se a se pode afirmar que
    * "a altura de uma *acácia longifolia* é bem modelada por uma distribuição normal"
    '''

    import statsmodels.api as sm
    import io, base64
    qqplot_fig = sm.qqplot(np.array(sample), line='s') #s is sample
    image = io.BytesIO()
    qqplot_fig.savefig(image, format='png')
    QQPLOT = base64.b64encode(image.getvalue()).decode('utf8')

    #debug
    #global B
    #B = BOXPLOT
    
    
    r'''
    ## Questão 2
    (i) Determine um intervalo a CONFIANCA% de confiança para a média populacional de alturas de acácias longifolia, 
    assinalando todas as etapas do **cálculo manual**, desde a justificação de qual a fórmula do 
    intervalo a usar do formulário passando pelo cálculo do quantil apropriado (com calculadora ou linguagem R)
    (ii) Qual a interpretação do intervalo obtido?
    (iii) O que significa dizer CONFIANCA% de confiança?
    '''

    r'''
    ## Questão 3
    Seja [IC_LEFT,IC_RIGHT] um intervalo de confiança a OUTRACONFIANCA% para a média populacional de alturas de acácias *longifolia*.
    Com base no referido intervalo, efetue o seguinte teste de hipóteses:
    - H0: \\(\mu = PONTO_DO_IC\\) vs  H1: \\(\mu \neq PONTO_DO_IC\\)
    considerando: 
    - (i) um valor apropriado para o nível de significância \\(\alpha\)), 
    - (ii) a decisão do teste 
    - (iii) a conclusão **no contexto do problema**.
    '''
    
    confiancas = [90, 92, 95, 98, 99]
    confiancas.remove(CONFIANCA)
    OUTRACONFIANCA = choice(confiancas)
    
    normalpadrao = norm(loc=0, scale=1)
    
    zcrit = normalpadrao.ppf(1.0 - ((100-OUTRACONFIANCA)/100.0)/2.0)
    IC_LEFT  = round( MEDIA - zcrit * DESVIOPOP / np.sqrt(NN), 3)
    IC_RIGHT = round( MEDIA + zcrit * DESVIOPOP / np.sqrt(NN), 3)
    
    PONTO_DO_IC = float( np.round(np.random.uniform(IC_LEFT,IC_RIGHT,1), 1) )
    
    ##----------
    ## Questão 4
    ##----------

    # escolhas
    confiancas.remove(OUTRACONFIANCA)
    OUTRONIVEL = 100 - choice(confiancas)
    Q4_PVALUE_TEMP = choice([0.001, 0.234])
    Q4_ZOBS_TEMP = normalpadrao.ppf(1 - Q4_PVALUE_TEMP)
    Q4_ALTURAPOP = round( MEDIA - Q4_ZOBS_TEMP*DESVIOPOP / np.sqrt(NN), 1)    
    #print("Q4_ALTURAPOP=",Q4_ALTURAPOP)

    # correto
    Q4_ZOBS = (MEDIA-Q4_ALTURAPOP)/(DESVIOPOP/np.sqrt(NN))
    Q4_PVALUE = normalpadrao.cdf(Q4_ZOBS)
    
    # com erros
    Q4_PVALUE_ERRVAR = normalpadrao.cdf( (MEDIA-Q4_ALTURAPOP)/(DESVIOPOP**2/np.sqrt(NN)) )
    Q4_PVALUE_ERRRAIZSIGMA = normalpadrao.cdf( (MEDIA-Q4_ALTURAPOP)/(np.sqrt(DESVIOPOP)/np.sqrt(NN)) )
    
    # com t student
    from scipy.stats import t
    dt = t(df=NN-1)
    # com erros
    Q4_PVALUE_T_ERRVAR = dt.cdf( (MEDIA-Q4_ALTURAPOP)/(DESVIOPOP**2/np.sqrt(NN)) )
    Q4_PVALUE_T_ERRRAIZSIGMA = dt.cdf( (MEDIA-Q4_ALTURAPOP)/(np.sqrt(DESVIOPOP)/np.sqrt(NN)) )
    
    
    r'''
    ## Questão 5
    Há um novo tratamento que dificulta a reprodução da acácia, sendo esta uma espécie invasora. 
    Numa amostra de 100 árvores, após o tratamento, verificou-se que apenas 25 árvores tem a capacidade de 
    se reproduzir largando as suas sementes.
    
    
    Pretende-se realizar o seguinte teste de hipóteses 

    H0: p=0.2 vs H1: p\\(\neq\\) 0.2

    pelo método da região crítica considerando \\(\alpha=0.01\\).

    Assim:
    
    * a região crítica do lado negatoivo é ] \\(\infty\\), {1:NUMERICAL:=-ZCRIT:0.01} [;
    * o valor observado da estatística de teste é: {1:NUMERICAL:=ZOBS_PROP:0.01}
    
    à rejeição de H0 no teste é: {1:NUMERICAL:=PVALPROP:0.05}
    
    '''
    
    PX = 25
    PNN = 100
    hatp = 1.0 * PX / PNN
    p = 0.2
    ZOBS_PROP = (hatp - 0.2) / np.sqrt( p*(1-p)/PNN )
    ZCRIT = normalpadrao.ppf( 0.01 / 2.0 )
    #PVALPROP = 2*(1.0 - normalpadrao.cdf(ZOBS_PROP))

    
    r'''
    ## Questão 6
    Com base numa outra amostra de média ALTURA (=sample(17:20,1) ) metros, 
    foi obtido um intervalo a 99% de confiança para a altura média (populacional). 
    
    O limite superior desse LSUP (=sample(ALTURA+1.7:ALTURA+3.3,1) ). 
    O limite inferior desse intervalo será necessariamente igual a
    {:NUMERICAL:=:0.0}
    '''
    
    Q6_ALTURA = choice( range(17, 20+1) )
    Q6_LSUP   = choice( np.arange(Q6_ALTURA+1, 33, 1, dtype=float) )
    Q6_LINF   = Q6_LSUP - 2* (Q6_LSUP - Q6_ALTURA) # = 2 ALTURA - LSUP
    
    return locals()


from megua import meguar

#from itertools import product

meguar(r'c3-teste04-60min',
       make_random,
       inputs=[(0, 10,10, 2, 95, )]   #inputs=[(0, 10,10, 2, 95, )]   # original teste04 inputs=[(0, 10,10, 2, 95, )]  
)       
       


    
!pip install matplotlib
import matplotlib
x = [1,2,3,4]
x.remove(3)
x
import numpy
numpy.arange(1.7, 3.3, 0.1, dtype=float) # -> numpy.ndarray<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10196454240536655, 'fraction_numerical': 0.02750359367513177, 'mean_word_length': 3.484744305973356, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '29559', 'license': 'MIT', 'n_tokens_mistral': 4226, 'n_tokens_neox': 3997, 'n_words': 1212, 'path': '.ipynb_checkpoints/c5c6-turmas1-checkpoint.ipynb', 'repo_name': 'jpcaveiro/bream', 'size': '10439'}