تمرین R (طرح آزمایش ها)

1402/06/14

دسترسی سریع


تمرین درس R نام دانشجوها : منیر اسدی – زینب لاغری نام استاد : اقای رامین خاورزاده طرح آزمایش ها طرح آزمایش  تک عاملی در این نوع آزمایش ها متغیر اندازه گیری شده پاسخ واحد های آزمایشی به سطوح مختلف یک عامل است . هدف از انجام این گونه آزمایش ها تشخیص اثر سطوح مختلف یک عامل روی متغیر پاسخ است . وارد کردن داده ها برای داده هایی زیر که مربوط به اثر چهار نوع کاتالیزور بر غلظت یک جز از سه جز مواد ترکیب دهنده ی یک مایع است ، بررسی می کنیم که آیا چهار کاتالیزور اثر یکسانی دارند .

کاتالیزور

D

C

B

A

52.9

52.0

55.3

55.2

51.0

54.2

54.5

56.3

52.1

55.4

56.0

55.0

51.7

55.3

55.8

54.0

ابتدا داده ها را به صورت زیر در R وارد کنید :

()kata<-scan<

1: 55.2 56.3 55.0 55.8 54.0

6: 55.3 54.5 56.0 55.3

10: 52.0 54.2 55.4

13: 52.9 51.0 52.1 51.7

17:

Read 16 items

حال برای تفکیک این بردار به چهار ستون ابتدا بردار کاراکتری زیر را بسازید :

