آزمون خی دو،آزمون فیشر و جدول توافقی در R

1402/06/14

دسترسی سریع


به نام خدا نام دانشجو: ندا لک نام استاد: آقای خاورزاده تمرین:آزمون خی دو ،آزمون فیشر و جدول توافقی در R 1-1)آزمون استقلال خی دو این آزمون متداولترین آزمون برای بررسی استقلال دو متغیر رده بندی شده است.برای اجرای این آزمون ازتابع ( ) chisq.test که به فرم کلی زیر است،استفاده می کنیم:

Chisq.test(x,y=NULL,correct=TRUE,p=(1/length(x)),simulate.p.value=FALSE,B)

که در آن شناسه x یک بردار یا یک ماتریس است.شناسه یy یک بردار است که اگر x ماتریس باشد نیازی به این شناسه نیست. correct شناسه ی منطقی است که تعیین می کند از تصحیح پیوستگی یتز برای جدول2×2استفاده شود، اگر مقدار شناسه ی " simulate.p.value ="T،  باشد این تصحیح استفاده نمی شود. p یک بردار شامل احتمال هایی با همان طول xاست. شناسه ی simulate.p.value شناسه ی منطقی است که تعیین می کند به وسیله ی شبیه سازی مونت کارلوp- مقدار مقدار محاسبه شود شناسه ی B تعدادتکرارها را در آزمون مونت کارلو نشان می دهد. برای انجام آزمون خی دو در بررسی نسبت های مشاهده شده و مورد انتظار همانندجداول توافقی در R از تابع () chisq.test  استفاده می شود. برای آشنایی با نحوه استفاده از این تابع چند مثال را مورد بررسی قرار می دهیم: 1)فرض کنیم تاسی را 300 بار پرتاب می کنیم و نتایج زیر حاصل می شود حال بررسی می کنبم که آیا این تاس نا اریب است؟
 6  5  4  3  2  1 وجه تاس
 41  66  45 56  49  43  فراوانی

> counts<-c(43,49,56,45,66,41)

> props<-rep(1/6,6)

> chisq.test(counts,p=props) 

 

        Chi-squared test for given probabilities

 

data:  counts

X-squared = 8.96, df = 5, p-value = 0.1107

 

همان گونه که مشاهده می شود مقدار خی دو برابر با96.8 شده است که دارای درجه آزادی پنج می باشد و چونp-مقدار بیشتر از 05. 0است(0.1107) لذا در سطح معنی داری0.05 فرض نااریب بودن تاس رد نمی شود.در نتیجه تاس سالم است.

2)آزمایشی صورت گرفته تا نحوه توارث خار دار بودن برگ در گلرنگ تعیین شود .از 121 بوته نسل F2 حاصل از تلاقی خاردار×بی خار،94 بوته خاردار و 27 بوته بی خار شده اند.قصد داریم تا فرض توارث مندل برای یک ژن غالب(نسبت مورد انتظار1:3در F2 به نسبت های0.75به0.25تعدیل یافته است) را مورد آزمون قرار می دهیم.(نکته :در برهانpمجموع نسبت های مورد انتظار باید برابر یک باشد)

> observed<-c(94,27)

> expected<-c(0.75,0.25)

> chisq.test(observed,p=expected)

        Chi-squared test for given probabilities

data:  observed

X-squared = 0.4656, df = 1, p-value = 0.495

همان گونه که مشاهده می شود فرض صفر مبنی بر تفکیک با نسبت 3به1 رد نمی شود(0.495=∝) ومقدارخی دو برابر 0.4656و با درجه آزادی یک است.(چون مقدار  p-value از 0.05 بیشتر است) نتیجه گیری می شود که احتمالاً یک ژن غالب خارداری برگ(در مقابل بی خاری)را در گلرنگ کنترل می نماید.   مثال سوم ،مثالی برای آزمون خی دو تصحیح یافته است: 3)جدول زیر داده های مربوط به تحقیق در مورد سرطان روده است . در این جدول گروه کنترل شامل افرادی است که مبتلا به سرطان نیستند .هدف از این آزمایش بررسی استقلال بین وضعیت ابتلا به سرطان و سیگاری بودن فرد است.
  بیمار کنترل
