L ic%bddlZddlmZddlZddlmZddlmZdZ eGddZ d Z y) N) dataclass)ndtri)ConfidenceIntervalc|d|d|} tj|}||kr t||S#t$r t|dwxYw)Nz" must be an integer not less than z , but got )operatorindex TypeError ValueError)nboundnamemsgs `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/stats/_relative_risk.py _validate_intrsa F4UG:aU KC' NN1  5yo H 'n$&'s 3A cLeZdZUdZeed<eed<eed<eed<eed<d dZy) RelativeRiskResulta Result of `scipy.stats.contingency.relative_risk`. Attributes ---------- relative_risk : float This is:: (exposed_cases/exposed_total) / (control_cases/control_total) exposed_cases : int The number of "cases" (i.e. occurrence of disease or other event of interest) among the sample of "exposed" individuals. exposed_total : int The total number of "exposed" individuals in the sample. control_cases : int The number of "cases" among the sample of "control" or non-exposed individuals. control_total : int The total number of "control" individuals in the sample. Methods ------- confidence_interval : Compute the confidence interval for the relative risk estimate. relative_risk exposed_cases exposed_total control_cases control_totalcd|cxkrdkstdtd|jdk(r8|jdk(r)ttj tj S|jdk(rtdtj S|jdk(r)ttj tj Sd|z }td|dz z }|j}t jd|jz d|jz z d|jz zd|jz z }||z}|t j| z}|t j|z}t||S)aL Compute the confidence interval for the relative risk. The confidence interval is computed using the Katz method (i.e. "Method C" of [1]_; see also [2]_, section 3.1.2). Parameters ---------- confidence_level : float, optional The confidence level to use for the confidence interval. Default is 0.95. Returns ------- ci : ConfidenceInterval instance The return value is an object with attributes ``low`` and ``high`` that hold the confidence interval. References ---------- .. [1] D. Katz, J. Baptista, S. P. Azen and M. C. Pike, "Obtaining confidence intervals for the risk ratio in cohort studies", Biometrics, 34, 469-474 (1978). .. [2] Hardeo Sahai and Anwer Khurshid, Statistics in Epidemiology, CRC Press LLC, Boca Raton, FL, USA (1996). Examples -------- >>> from scipy.stats.contingency import relative_risk >>> result = relative_risk(exposed_cases=10, exposed_total=75, ... control_cases=12, control_total=225) >>> result.relative_risk 2.5 >>> result.confidence_interval() ConfidenceInterval(low=1.1261564003469628, high=5.549850800541033) rrz0confidence_level must be in the interval [0, 1].)lowhigh) r rrrnpnaninfrrsqrtrrexp) selfconfidence_levelalphazrrsedeltakatz_lokatz_his rconfidence_intervalz&RelativeRiskResult.confidence_interval6siL$))'( (*'( (    "t'9'9Q'>%"&&rvv> >   1 $%#BFF; ;   1 $%"&&rvv> >$$ !eAg+     WWQt)))Ad.@.@,@@t)))*,-d.@.@,@AB"RVVUF^#RVVE]"!gG<<N)gffffff?)__name__ __module__ __qualname____doc__float__annotations__intr,r-rrrs-6D=r-rcZt|dd}t|dd}t|dd}t|dd}||kDr td||kDr td|dk(r|dk(rtj}n-|dk(rd }n%|dk(rtj}n||z }||z }||z }t ||||| S) a~ Compute the relative risk (also known as the risk ratio). This function computes the relative risk associated with a 2x2 contingency table ([1]_, section 2.2.3; [2]_, section 3.1.2). Instead of accepting a table as an argument, the individual numbers that are used to compute the relative risk are given as separate parameters. This is to avoid the ambiguity of which row or column of the contingency table corresponds to the "exposed" cases and which corresponds to the "control" cases. Unlike, say, the odds ratio, the relative risk is not invariant under an interchange of the rows or columns. Parameters ---------- exposed_cases : nonnegative int The number of "cases" (i.e. occurrence of disease or other event of interest) among the sample of "exposed" individuals. exposed_total : positive int The total number of "exposed" individuals in the sample. control_cases : nonnegative int The number of "cases" among the sample of "control" or non-exposed individuals. control_total : positive int The total number of "control" individuals in the sample. Returns ------- result : instance of `~scipy.stats._result_classes.RelativeRiskResult` The object has the float attribute ``relative_risk``, which is:: rr = (exposed_cases/exposed_total) / (control_cases/control_total) The object also has the method ``confidence_interval`` to compute the confidence interval of the relative risk for a given confidence level. See Also -------- odds_ratio Notes ----- The R package epitools has the function `riskratio`, which accepts a table with the following layout:: disease=0 disease=1 exposed=0 (ref) n00 n01 exposed=1 n10 n11 With a 2x2 table in the above format, the estimate of the CI is computed by `riskratio` when the argument method="wald" is given, or with the function `riskratio.wald`. For example, in a test of the incidence of lung cancer among a sample of smokers and nonsmokers, the "exposed" category would correspond to "is a smoker" and the "disease" category would correspond to "has or had lung cancer". To pass the same data to ``relative_risk``, use:: relative_risk(n11, n10 + n11, n01, n00 + n01) .. versionadded:: 1.7.0 References ---------- .. [1] Alan Agresti, An Introduction to Categorical Data Analysis (second edition), Wiley, Hoboken, NJ, USA (2007). .. [2] Hardeo Sahai and Anwer Khurshid, Statistics in Epidemiology, CRC Press LLC, Boca Raton, FL, USA (1996). Examples -------- >>> from scipy.stats.contingency import relative_risk This example is from Example 3.1 of [2]_. The results of a heart disease study are summarized in the following table:: High CAT Low CAT Total -------- ------- ----- CHD 27 44 71 No CHD 95 443 538 Total 122 487 609 CHD is coronary heart disease, and CAT refers to the level of circulating catecholamine. CAT is the "exposure" variable, and high CAT is the "exposed" category. So the data from the table to be passed to ``relative_risk`` is:: exposed_cases = 27 exposed_total = 122 control_cases = 44 control_total = 487 >>> result = relative_risk(27, 122, 44, 487) >>> result.relative_risk 2.4495156482861398 Find the confidence interval for the relative risk. >>> result.confidence_interval(confidence_level=0.95) ConfidenceInterval(low=1.5836990926700116, high=3.7886786315466354) The interval does not contain 1, so the data supports the statement that high CAT is associated with greater risk of CHD. rrrrrrz,exposed_cases must not exceed exposed_total.z,control_cases must not exceed control_total.r)rrrrr)rr rrr r)rrrrr'p1p2s rrr}s^"-ODM!-ODM!-ODM!-ODM}$GHH}$GHHmq0 VV !   !  VV ] * ] * "W B,9,9,9,9  ;;r-) r dataclassesrnumpyr scipy.specialr_commonrrrrr5r-rr=s<!'  f=f= f=RJ;r-