(( dens<-rep(LETTERS[1:4],c(5,4,3,4<

سپس ب استفاده از تابع  factor() ، بردار dens را به یک ساختار عاملی تبدیل کنید :

( dens<-factor(dens<

اکنون می توان یک چارچوب اطلاعاتی از بردارهای kata و dens به صورت زیر ساخت :

( kata.dens<-data.frame(dens,kata<

 kata.dens<

   dens kata

1     A 55.2

2     A 56.3

3     A 55.0

4     A 55.8

5     A 54.0

6     B 55.3

7     B 54.5

8     B 56.0

9     B 55.3

10    C 52.0

11    C 54.2

12    C 55.4

13    D 52.9

14    D 51.0

15    D 52.1

16    D 51.7

بررسی داده ها با استفاده از تابع plot.design()  می توان نمودار هایی برای متغیر پاسخ در هر یک از سطوح عامل رسم کرد:

(( par(mfrow=c(1,2<

( plot.design(kata.dens<

( plot.design(kata.dens,fun=median<

Untitled

میانگین ها و میانه های تیمار

در شکل در نمودار سمت چپی (راست) ، علامت های روی خط عمودی نمایانگر میانگین های (میانه ای ) سطوح مختلف تیمار و خط افقی ، میانگین (میانه) کل داده ها است . در این مثال چون بین میانه و میانگین داده ها اختلاف زیادی نیست ، نقطه دور افتاده وجود ندارد . با استفاده از تابع plot()  می توان نمودارهای جعبه ای متغیر پاسخ را در هر سطح از عامل رسم کرد .

( plot(kata.dens<

qwefa

نمودارهای جعبه ای برای هر تیمار

تحلیل آماری طرح : تابع aov() محاسبات تحلیل واریانس را برای این طرح انجام می دهد :

(aov.kata<-aov(kata~dens,data=kata.dens<

 aov.kata<

:Call

  ( aov(formula = kata ~ dens, data = kata.dens

:Terms

                    dens Residuals

Sum of Squares  31.26071  11.99367

Deg. of Freedom        3        12

Residual standard error: 0.9997361

Estimated effects may be unbalanced

برای نمایش جدول تحلیل واریانس (ANOVA) از تابع summary() استفاده می کنیم :

( summary(aov.kata<

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

**dens         3  31.26  10.420   10.43 0.00116 

Residuals   12  11.99   0.999                  

---

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

مقادیر برازش داده شده و باقیمانده ها را می توان به ترتیب با به کارگیری توابع fitted.values() (یا مخفف آن fitted) و residual() (یا مخفف آن resid) روی تابع aov() به دست آورد ، مثلا برای مقادیر برازش شده داریم :

( fitted.values(aov.kata<

       1        2        3        4        5        6        7        8

55.26000 55.26000 55.26000 55.26000 55.26000 55.27500 55.27500 55.27500

       9       10       11       12       13       14       15       16

55.27500 53.86667 53.86667 53.86667 51.92500 51.92500 51.92500 51.92500

برای بررسی توزیع باقیمانده ها ، از بافت نگار و نمودار احتمال نرمال برای تابع residuals() استفاده می کنیم:

((hist(resid(aov.kata

((qqnorm(resid(aov.kata<

شکل بافت نگار و خطی بودن نمودار احتمال نرمال بودن باقیمانده ها و عدم وجود نقاط دور افتاده است . برای بررسی برابری واریانس های باقیمانده ها ( که یکی از فروض اساسی در مدل تحلیل واریانس یک طرفه است) نمودار باقیمانده ها را در مقابل مقادبر برازش شده ی  رسم می کنیم :

(( plot(fitted(aov.kata),resid(aov.kata<

با توجه به شکل این نمودار ساختار غیر معمولی را نشان نمی دهد . طرح کاملا تصادفی : در طرح کاملا تصادفی (CRD) اثر تعدادی تیمار هر یک در چند تکرار بر تغیر (صفت مورد نظر ) مورد بررسی قرار می گیرد. در این طرح یک منبع تغییرات قابل کنترل (تیمار) وجود دارد . برای آشنایی با نحوه  تجزیه واریانس مثال زیر بررسی می شود . مثال : در آزمایشی اثر هفت تیمار شامل سه مقدار کود گوگرد در فصل بهار و پاییز به همراه عدم مصرف کود (شاهد) هر یک در چهار تکرار بر میزان بیماری گال پوستی سیب زمینی مورد بررسی قرار گرفته است تیمارها در آزمایش بیماری گال پوستی سیب زمینی

G F E D C B A
17 18 30 10 16 9 30
7 24 7 4 10 9 18
16 12 21 4 18 16 32
17 19 9 5 18 4 26

برای خواندن داده ها (28 عدد) از دو روش وارد نمودن مستقیم و خواندن از طریق فایل های اکسل می توان استفاده نمود . ایتدا داده ها در یک فایل متنی (tab.delimited) با پسوند txt در فضای نرم افزار excel در یک آدرس فایل دلخواه (d://my data/…)  ذخیره و در محیط نرم افزار R با تابع read.table() به صورت زیر بازخوانی می گردد و در آبجکت data.potato  ذخیره می شود . برای مشاهده داده ها  می توانید آبجکت حاوی داده ها (data.potato)  را بازخوانی کنید :

> data.potato<-read.table("d://mydata/potato.txt",header=T)

> data.potato

Fertilizer Disease

1          A         30

2          A         18

3          A         32

4          A         26

5          B          9

.           .           .

.           .           .

.           .           .

28       G         17

28 عددی حاصل از آزمایش (متغیر Disease) و نوع تیمار هر یک (Fertilizer) نشان داده شده است . پس از حصول اطمینان از صحت خوانده شدن داده ها  تجزیه ی واریانس با تابع aov() صورت می گیرد. نتایج تجزیه واریانس در آبجکت anova.potato  نگهداری می شود . برای مشاهده نتایج تجزیه واریانس در قالب جدول از تابع summary استفاده می شود :

>anova.potato<-aov(disease~Fertillizer,data=data.potato)

Summary(anova.potato)

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

Fertillizer  6   1049  174.79  4.907   0.00279**

Residuals   21     748     35.62

--

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

همانطور که مشاهده می شود مدل تجزیه واریانس طرح CRD به صورت تیمار~ متغیر مورد ارزیابی نوشته شده است که شبیه به مدل y~x در تجزیه رگرسیون تابع lm() می باشد .

Data=data.potato به برنامه می گوید که متغیرهای Disease و Fertillizer در کجا قرار دارند . چنانچه از این برهان استفاده نشود ، باید قبل از نوشتن مدل داده های مورد نظر پیوست شوند

(attach(data.potato))

.

آزمون مقایسه میانگین LSD برای انجام مقایسه میانگین تیمارها با آزمون حداقل اختلافمعنی دار (LSD) در محیط نرم افزارR  می توانیم از تابع  pairwise.t.test() برای مدل تجزیه واریانس (یا آبجکت حاوی آن ) استفاده نماییم . برای آشنایی بیشتر با این تابع داده های مثال قبلی (اثر کود گوگرده بر بیماری گال پوستی در سیب زمینی ) را به کار می گیریم .

>Pairwise.t.test(disease,Fertilizer,p.adj=”none”)

          Pairwise comparisons using t test with pooled DS

Data:Disease and Fertilizer

  A       B          C          E          F

B 0.00061-   -           -           -           -

C 0.01648 0.16978 -         -           -           -

D 7.3e-05 0.38429 0.03112 -           -                -          

E 0.03112 0.10052 0.76999 0.01648   -                    -

F 0.06403   0.05063   0.52170   0.00744     0.72581   -

G 0.00851   0.27305   0.76999   0.05698    0.55991    0.35399

P value adjustment method:none

همانگونه که در خروجی فوق مشاهده می شود مقایسه دوبه دوی میانگین همه تیمار ها بر اساس LSD صورت گرفته و میزان احتمال خطا (α) برای هر مقایسه  ارائه شده است . به عنوان مثال تفاوت میانگین دو تیمار Aو B در سطح احتمال 00061/0   معنی دار است در حالی که میانگین دو تیمار A و F فاقد تفاوت معنی دار است . آزمون LDS با استفاده از بسته نرم افزاری agricolae ، برای انجام آزمون LSD باید از تابع  LSD.test() از بسته نرم افزاری  agricolae استفاده نماییم . چنانچه این بسته روی سیستم شما نصب نشده باشد ، لبتدا باید آن را لود و نصب نمایید .در صورتی که این بسته قبلا نصب شده باشد تنها کافی است آن را با تابع library() لود نمایید . تابع LSD.test() و برهان هایش به کاربر این امکان را می دهد تا میانگین صفت  مورد ارزیابی (Disease) را برای تیمارهای مورد بررسی (fertilizer) در سطح آماری دلخواه (alpha=) برای درجه آزادی (Dferror=) و واریانس خطای آزمایش (Mserror=) مورد مقایسه قرار دهند قبل از این که تابع را درج نماییم برای اختصار در برنامه نویسی بهتر است ابتدا داده ها را با تابع attach() بازخوانی نماییم.

>attach(data.potato)

>LSD.test(Disease,fertilizer,Dferror=21,Mserror=35.62,alpha=0.05)

Study:

LSD t Test for Disease

Mean Square Error:35.62

Fertilizer, means and individual (95%)Cl

  Disease        std.err   r       LCL      UCL Min. Max.

A   26.50       3.095696   4   20.062148   32.937852   18   32

B   9.50          2.466441   4   4.370754   14.629246   4   16

C  15.50        1.892969   4   11.563355   19.436645   10   18

D   5.75         1.436141   4   2.763382   8.736618   4   10

E   16.75        5.390965   4   5.538875   27.961125   7   30

F   18.25        2.462214   4   13.129545   23.370455   12   24

G   14.25       2.428134   4   9.200420    19.299580   8   17

Alpha:0.05 ; Df Error: 21

Critical Value of t: 2.079614

Least Significant Difference 8.776365

Means with the same letter are not significantly different.

Groups, Treatments and means

a          A         26.5

ab       F          18.25

b          E          16.75

b          C          15.5

bc        G         14.25

bc        B          9.5

c          D         5.75

همانطور که در خروجی برنامه مشاهده می شود بیشترین میانگین مربوط به تیمار (حرف a) و کمترین آن در D (حرفc) مشاهده می گردد . همچینین مقدار LSD در سطح 5 درصد 776365/8  شده است . به همین ترتیب با استفاده از توابع بسته نرم افزاری agricolae می توانید مقایسات میانگین باروش دانکن (تابعduncan.test()) و  SNK (تابع SNK.test()) را نیز انجام داد

آزمون duncan.test()

برای این آزمون مثالی در زیر داده شده است:

Examples

library(agricolae)

data(sweetpotato)

model<-aov(yield~virus,data=sweetpotato)

comparison <- duncan.test(model,”virus”,

main=”Yield of sweetpotato. Dealt with different virus”)

duncan.test(model,”virus”,alpha=0.01,console=TRUE)

# version old duncan.test()

attach(sweetpotato)

df<-df.residual(model)

Mserror<-deviance(model)/df

comparison <- duncan.test(yield,virus,df,Mserror, group=TRUE)

print(comparison$groups)

detach(sweetpotato)

آزمون LSD.test برای این آزمون مثالی در زیر داده شده است:

Examples

library(agricolae)

data(sweetpotato)

model<-aov(yield~virus, data=sweetpotato)

out <- LSD.test(model,”virus”, p.adj=”bonferroni”)

#stargraph

bar.group(out$groups,ylim=c(0,45),density=4,border=”blue”)

#endgraph

# Old version LSD.test()

attach(sweetpotato)

df<-df.residual(model)

Mserror<-deviance(model)/df

out <- LSD.test(yield,virus,df,Mserror, p.adj=”bonferroni”, group=FALSE)

detach(sweetpotato)

#stargraph

# Variation range: Max – Min

bar.err(out$means,variation=”range”,ylim=c(0,44),bar=FALSE,col=0)

#endgraph

LSD.test(model,”virus”,p.adj=”bon”,console=TRUE)

آزمون waller.test برای این آزمون مثالی در زیر داده شده است:

Examples

library(agricolae)data(sweetpotato)model<-aov(yield~virus, data=sweetpotato)out <- waller.test(model,”virus”, group=TRUE)#startgraphpar(mfrow=c(2,2))# variation: SE is error standard# variation: range is Max – Minbar.err(out$means,variation=”SD”,horiz=TRUE,xlim=c(0,45),bar=FALSE,col=colors()[25],space=2, main=”Standard deviation”,las=1)bar.err(out$means,variation=”SE”,horiz=FALSE,ylim=c(0,45),bar=FALSE,col=colors()[15],space=2,main=”SE”,las=1)bar.err(out$means,variation=”range”,ylim=c(0,45),bar=FALSE,col=”green”,space=3,main=”Range = Max – Min”,las=1)bar.group(out$groups,horiz=FALSE,ylim=c(0,45),density=8,col=”red”, main=”Groups”,las=1)#endgraph# Old version HSD.test()attach(sweetpotato)df<-df.residual(model)Mserror<-deviance(model)/dfFc<-anova(model)[“virus”,4]out <- waller.test(yield, virus, df, Mserror, Fc, group=TRUE)print(out$mean)detach(sweetpotato)

آزمون HSD.test برای این آزمون  مثالی در زیر داده شده است:

Examples

library(agricolae)

data(sweetpotato)

model<-aov(yield~virus, data=sweetpotato)

out <- HSD.test(model,”virus”, group=TRUE,console=TRUE,

main=”Yield of sweetpotato\nDealt with different virus”)

#stargraph

bar.group(out$groups,ylim=c(0,45),density=4,border=”blue”)

#endgraph

out<-HSD.test(model,”virus”, group=FALSE)

means<-out$means

# Old version HSD.test()

attach(sweetpotato)

df<-df.residual(model)

Mserror<-deviance(model)/df

HSD.test(yield,virus,df,Mserror, group=TRUE,console=TRUE,

main=”Yield of sweetpotato. Dealt with different virus”)

detach(sweetpotato)

آزمون مقایسه میانگین توکی برای انجام این آزمون اختلاف معنی دار قابل اعتماد توکی (HSD) در محیط نرم افزار R از تابع TukeyHSD() برای مدل تجزیه واریانس (یا آبجکت حاوی آن) استفاده می شود .

>TurkeyHSD(anova.potato)

 Tukey multiple comparisons of mean

  95% family-wise confidence level

Fit: aov(formula=Disease~Fertillizer,data=data.potato)

$Fertillizer

            Diff     lwe     upr     p          adj

B-A     -17      -30.718738 -3.281262    0.0092170

C-A     -11      -24.718738 2.718738     0.1738769

D-A     -20.75           -34.468738 -7.031262    0.0012167

E-A      -9.75  -23.468738 3.968738     0.2847369

.

.

.

G-E     -2.50  -16.218738 11.218738   09963747

G-F     -4.00  -17.718738 9.718738     0.9597399

همانگونه که مشاهده می کنید در مقایسه دو به دوی تیمارها همراه با اختلاف میانگین احتمال معنی دار بودن این اختلافات مشاهده می گردد . تنها تفاوت دو تیمار A و B در سطح 5درصد و تفاوت دو تیمار A و D در سطح 1 دزصد معنی دار ده است . ضریب تغیرات خطا (CV) برای محاسبه ضریب تغییرات خطا (CV%) در یک طرح آزمایشی می توانید با استفاده از اطلاعات موجود و 2 تابع mean() و sqrt() به صورت CV را محاسبه می نماییم .

>attach(data.potato)

>cv<-sqrt(35.62)-100/mean(Disease)

>cv

[1]39.22793

همانطور که مشاهده می شود CV خطا حدود 2/39 درصد است . البته چنانچه بسته نرم افزاری  agricolae  را نصب نمودید  می توانید تابع cv.model() را به صورت زیر به کار ببرید :

>library(agricolae)

>cv.model(anova.potato)

[1] 39.22741

طرح بلوک کامل تجزیه واریانس داده های حاصل از آزمایشاتی که در قالب طرح بلوک کامل (RB) اجرا شده اند نیز معمولا با استفاده از تابع aov() صورت می گیرد . به مثال زیر توجه کنید در آزمایشی عملکرد علوفه 5 رقم یونجه (رنجر A ،همدانیB،قره یونجهC ،محلی تبریز D، محلی خویE) در قالب یک طرح بلوک کامل با 4 تکرار مورد مقایسه قرار گرفته است .

داده های آزمایش مقایسه عملکرد علوفه 5 رقم یونجه
E D C B A بلوک
محلی خوی محلی تبریز قره یونجه همدانی رنجر
78/5 74/5 82/6 17/8 15/7 1
62/6 63/4 58/8 78/8 74/7 2
81/5 56/5 06/6 0/8 39/6 3
22/4 94/4 78/6 75/6 63/4 4

قبل از شروع تجزیه تحلیل در R داده ها که شامل سه متغیر block  و variety و yield می باشند . ایتدا داده ها را با استفاه از تابع read.tabel() در محیط R خوانده شده و در آبجکت data.alfalfa نگهداری می شود  برای اطمینان از صحت خوانده شدن داده ها آنها را فرا خوانی می نماییم  سپس متغیر بلوک که سطوح آن عددی است با استفاده از تابع as.factor() به فاکتور تبدیل می شود . در مرحله بعد داده ها را جهت دسترسی مستقیم به آن ها پیوست می گردد .  داده ها با استفاده از تابع aov() مورد تجزیه واریانس قرار می گیرند  و برای نمایش نتایج در قالب جدول  تجزیه واریانس تابع summary() به کار برده می شود .

> data.alfalfa<-read.table("C:\\Users\\1401\\Desktop\\111.txt")

> data.alfalfa

   block variety yield

1      1       A  7.15

2      2       A  7.74

3      3       A  6.39

4      4       A  4.63

5      1       B  8.17

6      2       B  8.78

7      3       B  8.00

8      4       B  6.75

9      1       C  6.82

10     2       C  8.58

11     3       C  7.06

12     4       C  6.78

13     1       D  5.74

14     2       D  4.63

15     3       D  5.56

16     4       D  4.94

17     1       E  5.78

18     2       E  6.62

19     3       E  5.81

20     4       E  4.22

> data.alfalfa$block<-as.factor(data.alfalfa$block)

> attach(data.alfalfa)

> anova.alfalfa<-aov(yield~block+variety)

> summary(anova.alfalfa)

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

block        3  8.619   2.873   6.821 0.006182 **

variety      4 20.513   5.128  12.174 0.000347 ***

Residuals   12  5.055   0.421                    

---

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

همانگونه که مشاهده می شود میانگین مربعات بلوک و تیمار (رقم) به ترتیب 887/2 و088/5 بود که هر دو در سطح احتمال یک درصد معنی دار شده اند . مدل تجزیه واریانس  طرح RB به صورت زیر نوشته شده است :

تیمار+بلوک ~ متغیر مورد ارزیابی

برای مقایسه میانگین تیمار ها با استفاده از آزمون LSD و یا دانکن می توانید از امکانات نرم افزاری agricolae استفاده می شود . چنانچه این بسته از قبل نصب شده باشد تنها کافی است با استفاده تز تابع library() آن را لود نایید :

Study:

LSD tTest for yield

Mean Square Error:0.421

Variety, means and individual(99%) Cl

          Yield std.err        r        LCL    UCL  Min. Max.

A       6.4775       0.6749738    4    4.415766  8.539234   4.63  7.74

B       7.9250       0.4259597    4    6.623889  9.226111   6.75  8.78

C       7.3100       0.4278240    4    6.003195  8.616805   6.78  8.58

D       5.2175       0.2602042    4    4.422696  6.012304    4.63  5.74

E        5.6300       0.50748267   4   4.078987  7.172013    4.22  6.62

Alpha:0.01 ; Df Error:12

Critical value of t:3.05454

Least Significant Difference 1.401431

Means with the same letter are not significantly different.

Groups, Treatments and means

a        B       7.925

 ab    C       7.31

bc      A       6.478

c        E        5.63

c        D       5.218

همانگونه که مشاهده می شود واریته B (یونجه همدانی) با عملکرد 925/7 بهترین (حرفa) و D واریته (محلی تبریز) و E (محلی خوی) ضعیف ترین (حرف c) بودند . تجزیه طرح بلوک با داده های گمشده چنانچه بنا به دلایلی یک یا چند واحد آزمایشی دز یک یا چند بلوک از دست برود تابع aov() توانایی تجزیه طرح بلوک به صورت نا متعادل را نیز دارد . جدول زیر داده های آزمایشی را نشان می دهد که در آن ارتفاع بوته چهار ژنوتیپ ذرت در شرایط مزرعه در قالب یک طرح بلوک کامل با 4 تکرار مورد بررسی قرار گرفته است . در حین آزمایش دو واحد آزمایشی که در جدول با علامت × مشخص شده اند از دست رفته اند . همانگونه که مشاهده می شود تابع aov() به خوبی این داده ها را که نامتعادل شده اند در قالب طرح بلوک مورد تجزیه قرار داد است .

ارقام ذرت
4 3 2 1 بلوک
125 155 135 161 1
130 167 141 175 2
128 190 × 149 3
× 160 127 167 4

14 داده موجود به صورت دستی با استفاده از تابع data.frame()  در آبجکت data.corn در نرم افزار R وارد شده اند . اگر چه این روش برای داده های آزمایشات واقعی که معمولا حجیم هستند چندان مناسب نمی باشد .

> data.corn<-data.frame(block=c(1,2,3,4,1,2,3,4,1,2,3,4,1,2,3,4),variety=c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4),height=c(161,175,149,167,135,141,NA,127,155,167,190,160,125,130,125,NA))

برای مشاهده داده های وارد شده در آبجکت data.corn را بازخوانی می کنیم . همانطور که مشاهده می شود دو عدد از دست رفته را به صورت NA وارد نموده ایم .

> data.corn

   block variety height

1      1       1    161

2      2       1    175

3      3       1    149

4      4       1    167

5      1       2    135

6      2       2    141

7      3       2     NA

8      4       2    127

9      1       3    155

10     2       3    167

11     3       3    190

12     4       3    160

13     1       4    125

14     2       4    130

15     3       4    125

16     4       4     NA

با استفاده از دستور زیر داده ها را مورد تجزیه قرار می دهیم :

> anova.corn<-aov(height~as.factor(block)+as.factor(variety))

> summary(anova.corn)

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

as.factor(block)    3    253    84.5   0.618 0.62491  

as.factor(variety)  3   4322  1440.6  10.546 0.00546 **

Residuals           7    956   136.6                                       

---

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

2 observations deleted due to missingness

همانگونه که مشاهده شد به دلیل اینکه سطوح variety و block به صورت عدد تعریف شده بود از تابع as.factor() استفاده شده است تا تبدیل به فاکتور گروه بندی شوند . بر خلاف مواد قبلی تابع as.factor() مستقیما درون تابع aov() استفاده شده است . مشاهده می شود که بین بلوک ها تفاوتی وجود ندارد ولی چهار رقم مورد بررسی از نظر ارتفاع بوته در سطح یک درصد تفاوت آماری دارند . در پایان خروجی نیز مشاهده می نمایید که پیغام وجود دو عدد گم شده ارائه شده است . آزمایشات فاکتوریل آزمایشات فاکتوریل آزمایشاتی هستند که در آنها اثرات بیش از یک فاکتور (تیمار) مورد بررسی قرار می گیرد . هدف اصلی این آزمایشات بررسی اثرات اصلی و اثر متقابل فاکتورها می باشد . نحوه ی تجزیه داده های حاصل از آزمایشات فاکتوریل بسته به طرح پایه ای که آزمایش در قالب آن انجام شده متفاوت خواهد بود . آزمایش فاکتوریل در قالب طرح کاملا تصادفی برای آشنایی با نحوه تجزیه واریانس آزمایشات فاکتوریل (در قالب طرح تصادفی) با استفاده از تابع aov() مثال زیر را مورد تجزیه واریانس قرار می دهیم . در یک آزمایش فاکتوریل افزایش وزن بدن نوعی موش صحرایی بر حسب گرم (weight)  با یک طرح پایه کاملا تصادفی تحت پوشش شش تیمار رژیم غذایی متشکل از دو فاکتور نوع پروتئین (دارای p1,p2,p3  ) و میزان پروتئین (دارای دو سطح low و high ) در چهار تکرار مورد بررسی قرار گرفته است و داده ها در جدول زیر تنظیم شده اند .

high low
P3 P2 P1 P3 P2 P1
94 98 100 49 86 90
79 74 102 82 95 76
96 95 118 73 97 90
102 111 104 86 67 64

ابتدا با استفاده از توابع data.frame() و rep() داده ها را به آبجکت data.protein وارد می کنیم . برای آزمون صحت وارد نمودن و خوانده شدن داده ها توسط برنامه ، داده ها را فراخوانی نموده ایم . برای دسترسی مستقیم به متغییر های موجود در داده ها از تابع attach() استفاده شده است .سپس با استفاده از تابع aov() مدل تجزیه واریانس را تعریف و تجزیه را انجام می دهیم و در آبجکت anova.protein نگهداری می نماییم. برای ارائه نتایج در قالب جدول تجزیه واریانس از تابع summary() استفاده شده است :

> data.protein<-data.frame(amount=rep(c("low","high"),ech=12),protein=rep(c("p1","p2","p3"),2,each=4),weight=c(90,76,90,64,86,95,97,67,49,82,73,86,100,102,118,104,98,74,95,111,94,79,96,102))

> data.protein

   amount protein weight

1     low      p1     90

2    high      p1     76

3     low      p1     90

4    high      p1     64

5     low      p2     86

6    high      p2     95

7     low      p2     97

8    high      p2     67

9     low      p3     49

10   high      p3     82

11    low      p3     73

12   high      p3     86

13    low      p1    100

14   high      p1    102

15    low      p1    118

16   high      p1    104

17    low      p2     98

18   high      p2     74

19    low      p2     95

20   high      p2    111

21    low      p3     94

22   high      p3     79

23    low      p3     96

24   high      p3    102

> anova.protein<-aov(weight~protein*amount)

>summary(anova.protein)

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

Protein       2   465.6    232.8      1.373   0.27860

Amount     1       1980.2   1980.2  11.680   0.00307**

Protein:amount  2   328.1   164.0    0.968   0.39889

Residuals             18   3051.5    169.5           

---

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

همانگونه که مشاهده می شود تنها منبع متغیر amount (میزان پروتئین) معنی دار است (α=0.00307) همانطور که در بالا مشاهده می شود مدل تجزیه واریانس آزمایش فاکتوریل (با دو فاکتور) در قالب طرح کاملا تصادفی زیر نوشته شده است : فاکتور دوم *فاکتور اول ~ متغیر مورد بازیابی همانگونه که در مدل مشاهده می شود برای نوشتن مدل ها ی فاکتوریل از علامت "*" بین فاکتورها استفاده می کنیم . نوشتن A*B در مدل کلیه منابع تغیر ساده و فاکتوریل (A،B وA*B) لازم برای درج در جدول تجزیه واریانس را ایجاد می کند . اثرات ساده فاکتوریل ها در مثال شاملprotein  و amount و اثر متقابل دو فاکتور A و B در نر افزار R با عبارات A:B بیان می شود .

نظرات

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


افزودن نظر

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