سیگاری 688 650
غیر سیگاری 21 59
کل 709 709
در مواردی که داده ها شمارشی هستند(معمولاٌ در مواردی که درجه آزادی آزمون برابر یک باشد) از تصحیح پیوستگی (yates) استفاده می شود. در این مثال از آزمون خی دو با تصحیح یتز و از برهان  correct=TRUEدر تابع ()chisq.test استفاده می شود. با توجه اینکه داده ها شمارشی هستند و درجه آزادی برابر یک است با استفاده از تصحیح پیوستگی داده ها را به صورت زیر درR  تعریف می شود: ابتدا با استفاده از تابع() matrix داده ها به صورت یک ماتریس در آبجکت  cigarette وارد می شوند می توان دستور() rbind هم را  برای این منظور استفاده کرد.  

> cigarette<-matrix(c(650,59,688,21),nrow=2)

> cigarette

     [,1] [,2]

[1,]  650  688

[2,]   59   21

> chisq.test( cigarette,correct=TRUE)

        Pearson's Chi-squared test with Yates' continuity correction

data:  cigarette

X-squared = 18.1357, df = 1, p-value = 2.057e-05

همان گونه که مشاهده می شود مقدار خی دو 18.1357با درجه آزادی یک می باشد، p-مقدار از 0.05کمتر است برابر 2.057e-05است به عبارتی فرض صفر مبنی بر استقلال افراد سیگاری با  افراد سالم رد می شود و نقش معنی داری سیگاری بودن بر روی سلامتی یا همان ابتلا به سرطان داشته است .دستور() rbind نیز همان نتایج را می دهد:

> cigarette<-rbind(c(650,688),c(59,21))

> cigarette

     [,1] [,2]

[1,]  650  688

[2,]   59   21

1-2)آزمون فیشر آزمون فیشر زمانی استفاده می شود که داده ها به اندازه کافی بزرگ باشند(اگر فراوانی مورد انتظار در خانه های جدول کمتر از پنج باشد از آزمون خی دو استفاده می شود در غیر این صورت از آزمون فیشر استفاده می کنیم)تابع این آزمون ()fisher.test با فرم کلی زیر است:

Fisher.test(x,y=NULL,alternative=c(“two.sided”,”less”,”greater”),conf.level=0.95,simulative.p.value=FALSE,B=2000)

که در آن شناسه ها با شناسه های تابع ()chisq.test   یکی است.این آزمون به آزمون برابری واریانس ها نیز معروف است. مثال1):آزمون فیشر یک طرفه ("alternative = "greater)

> ## Agresti (1990, p. 61f; 2002, p. 91) Fisher's Tea Drinker

> ## A British woman claimed to be able to distinguish whether milk or

> ##  tea was added to the cup first.  To test, she was given 8 cups of

> ##  tea, in four of which milk was added first.  The null hypothesis

> ##  is that there is no association between the true order of pouring

> ##  and the woman's guess, the alternative that there is a positive

> ##  association (that the odds ratio is greater than 1).

> TeaTasting <-

+ matrix(c(3, 1, 1, 3),

+        nrow = 2,

+        dimnames = list(Guess = c("Milk", "Tea"),

+                        Truth = c("Milk", "Tea")))

> fisher.test(TeaTasting, alternative = "greater")

        Fisher's Exact Test for Count Data

data:  TeaTasting

p-value = 0.2429

alternative hypothesis: true odds ratio is greater than 1

95 percent confidence interval:

 0.3135693       Inf

sample estimates:

odds ratio

می خواهیم تاثیر نوشیدن چای بر سلامتی خانمها بیشتر از شیر است یا خیر را آزمون کنیم.بعد از وارد کردن داده ها در R با کمک دستور :

fisher.test(TeaTasting, alternative = "greater")

آزمون را انجام داده ، نتایج زیر بدست می آید:   p- value = 0.2429مقدار از  0.05 بیشتر است در نتیجه فرض صفر رد نمی شود یعنی نسبت واریانسها ی بیشتر از یک است پذیرفته می شود  و پراکندگی نوشیدن چای از شیر بیشتر است.odd ratioیعنی همان نابرابری واریانسهاست. مثال2):آزمون فیشر یک طرفه ("alternative = "less)

> ## => p = 0.2429, association could not be established

> ## Fisher (1962, 1970), Criminal convictions of like-sex twins

> Convictions <-

+ matrix(c(2, 10, 15, 3),

+        nrow = 2,

+        dimnames =

+        list(c("Dizygotic", "Monozygotic"),

+             c("Convicted", "Not convicted")))

> Convictions

            Convicted Not convicted

Dizygotic           2            15

Monozygotic        10             3

> fisher.test(Convictions, alternative = "less")

        Fisher's Exact Test for Count Data

data:  Convictions

p-value = 0.0004652

alternative hypothesis: true odds ratio is less than 1

95 percent confidence interval:

 0.0000000 0.2849601

sample estimates:

odds ratio

0.04693661

در این آزمون فرض صفر یعنی نسبتهای واریانسهای دو جامعه از یک کمتر است.چون مقدار p-valueبرابر0.0004652است از 0.05کمتر است فرض صفر رد می شود و نتیجه گیری می شود که نسبت واریانسها از یک کمتر نیست (آزمون مجرم و بی گناه در برابر جرم)آزمون در سطح  معنا داری0.05 معنی دار است. با فاصله اطمینان95درصد در بازه ی(0.2849601و0)قرار گرفته است. مثال3):آزمون فیشر دوطرفه (two sided)

> fisher.test(Convictions, conf.int = FALSE)

        Fisher's Exact Test for Count Data

data:  Convictions

p-value = 0.0005367

alternative hypothesis: true odds ratio is not equal to 1

sample estimates:

odds ratio

0.04693661

> fisher.test(Convictions, conf.level = 0.95)$conf.int

[1] 0.003325764 0.363182271

attr(,"conf.level")

[1] 0.95

> fisher.test(Convictions, conf.level = 0.99)$conf.int

[1] 0.001386333 0.578851645

attr(,"conf.level")

[1] 0.99

در آزمون دو طرفه فرض صفر برابری واریانسهاست(نسبت واریانسها برابر یک).چون p valueاز 0.05کمتر است(مقدار آن برابر 0.0005367است) فرض صفر رد می شود بعنی واریانسها با هم مساوی نیستند.آزمون را با سطح اطمینان 99درصد نیز آزمایش کردیم.   در آناليز واريانس وجود تفاوت معني دار بين گروه ها بوسيله ي آزمون F(آزمون فیشر) انجام مي گيرد.تجزیه واریانس داده های طرح آزمایشی معمولاٌ با استفاده از تابعaov() و برهان هایش صورت می گیرد با استفاده از این تابع کاربر قادر خواهد بود تا جدول تجزیه واریانس انواع طرح آزمایشی ساده و فاکتوریل همراه با آزمون های مناسب را به راحتی به دست آورد .شکل کلی استفاده از این تابع به صورت زیر می باشد:

aov(formula, data = NULL, projections = FALSE, qr = TRUE,   contrasts = NULL, ...)

aov(متغیر مورد ارزیابی~منابع تغییر در جدول واریانس به استثنای خطا)

اگر مدل شامل خطا باشد از تابع ()Error به عنوان برهان تابع()aov همانند زیر استفاده نماییم:

aov(متغیر مورد ارزیابی~منابع تغییر در جدول واریانس+Error(منابع تغییر خطا))

 

N <- c(0,1,0,1,1,1,0,0,0,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0)

P <- c(1,1,0,0,0,1,0,1,1,1,0,0,0,1,0,1,1,0,0,1,0,1,1,0)

K <- c(1,0,0,1,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,1,0,1,0)

yield <- c(49.5,62.8,46.8,57.0,59.8,58.5,55.5,56.0,62.8,55.8,69.5,

55.0, 62.0,48.8,45.5,44.2,52.0,51.5,49.8,48.8,57.2,59.0,53.2,56.0)

npk <- data.frame(block = gl(6,4), N = factor(N), P = factor(P),

                  K = factor(K), yield = yield)

npk.aov <- aov(yield ~ block + N*P*K, npk)

proj(npk.aov)

## as a test, not particularly sensible

options(contrasts = c("contr.helmert", "contr.treatment"))

npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)

proj(npk.aovE)

جدول1

جدول1را در نرم افزار R کپی کنید وسپس دستور زیر را اجرا کرده:

 npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)

در محیط  Rبا اجرای دستور بالا به نتایج زیر دست پیدا می کنیم: مدل:طرح بلوکی بدون خطا  

## Set orthogonal contrasts.

> op <- options(contrasts = c("contr.helmert", "contr.poly"))

> ( npk.aov <- aov(yield ~ block + N*P*K, npk) )

Call:

   aov(formula = yield ~ block + N * P * K, data = npk)

Terms:مجموع مربعات

                   block        N        P        K      N:P      N:K      P:K

Sum of Squares  343.2950 189.2817   8.4017  95.2017  21.2817  33.1350   0.4817

Deg. of Freedom        5        1        1        1        1        1        1

                Residuals

Sum of Squares   185.2867

Deg. of Freedom        12

Residual standard error: 3.929447

1 out of 13 effects not estimable

Estimated effects are balanced

> summary(npk.aov)

            Df   Sum   Sq Mean    Sq  F value      Pr (>F)  

block        5     343.3     68.66           4.447        0.01594 *

N            1        189.3       189.28       12.259     0.00437 **

P            1         8.4           8.40          0.544     0.47490  

K            1         95.2        95.20        6.166        0.02880 *

N:P          1        21.3        21.28        1.378      0.26317  

N:K          1       33.1       33.14      2.146         0.16865  

P:K          1        0.5         0.48       0.031          0.86275  

Residuals   12  185.3   15.44                  

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

> coefficients(npk.aov)

(Intercept)      block1      block2      block3      block4      block5

 54.8750000   1.7125000   1.6791667  -1.8229167  -1.0137500   0.2950000

         N1          P1          K1       N1:P1       N1:K1       P1:K1

  2.8083333  -0.5916667  -1.9916667  -0.9416667  -1.1750000   0.1416667

مدل در سطح 0.01و0.001در بلوک و NوK معنی دار است ومدل خوبی است.تاثیر معنی داری بر خصوصیات مدل دارد. مشاهده ضرایب مدل با coefficients(npk.aov) امکان پذیر می باشد. برای مشاهده ی مقادیر مانده ها به Residuals توجه کنید. نکته:در Rاز علامت (:)برای تعریف اثرات متقابل استفاده می شود. آزمون آنالیز واریانس یکطرفهOne-Way ANOVA کاربرد: مقایسه میانگین یک متغیر کمی وابسته در سه گروه مستقل یا بیشتر فرض صفر: میانگین متغیر مربوطه در همه گروهها یکسان است.

 Aov(y~A,data=my datafrome)

Aov(y~A+B,data=my datafrome)

Aتیمار،Bبلوک است و yمتغیر مورد ارزیابی است. مثال1:

> ## Not assuming equal variances

> oneway.test(extra ~ group, data = sleep)

        One-way analysis of means (not assuming equal variances)

data:  extra and group

F = 3.4626, num df = 1.000, denom df = 17.776, p-value = 0.07939

آزمون یک طرفه ی ANOVA است با فرض نا برابری واریانسها، مقدار pvalue=.07939است از 0.05بیشتر است در نتیجه فرض صفر پذیرفته می شود یعنی میانگین های گروههای مختلف با هم تفاوت معنی دار ندارند و با هم مساوی هستند.(مقدار F=3.4626است)یعنی  خواب اضافی بر گروه ها بی تاثیر است.
مثال2)

## Assuming equal variances

> oneway.test(extra ~ group, data = sleep, var.equal = TRUE)

        One-way analysis of means

data:  extra and group

F = 3.4626, num df = 1, denom df = 18, p-value = 0.07919

آزمون یک طرفه ی ANOVA است با فرض  برابری واریانسها با درجه آزادی 1وبا مقدار pvalue=0.07919 فرض صفر رد نمی شود چون از 0.05بزرگتر است و در نتیجه میانگین ها با هم تفاوت معنا دار ندارند. با دستور() ANOVA می توان جدول آنالیز واریانس را برای مثال بالا دید. در این جدول درجه آزادی ،مجموع و میانگین مربعات و مقدارFومقدار سطح معنی داری و مقدار باقی مانده ها   ( Residuals) را مشاهده کرد.

## which gives the same result as

> anova(lm(extra ~ group, data = sleep))

Analysis of Variance Table

جدول آنالیز واریانس

Response: extra

          Df  Sum  Sq Mean    Sq F value     Pr(>F) 

group      1    12.482  12.4820  3.4626    0.07919 .

Residuals 18 64.886  3.6048                 

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

درجه آزادی برابر یک است.  مجموع میانگین مربعات برابر12.482ومقدار Fبرابر3.4626 می باشد .مقدار =.07919  pvalue می باشدکه از 0.05 بیشتر است در نتیجه فرض صفر پذیرفته می شود یعنی میانگین ها با هم برابراند و هیچ یک تاثیر معنی داری روی خصوصیات مدل ندارد.مقادیر باقی مانده ها نیز برابر18640886و3.6048 می باشد. مثال 2)طرح بلوکی: با دستورsummaryخلاصه ای از جدول آنالیز واریانس را می توان مشاهده کرد.

 > require(graphics)

> summary(fm1 <- aov(breaks ~ wool + tension, data = warpbreaks))

            Df Sum Sq Mean Sq F value  Pr(>F)  

wool         1    451   450.7   3.339      0.07361 .

tension      2   2034  1017.1   7.537 0.00138 **

Residuals   50   6748   135.0                  

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 

داده ها، انحراف تار و پود را نشان می دهد می خواهیم  تاثیر پشمی بودن تار و پود و میزان کشش آنها را در انحراف تار و پود آزمون کنیم با توجه به مقدار pvalue=0.00138 کشش در تار و پود درسطح 0.05معنا دار است و فرض صفر را رد می کنیم یعنی میانگینها با هم تفاوت معنا داری دارند و کشش بر انحراف تار و پود تاثیر گذار است. آزمون آنالیز واریانس دوطرفه (Two-Way ANOVA) کاربرد: مقایسه میانگین یک متغیر کمی وابسته در طبقات دو متغیر کیفی فرض صفر: میانگین متغیر مربوطه در همه گروهها یکسان است.

Aov(y~A+B+A:B,mydata frome)

Aov(y~Error(block)+A*B*C,mydata frome)

Aov(y~block+A*B+C,mydata frome)

مثال: در مثال های قبل NوPوKوyield را تعریف کردیم،با دستور aov و طبق فرمول آنالیز واریانس دو طرفه برای مشاهده ی تحلیل میانگین تیمارها در مقایسه با میانگین کل و بلوک ها استفاده می شود.  

> ## to show the effects of re-ordering terms contrast the two fits

> aov(yield ~ block + N * P + K, npk)

Call:

   aov(formula = yield ~ block + N * P + K, data = npk)

 در اینجا yield متغیر مورد ارزیابی وblockهمان خطاهاست.  

Terms:

                   block        N        P        K      N:P Residuals

Sum of Squares  343.2950 189.2817   8.4017  95.2017  21.2817  218.9033        :مجموع مربعات را نشان می دهد

Deg. of Freedom        5        1        1        1        1        14                               : درجات آزادی تیمار و بلوک و خطا و اثر متقابل را نشان می دهد

Residual standard error: 3.954232                                                                    :باقی مانده خطا را نشان می دهد

Estimated effects are balanced

> aov(terms(yield ~ block + N * P + K, keep.order = TRUE), npk)

Call:

   aov(formula = terms(yield ~ block + N * P + K, keep.order = TRUE),

    data = npk)

Terms:

                   block        N        P      N:P        K Residuals

Sum of Squares  343.2950 189.2817   8.4017  21.2817  95.2017  218.9033

Deg. of Freedom        5        1        1        1        1        14

Residual standard error: 3.954232

Estimated effects are balanced

>

>

> ## as a test, not particularly sensible statistically

> npk.aovE <- aov(yield ~  N*P*K + Error(block), npk)

> npk.aovE

Call:

aov(formula = yield ~ N * P * K + Error(block), data = npk)

Grand Mean: 54.875

Stratum 1: block

Terms:

                    N:P:K Residuals

Sum of Squares   37.00167 306.29333                  مجموع مربعات اثرهای متقابل و خطا

Deg. of Freedom         1         4

Residual standard error: 8.750619                           :باقی مانده استاندارد خطا

Estimated effects are balanced

Stratum 2: Within

Terms:

                        N         P         K       N:P       N:K       P:K

Sum of Squares  189.28167   8.40167  95.20167  21.28167  33.13500   0.48167

Deg. of Freedom         1         1         1         1         1         1

                Residuals

Sum of Squares  185.28667

Deg. of Freedom        12

Residual standard error: 3.929447

Estimated effects are balanced

> summary(npk.aovE)جدول تحلیل واریانس

Error: block

          Df Sum Sq Mean Sq F value Pr(>F)

N:P:K      1   37.0   37.00   0.483  0.525   : 0.525 برابر با pبا درجه آزادی یک و مجموع مربعات 37ومقدار F=0.483

Residuals  4  306.3   76.57              :درجه آزادی خطا4است و مجموع مربعات306.3ومیانگین مربعات76.57

 

Error: Within

          Df Sum Sq Mean Sq F value  Pr(>F)  

N          1 189.28  189.28  12.259 0.00437 **

P          1   8.40    8.40   0.544 0.47490  

K          1  95.20   95.20   6.166 0.02880 *

N:P        1  21.28   21.28   1.378 0.26317  

N:K        1  33.14   33.14   2.146 0.16865  

P:K        1   0.48    0.48   0.031 0.86275  

Residuals 12 185.29   15.44                  

---

Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

 > options(op)  # reset to previous

1-3)جدول توافقی جدول توافقی برای نشان دادن توزیع فراوانی همزمان دو یا چند متغیر طبقه ای به کار برده می شود .در جدول توافقی  دستور () chisq.test (آزمون خی دو) به کار گرفته می شود. جدول توافقی مبنای بررسی متغیرهای اسمی است .در مثال زیر از جدول توافقی استفاده شده است:  در منطقه ای دو رودخانه متفاوت وجود دارد (river1وriver2). برای مقایسه فراوانی4گونه ماهی (A,B,C,D)در هر یک از دو رودخانه با رعایت اصول نمونه برداری،ماهی صید شده است . جدول زیر تعداد ماهی را در هر یک از چهار گونه در این دو رودخانه نشان می دهد.آیا با توجه به آمار موجود می توان استنباط نمود که نوع ماهی در این دو رودخانه متفاوت است یا خیر؟
D C B A رودخانه
73 49 68 10 1
70 80 85 15 2
با توجه به اینکه در این گونه مطالعات تعدادداده ها نسبتاٌزیادتر است ابتدا داده ها در نرم افزار excel به صورت یک فایل متنی با پسوندtxt در آدرس :   ("C:\\Users\\neda\\Desktop\\fish.txt") ذخیره و در محیط  R با تابع  ()read.tableبه جای loud خوانده می شود.و در آخر chisq.test(fish)  در R اجرا کرده  وداده ها را تحلیل می کنیم.

> fish<-read.table("C:\\Users\\neda\\Desktop\\fish.txt",header=T)

> fish

  river1 river2

A    10     15

B     68     85

D    49     80

D     73     70

> chisq.test(fish)

      Pearson's Chi-squared test

data:  fish

X-squared = 4.9065, df = 3, p-value = 0.1788

نکته:برهان header=T به تابع می گویدتا اولین سطر داده ها را به عنوان نام متغیرها بپذیرد. مقدار خی دو محاسبه شده برابر با  4.9065 با درجه آزادی 3 است که معنی دار نمی باشد.و چون مقدار p-value =0.1788است و از 0.05بیشتر است بنابراین فرض صفر (برابر بودن فراوانی چهار گونه ماهی در دو رودخانه)رد نمی شود و از نظر آماری انواع ماهی ها در این دو رودخانه یکسان می باشد. پایان

نظرات

هیچ نظری وجود ندارد.


افزودن نظر

Sitemap
Copyright © 2017 - 2023 Khavarzadeh®. All rights reserved