0% found this document useful (0 votes)
30 views69 pages

R - SourceSara

This document provides a guide to using the R software. It begins by introducing R and discussing how to work with objects in R such as vectors, factors, arrays, matrices, and lists. It then covers manipulating data through naming, sorting, ranking, and subsetting data. Additional sections discuss statistical distributions, control structures like if statements and loops, writing custom functions and operators, graphics and plotting, and performing statistical tests. The guide is intended for learning the basics of working with data in R.

Uploaded by

Reza Asakereh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
30 views69 pages

R - SourceSara

This document provides a guide to using the R software. It begins by introducing R and discussing how to work with objects in R such as vectors, factors, arrays, matrices, and lists. It then covers manipulating data through naming, sorting, ranking, and subsetting data. Additional sections discuss statistical distributions, control structures like if statements and loops, writing custom functions and operators, graphics and plotting, and performing statistical tests. The guide is intended for learning the basics of working with data in R.

Uploaded by

Reza Asakereh
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 69

‫‪www.SourceSara.

com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫راﻫﻨﻤﺎي اﺳﺘﻔﺎده از ﻧﺮم اﻓﺰار ‪R‬‬

‫ﮔﺮد آوري ‪ :‬ﻣﺼﻄﻔﯽ ﮐﺮﯾﻤﯽ‬

‫اﺳﺘﺎد راﻫﻨﻤﺎ ‪ :‬ﺟﻨﺎب آﻗﺎي دﮐﺘﺮ داوود ﻗﺰوﯾﻨﯽ ﻧﮋاد‬


‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫راھﻨﻤﺎی اﺳﺘﻔﺎده از ﻧﺮم اﻓﺰار ‪R‬‬

‫ﻓﮭﺮﺳﺖ‬

‫‪1‬‬ ‫ﮐﺎر ﺑﺎ ﻧﺮم اﻓﺰار ‪R‬‬


‫‪1‬‬ ‫‪ .1‬آﺷﻨﺎﯾﯽ و ﺷﺮوع ﮐﺎر‬
‫‪2‬‬ ‫‪ .2‬ﮐﺎر ﺑﺎ اﺷﯿﺎء‬
‫‪3‬‬ ‫‪ .2.1‬ﺑﺮدارھﺎ‬
‫‪3‬‬ ‫‪ .2.1.1‬ﺗﻮﻟﯿﺪ ﺑﺮدار اﻋﺪاد ﻣﺘﻮاﻟﯽ‬
‫‪4‬‬ ‫‪ .2.1.2‬ﺗﻮﻟﯿﺪ ﺑﺮدار اﻋﺪاد ﺗﮑﺮاری‬
‫‪5‬‬ ‫‪ .2.1.3‬ﺗﻮﻟﯿﺪ ﺑﺮدار اﻋﺪاد ﺗﺼﺎدﻓﯽ‬
‫‪5‬‬ ‫‪ .2.1.4‬اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ ﺑﺮدار‬
‫‪5‬‬ ‫‪ .2.1.5‬اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮھﺎ و ﺗﻮاﺑﻊ‬
‫‪6‬‬ ‫‪ .2.1.6‬داده ھﺎی ﮔﻢ ﺷﺪه‬
‫‪7‬‬ ‫‪ .2.1.7‬ﺑﺮدار ﮐﺎراﮐﺘﺮھﺎ‬
‫‪7‬‬ ‫‪ .2.2‬ﻓﺎﮐﺘﻮرھﺎ‬
‫‪8‬‬ ‫‪ .2.2.1‬اﺳﺘﻔﺎده از ﯾﮏ ﺗﺎﺑﻊ ﺑﺮ ﺣﺴﺐ ﯾﮏ ﻓﺎﮐﺘﻮر‬
‫‪8‬‬ ‫‪ .2.2.2‬ﺗﻮﻟﯿﺪ ﻓﺎﮐﺘﻮرھﺎی دارای اﻟﮕﻮ‬
‫‪8‬‬ ‫‪ .2.3‬آراﯾﮫ ھﺎ و ﻣﺎﺗﺮﯾﺲ ھﺎ‬
‫‪10‬‬ ‫‪ .2.3.1‬اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ آراﯾﮫ‬
‫‪10‬‬ ‫‪ .2.3.2‬ﺳﺎﺧﺘﻦ ﻣﺎﺗﺮﯾﺲ‬
‫‪10‬‬ ‫‪ .2.3.3‬ﮐﺎر ﺑﺎ ﻣﺎﺗﺮﯾﺲ ھﺎ‬
‫‪13‬‬ ‫‪ .2.4‬ﻟﯿﺴﺖ ھﺎ‬
‫‪13‬‬ ‫‪ .2.4.1‬اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ ﻟﯿﺴﺖ‬
‫‪14‬‬ ‫‪ .2.5‬دﯾﺘﺎ ﻓﺮﯾﻢ ھﺎ‬
‫‪14‬‬ ‫‪ .2.5.1‬اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ دﯾﺘﺎ ﻓﺮﯾﻢ‬
‫‪15‬‬ ‫‪ .3‬دﺳﺘﮑﺎری داده ھﺎ‬
‫‪15‬‬ ‫‪ .3.1‬ﻧﺎﻣﮕﺬاری داده ھﺎ‬
‫‪15‬‬ ‫‪ .3.2‬ﻣﺮﺗﺐ ﮐﺮدن داده ھﺎ‬
‫‪15‬‬ ‫‪ .3.3‬رﺗﺒﮫ ﺑﻨﺪی داده ھﺎ‬
‫‪16‬‬ ‫‪ .3.4‬ﺟﺪول ﺑﻨﺪی داده ھﺎ‬
‫‪16‬‬ ‫‪ .3.5‬ﺟﺪا ﮐﺮدن داده ھﺎ‬
‫‪17‬‬ ‫‪ .4‬ﺗﻮزﯾﻊ ھﺎی آﻣﺎری‬
‫‪18‬‬ ‫‪ .5‬دﺳﺘﻮرات ﮐﻨﺘﺮﻟﯽ‬
‫‪18‬‬ ‫‪ .5.1‬دﺳﺘﻮر ﺷﺮط‬
‫‪19‬‬ ‫‪ .5.2‬دﺳﺘﻮرات ﺗﮑﺮار‬
‫‪20‬‬ ‫‪ .6‬ﻧﻮﺷﺘﻦ ﺗﻮاﺑﻊ و ﻋﻤﻠﮕﺮھﺎی ﺷﺨﺼﯽ‬

‫‪21‬‬ ‫ﮔﺮاﻓﯿﮏ و رﺳﻢ ﻧﻤﻮدار‬


‫‪21‬‬ ‫‪ .1‬دﺳﺘﻮرھﺎی ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﺑﺎﻻ‬
‫‪21‬‬ ‫‪ .1.1‬ﺗﺎﺑﻊ )(‪plot‬‬
‫‪24‬‬ ‫‪ .1.2‬ﺗﺎﺑﻊ )(‪curve‬‬
‫‪24‬‬ ‫‪ .1.3‬ﺗﺎﺑﻊ )(‪pairs‬‬
‫‪25‬‬ ‫‪ .1.4‬ﺗﺎﺑﻊ )(‪coplot‬‬
‫‪26‬‬ ‫‪ .1.5‬ﺗﺎﺑﻊ )(‪hist‬‬
‫‪27‬‬ ‫‪ .1.6‬ﺗﺎﺑﻊ )(‪barplot‬‬
‫‪27‬‬ ‫‪ .1.7‬ﺗﺎﺑﻊ )(‪boxplot‬‬
‫‪28‬‬ ‫‪ .1.8‬ﺗﺎﺑﻊ )(‪dotchart‬‬
‫‪29‬‬ ‫‪ .1.9‬ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺳﮫ ﻣﺘﻐﯿﺮی‬
‫‪31‬‬ ‫‪ .1.10‬ﺗﻮاﺑﻊ ﻣﻘﺎﯾﺴﮫ ﺗﻮزﯾﻊ ھﺎ‬

‫‪I‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪33‬‬ ‫‪ .1.11‬ﻧﻤﻮدارھﺎی ﺳﺮی زﻣﺎﻧﯽ‬


‫‪35‬‬ ‫‪ .1.12‬ﺟﺰﺋﯿﺎت رﺳﻢ ﻧﻤﻮدار‬
‫‪37‬‬ ‫‪ .2‬دﺳﺘﻮرھﺎی ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﭘﺎﯾﯿﻦ‬
‫‪37‬‬ ‫‪ .2.1‬ﺗﺎﺑﻊ )(‪text‬‬
‫‪38‬‬ ‫‪ .2.2‬ﺗﺎﺑﻊ )(‪abline‬‬
‫‪39‬‬ ‫‪ .2.3‬ﺗﺎﺑﻊ )(‪legend‬‬
‫‪40‬‬ ‫‪ .2.4‬ﺗﺎﺑﻊ )(‪title‬‬
‫‪41‬‬ ‫‪ .3‬دﺳﺘﻮرات ﺗﺮﺳﯿﻢ ﺗﻌﺎﻣﻠﯽ‬
‫‪41‬‬ ‫‪ .3.1‬ﺗﺎﺑﻊ )(‪locator‬‬
‫‪42‬‬ ‫‪ .3.2‬ﺗﺎﺑﻊ )(‪identify‬‬
‫‪42‬‬ ‫‪ .4‬ﺗﻐﯿﯿﺮ ﭘﺎراﻣﺘﺮھﺎی ﺗﻮاﺑﻊ‬

‫‪43‬‬ ‫آزﻣﻮن ھﺎی آﻣﺎری‬


‫‪43‬‬ ‫‪ .1‬آزﻣﻮن ‪t'student‬‬
‫‪45‬‬ ‫‪ .2‬آزﻣﻮن ‪F‬‬
‫‪46‬‬ ‫‪ .3‬آزﻣﻮن دو ﺟﻤﻠﮫ ای‬
‫‪46‬‬ ‫‪ .4‬آزﻣﻮن ‪chi-square‬‬

‫‪48‬‬ ‫آزﻣﻮن ھﺎی ﻧﺎﭘﺎراﻣﺘﺮی‬


‫‪48‬‬ ‫‪ .1‬آزﻣﻮن وﯾﻠﮑﺎﮐﺴﻮن‬
‫‪49‬‬ ‫‪ .2‬آزﻣﻮن ﮐﻮﻟﻤﻮﮔﺮوف‪-‬اﺳﻤﯿﺮوﻧﻮف‬
‫‪50‬‬ ‫‪ .3‬آزﻣﻮن ﺷﺎﭘﯿﺮو‪-‬وﯾﻠﮏ‬
‫‪51‬‬ ‫‪ .4‬آزﻣﻮن ﮐﺮوﺳﮑﺎل‪-‬واﻟﯿﺲ‬

‫‪52‬‬ ‫رﮔﺮﺳﯿﻮن‬
‫‪52‬‬ ‫‪ .1‬ﻣﺪل ھﺎی ﺧﻄﯽ‬
‫‪55‬‬ ‫‪ .2‬رﺳﻢ ﻧﻤﻮدار ﺧﻂ رﮔﺮﺳﯿﻮن‬
‫‪56‬‬ ‫‪ .3‬ﺑﺮرﺳﯽ ﻓﺮض ھﺎی ﻣﺪل‬
‫‪57‬‬ ‫‪ .4‬آزﻣﻮن ﻓﺮض‬
‫‪59‬‬ ‫‪ .5‬ﻓﺎﺻﻠﮫ اﻃﻤﯿﻨﺎن‬
‫‪59‬‬ ‫‪ .6‬ﻣﻘﺎﯾﺴﮫ ﻣﺪل ھﺎ‬

‫‪60‬‬ ‫ﻃﺮح آزﻣﺎﯾﺶ ھﺎ‬


‫‪60‬‬ ‫‪ .1‬آﻧﺎﻟﯿﺰ وارﯾﺎﻧﺲ ﯾﮏ ﻃﺮﻓﮫ‬
‫‪62‬‬ ‫‪ .2‬ﺑﺮرﺳﯽ ﻓﺮض ھﺎی ﻣﺪل‬
‫‪63‬‬ ‫‪ .3‬آزﻣﻮن ﺗﻮﮐﯽ‬
‫‪64‬‬ ‫‪ .4‬ﻃﺮح ﺑﻠﻮک ھﺎی ﺗﺼﺎدﻓﯽ و ﻣﺮﺑﻊ ﻻﺗﯿﻦ‬
‫‪64‬‬ ‫‪ .5‬ﻃﺮح ھﺎی ﻋﺎﻣﻠﯽ‬
‫‪65‬‬ ‫‪ .6‬ﻧﻤﻮدار اﺛﺮ ﻣﺘﻘﺎﺑﻞ‬

‫‪66‬‬ ‫ﻣﻨﺎﺑﻊ‬

‫‪II‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﮐﺎر ﺑﺎ ﻧﺮم اﻓﺰار ‪R‬‬

‫‪ .1‬آﺷﻨﺎﯾﯽ و ﺷﺮوع ﮐﺎر‬

‫ﻧﺮم اﻓﺰار ‪ R‬داراي ﻣﺤﯿﻄﯽ ﺷﺒﯿﻪ ﻧﺮم اﻓﺰار ‪ S-Plus‬ﺑﻮده و ﺑﺮاي اﻧﺠﺎم ﻫﺮ ﻓﻌﺎﻟﯿﺖ در اﯾﻦ ﻧﺮم اﻓﺰار ﺑﺎﯾﺪ از دﺳﺘﻮرﻫﺎ و‬
‫ﮐﺪﻫﺎي ﻣﻨﺎﺳﺐ‪ ،‬ﮐﻪ اﻏﻠﺐ ﺷﺒﯿﻪ دﺳﺘﻮرﻫﺎي ﻣﻮرد اﺳﺘﻔﺎده در ﻧﺮم اﻓﺰار ‪ S-Plus‬ﻫﺴﺘﻨﺪ اﺳﺘﻔﺎده ﮐـﺮد‪ .‬ﺑـﺎ اﺟـﺮاي ﻧـﺮم‬
‫اﻓﺰار ‪ R‬و ﺑﺎز ﺷﺪن ﻣﺤﯿﻂ ﮐﺎري‪ ،‬اﺑﺘﺪا ﺗﻮﺿﯿﺤﺎﺗﯽ در ﻣﻮرد ﻧﺮم اﻓﺰار ﻇﺎﻫﺮ ﺷﺪه و ﭘﺲ از آن ﻋﻼﻣﺖ " > " ﺑﻪ ﻧﻤﺎﯾﺶ‬
‫در ﺧﻮاﻫﺪ آﻣﺪ ﮐﻪ ﻧﺸﺎن دﻫﻨﺪه ﻧﻘﻄﻪ ﺷﺮوع ﻧﻮﺷﺘﻦ دﺳﺘﻮرات اﺳﺖ‪ .‬در ﻧﺮم اﻓﺰار ‪ R‬ﻫﻤﻮاره دﺳﺘﻮرات ﺑﻌﺪ از ﻋﻼﻣـﺖ‬
‫" > " ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﺑﺎ ﻓﺸﺮدن ﮐﻠﯿﺪ ‪ Enter‬روي ﺻﻔﺤﻪ ﮐﻠﯿﺪ در ﺻﻮرﺗﯽ ﮐﻪ دﺳﺘﻮر ﯾﺎ ﮐـﺪ ﻧﻮﺷـﺘﻪ ﺷـﺪه از ﻧـﻮع‬
‫دﺳﺘﻮرات اﺟﺮاﯾﯽ ﺑﺎﺷﺪ اﺟﺮا ﺧﻮاﻫﺪ ﺷﺪ‪ ،‬و در ﻏﯿﺮ اﯾﻦ ﺻﻮرت دﺳﺘﻮرات ﺑﻪ ﺧﻂ ﺑﻌﺪي ﻣﻨﺘﻘﻞ ﺧﻮاﻫﻨـﺪ ﺷـﺪ‪ .‬ﺑـﺮاي‬
‫ﺧﺮوج از ﻧﺮم اﻓﺰار از دﺳﺘﻮر )(‪ q‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﺷﮑﻞ زﯾﺮ ﻣﺤﯿﻂ ﻧﺮم اﻓﺰار ‪ R‬ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪.‬‬

‫‪1‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﺑﺮاي ﻧﻮﺷﺘﻦ ﮐﺪﻫﺎ و دﺳﺘﻮرات در ‪ R‬ﺗﻮﺟﻪ ﺑﻪ ﭼﻨﺪ ﻧﮑﺘﻪ ﺿﺮوري ﺑﻪ ﻧﻈﺮ ﻣﯽ رﺳﺪ‪ .‬ﻧﺮم اﻓﺰار ‪ R‬ﻧﺴﺒﺖ ﺑـﻪ ﺑﺰرﮔـﯽ و‬
‫ﮐﻮﭼﮑﯽ ﺣﺮوف ﺣﺴﺎس ﺑﻮده و ﺣﺮوف ﺑﺰرگ و ﮐﻮﭼﮏ را ﺑﻪ ﺻﻮرت ﻣﺘﻤﺎﯾﺰ در ﻧﻈﺮ ﻣﯽ ﮔﯿﺮد‪ .‬ﻣﺜﻼ ‪ A‬و ‪ a‬در اﯾـﻦ‬
‫ﻧﺮم اﻓﺰار ﺑﻪ دو ﺷﺊ ﻣﺨﺘﻠﻒ اﺷﺎره ﻣﯽ ﮐﻨﻨﺪ‪ .‬ﺑﺮاي ﺟﺪا ﮐﺮدن دﺳﺘﻮرات ﻣﯽ ﺗﻮان از ﻋﻼﻣﺖ " ; " اﺳﺘﻔﺎده ﮐﺮده و ﯾـﺎ‬
‫دﺳﺘﻮر را ﺑﻪ ﺧﻂ ﺑﻌﺪ ﻣﻨﺘﻘﻞ ﮐﺮد‪ .‬ﻫﻤﭽﻨﯿﻦ ﺑﺮاي ﻗﺮاردادن ﮔﺮوﻫﯽ از دﺳﺘﻮرﻫﺎ در ﮐﻨﺎر ﻫﻢ از ﻋﻼﻣـﺖ " } " و " { "‬
‫اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺑﺮاي وارد ﮐﺮدن ﺗﻮﺿﯿﺤﺎت در ﻣﯿﺎن دﺳﺘﻮرﻫﺎ ﻧﯿﺰ ﻣﯽ ﺗﻮان از ﻋﻼﻣﺖ ‪ #‬اﺳﺘﻔﺎده ﮐﺮد‪ .‬در ﺻﻮرﺗﯽ ﮐﻪ‬
‫ﺑﺨﻮاﻫﯿﻢ ﮐﺪﻫﺎي ﻗﺒﻞ را ﺑﺎزﺧﻮاﻧﯽ ﯾﺎ وﯾﺮاﯾﺶ ﮐﻨﯿﻢ ﻣﯽ ﺗﻮاﻧﯿﻢ از ﮐﻠﯿﺪﻫﺎي ﻣﮑﺎن ﻧﻤﺎي ﺑﺎﻻ و ﭘﺎﯾﯿﻦ ﺻﻔﺤﻪ ﮐﻠﯿﺪ ﮐﻤﮏ‬
‫ﺑﮕﯿﺮﯾﻢ‪ .‬ﻫﻤﭽﻨﯿﻦ در ﻣﯿﺎن ﺧﻄﻮط ﺑﺮﻧﺎﻣﻪ ﻧﯿﺰ ﻣﯽ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از ﮐﻠﯿﺪﻫﺎي ﻣﮑﺎن ﻧﻤﺎي ﭼﭗ و راﺳﺖ ﺟﺎﺑﺠﺎ ﺷـﺪه و‬
‫ﺑﻪ وﯾﺮاﯾﺶ ﮐﺪﻫﺎ ﭘﺮداﺧﺖ‪ .‬ﺑﺮاي ﭘﺎك ﮐﺮدن ﺻﻔﺤﻪ ﻣﯽ ﺗﻮان از ﮐﻠﯿﺪﻫﺎي ﺗﺮﮐﯿﺒﯽ ‪ Ctrl+L‬اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﺑﺮاي ﮐـﺴﺐ‬
‫اﻃﻼﻋﺎت در ﻣﻮرد ﺗﻮاﺑﻊ و اﺳﺘﻔﺎده از ﻓﺎﯾﻞ ‪ help‬ﻣﯽ ﺗﻮان ﻧﺎم ﺗﺎﺑﻊ را ﺑﻌﺪ از ﯾﮏ ﻋﻼﻣﺖ ﺳﻮال ﻧﻮﺷﺘﻪ و ﺑﻪ ﻋﻨﻮان ﯾﮏ‬
‫دﺳــﺘﻮر ﻣــﻮرد اﺳــﺘﻔﺎده ﻗــﺮار داد‪ .‬ﻫﻤﭽﻨــﯿﻦ ﺑــﺮاي ﺟــﺴﺘﺠﻮي ﯾــﮏ ﮐﻠﻤــﻪ در ﻓﺎﯾــﻞ ‪ help‬ﻣــﯽ ﺗــﻮان از ﺗــﺎﺑﻊ‬
‫)(‪ help.search‬اﺳﺘﻔﺎده ﮐﺮد‪.‬‬

‫‪ .2‬ﮐﺎر ﺑﺎ اﺷﯿﺎء‬

‫اﻧﻮاع ﻣﺨﺘﻠﻒ اﺷﯿﺎء در ‪ R‬ﻋﺒﺎرﺗﻨﺪ از ﺑﺮدارﻫﺎ‪ ،‬آراﯾﻪ ﻫﺎ و ﻣﺎﺗﺮﯾﺲ ﻫﺎ‪ ،‬ﻓﺎﮐﺘﻮرﻫﺎ‪ ،‬ﻟﯿﺴﺖ ﻫﺎ‪ ،‬دﯾﺘﺎ ﻓﺮﯾﻢ ﻫﺎ‪ ،‬و ﺗﻮاﺑﻊ‪ .‬در ‪R‬‬
‫ﯾﮏ ﻣﺘﻐﯿﺮ ﺗﮏ ﻋﻀﻮي ﺑﻪ ﻋﻨﻮان ﯾﮏ ﺑﺮدار ﺗﮏ ﻋﻀﻮي در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﯽ ﺷﻮد‪ .‬ﺑﺮاي ﻣﺸﺎﻫﺪه ﺳـﺎﺧﺘﺎر ﯾـﮏ ﺷـﺊ از‬
‫ﺗﺎﺑﻊ )(‪ str‬ﺑﻪ ﻫﻤﺮاه ﻧﺎم آن ﺷﺊ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺮاي اﺧﺘﺼﺎص ﯾﮏ ﻣﻘﺪار ﺑﻪ ﯾﮏ ﺷﺊ از ﻋﻤﻠﮕﺮ ﺗﺨـﺼﯿﺺ ﺑـﻪ‬
‫ﺷﮑﻞ " >‪ " -‬ﯾﺎ " ‪ " <-‬و ﯾﺎ ﻋﻼﻣﺖ " = " اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺮاي ﻧﻤﺎﯾﺶ ﻣﺤﺘﻮﯾﺎت ﯾﮏ ﺷﺊ ﻧﯿﺰ ﮐﺎﻓﯿـﺴﺖ ﻧـﺎم آن‬
‫ﺷﺊ را ﺑﻪ ﻋﻨﻮان ﯾﮏ دﺳﺘﻮر وارد ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬
‫‪> Value <- 4‬‬
‫‪> Value‬‬
‫‪[1] 4‬‬

‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﺗﻤﺎم اﺷﯿﺎء ﻣﻮﺟﻮد در ﻣﺤﯿﻂ از ﺗﺎﺑﻊ )(‪ objects‬ﯾﺎ ﻣﻌﺎدل آن )(‪ ls‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)(‪> objects‬‬
‫"‪[1] "a‬‬ ‫"‪"ab‬‬ ‫"‪"abc‬‬ ‫"‪"Value‬‬

‫ﺑﺮاي ﺣﺬف ﯾﮏ ﺷﺊ از ﺗﺎﺑﻊ )(‪ remove‬ﯾﺎ ﻣﻌﺎدل آن )(‪ rm‬ﺑﺎ ذﮐﺮ ﻧﺎم اﺷـﯿﺎﺋﯽ ﮐـﻪ ﺑﺎﯾـﺪ ﺣـﺬف ﺷـﻮﻧﺪ اﺳـﺘﻔﺎده‬
‫ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> remove(a,ab,Value‬‬

‫‪2‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻧﺮم اﻓﺰار ‪ R‬ﻓﺎﺻﻠﻪ ﻫﺎي اﺿﺎﻓﯽ ﺑﯿﻦ ﮐﺪﻫﺎ را ﻧﺎدﯾﺪه ﻣﯽ ﮔﯿﺮد‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ ﻗﺮار دادن ﻓﺎﺻﻠﻪ زﯾﺎد ﺑـﯿﻦ ﮐـﺪﻫﺎ ﻣـﺸﮑﻠﯽ در‬
‫اﺟﺮاي آﻧﻬﺎ اﯾﺠﺎد ﻧﻤﯽ ﮐﻨﺪ‪.‬‬
‫ﺑﻪ اﺷﯿﺎء ﻣﯽ ﺗﻮان داده ﻫﺎﯾﯽ را از ﻧﻮع ﻋﺪدي‪ ،‬ﮐﺎراﮐﺘﺮي‪ ،‬ﻣﻨﻄﻘﯽ‪ ،‬ﯾﺎ ﻣﺨﺘﻠﻂ ﺗﺨﺼﯿﺺ داد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫‪value.numeric <- 56‬‬


‫>‬ ‫" ‪value.character <- " Hello Dear‬‬
‫>‬ ‫‪value.logical <- 2<4‬‬
‫>‬ ‫‪value.comlpex <- 2+3i‬‬

‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﻧﻮع ﯾﮏ ﺷﺊ از ﺗﺎﺑﻊ )(‪ mode‬و ﺑﺮاي ﻣﺸﺎﻫﺪه ﻃﻮل ﯾﮏ ﺷﺊ از ﺗﺎﺑﻊ )(‪ length‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> mode(value.logical‬‬
‫"‪[1] "logical‬‬
‫)‪> length(value.logical‬‬
‫‪[1] 1‬‬

‫)‪> mode(sin‬‬
‫"‪[1] "function‬‬
‫)‪> length(sin‬‬
‫‪[1] 1‬‬

‫‪ .2.1‬ﺑﺮدارﻫﺎ‬

‫ﺑﺮاي ﺳﺎﺧﺖ ﯾﮏ ﺑﺮدار در ‪ R‬از ﺗﺎﺑﻊ )(‪ c‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﻫﻤﭽﻨﯿﻦ ﺑﺮاي ﺗﺨﺼﯿﺺ ﯾﮏ ﺑﺮدار ﺑﻪ ﯾﮏ ﺷﺊ ﻣﯽ ﺗﻮان‬
‫از ﻋﻤﻠﮕﺮ ﺗﺨﺼﯿﺺ ﯾﺎ ﺗﺎﺑﻊ )(‪ assign‬اﺳﺘﻔﺎده ﮐﺮد‪.‬‬
‫ﻣﺜﺎل ‪ :‬ﻫﺮ ﺳﻪ ﻋﺒﺎرت زﯾﺮ ﻣﻌﺎدل ﯾﮑﺪﯾﮕﺮﻧﺪ‪.‬‬

‫)‪> x <- c(10,9,12,15‬‬


‫‪> c(10,9,12,15) -> x‬‬
‫))‪> assign("x",c(10,9,12,15‬‬

‫ﺑﺮاي ﺳﺎﺧﺖ ﯾﮏ ﺑﺮدار ﻣﯽ ﺗﻮان از ﺑﺮدارﻫﺎي دﯾﮕﺮ ﻧﯿﺰ اﺳﺘﻔﺎده ﮐﺮد‪.‬‬


‫ﻣﺜﺎل ‪:‬‬

‫)‪> y <- c(x,14,x,8‬‬

‫‪ .2.1.1‬ﺗﻮﻟﯿﺪ ﺑﺮدار اﻋﺪاد ﻣﺘﻮاﻟﯽ‬

‫ﺑﺮاي ﺗﻮﻟﯿﺪ ﯾﮏ ﺑﺮدار از اﻋﺪاد ﻣﺘﻮاﻟﯽ ﺑﯿﻦ دوﻋﺪد ﻣﯽ ﺗﻮان از ﻋﻤﻠﮕﺮ " ‪ " :‬اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﺑﺮاي ﺗﻮﻟﯿﺪ اﻋﺪاد ﺑﻪ اﯾﻦ ﺷﯿﻮه‬
‫ﻣﯽ ﺗﻮان از ﻋﻤﻠﮕﺮﻫﺎي رﯾﺎﺿﯽ ﻧﯿﺰ اﺳﺘﻔﺎده ﮐﺮد‪.‬‬

‫‪3‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﺜﺎل ‪:‬‬

‫‪> n <- 1:10‬‬


‫‪> n‬‬
‫‪[1] 1 2 3 4 5 6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9 10‬‬
‫)‪> m <- c(1:10‬‬
‫‪> m‬‬
‫‪[1] 1 2 3 4 5 6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9 10‬‬
‫‪> k <- 10:1‬‬
‫‪> k‬‬
‫‪[1] 10 9 8 7 6 5‬‬ ‫‪4‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬
‫)‪> l <- 2*(1:5‬‬
‫‪> l‬‬
‫‪[1] 2 4 6 8 10‬‬
‫‪> p <- 3+5:10‬‬
‫‪> p‬‬
‫‪[1] 8 9 10 11 12 13‬‬

‫راﯾﺞ ﺗﺮﯾﻦ ﺗﺎﺑﻌﯽ ﮐﻪ ﺑﺮاي ﺗﻮﻟﯿﺪ اﻋﺪاد ﻣﺘﻮاﻟﯽ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد ﺗﺎﺑﻊ )(‪ seq‬اﺳﺖ‪ .‬در اﯾﻦ ﺗﺎﺑﻊ ﻣﯽ ﺗـﻮان‬
‫ﺑﺎ ﻣﺸﺨﺺ ﮐﺮدن ﻧﻘﺎط ﺷﺮوع و ﭘﺎﯾﺎن‪ ،‬ﻣﺸﺨﺺ ﮐﺮدن ﮔﺎم اﻓﺰاﯾﺸﯽ ﯾﺎ ﮐﺎﻫﺸﯽ‪ ،‬و ﯾﺎ ﻣﺸﺨﺺ ﮐﺮدن ﻃﻮل ﺑﺮدار ﻣـﻮرد‬
‫ﻧﻈﺮ ﺑﺮداري از اﻋﺪاد ﻣﺘﻮاﻟﯽ ﺗﻮﻟﯿﺪ ﮐﺮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> seq(1,10‬‬
‫‪[1] 1 2 3 4 5 6 7 8 9 10‬‬
‫)‪> seq(1,10,by=2‬‬
‫‪[1] 1 3 5 7 9‬‬
‫)‪> seq(1,by=2,length=10‬‬
‫‪[1] 1 3 5 7 9 11 13 15 17 19‬‬

‫‪ .2.1.2‬ﺗﻮﻟﯿﺪ ﺑﺮدار اﻋﺪاد ﺗﮑﺮاري‬

‫ﺑﺮاي ﺗﮑﺮار اﻋﻀﺎي ﯾﮏ ﺑﺮدار از ﺗﺎﺑﻊ )(‪ rep‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬در اﯾﻦ ﺗﺎﺑﻊ اﺑﺘﺪا ﺑﺎﯾﺪ اﻋﺪادي را ﮐـﻪ ﻣـﯽ ﺧـﻮاﻫﯿﻢ‬
‫ﺗﮑﺮار ﺷﻮﻧﺪ وارد ﮐﻨﯿﻢ‪ ،‬ﺳﭙﺲ ﺑﻮﺳﯿﻠﻪ ﮔﺰﯾﻨﻪ ﻫﺎي =‪ each‬و =‪ times‬ﺑﻪ ﺗﺮﺗﯿﺐ ﺗﻌﺪاد دﻓﻌﺎﺗﯽ را ﮐﻪ ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﺮ‬
‫ﻋﺪد ﺗﮑﺮار ﺷﻮد ﯾﺎ ﮐﻞ اﻋﺪاد ﺗﮑﺮار ﺷﻮﻧﺪ را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪> x <- 1:5‬‬


‫)‪> rep(x,times=5‬‬
‫‪[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5‬‬
‫)‪> rep(x, each=5‬‬
‫‪[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5‬‬
‫)‪> rep(1:4,each=2,times=2‬‬
‫‪[1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4‬‬

‫‪4‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .2.1.3‬ﺗﻮﻟﯿﺪ ﺑﺮدار اﻋﺪاد ﺗﺼﺎدﻓﯽ‬

‫ﺑﺮاي ﺗﻮﻟﯿﺪ ﯾﮏ ﻧﻤﻮﻧﻪ ﺗﺼﺎدﻓﯽ از اﻋﺪاد دﻟﺨﻮاه از ﺗﺎﺑﻊ )(‪ sample‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ‬
‫زﯾﺮ اﺳﺖ‪.‬‬

‫)‪sample(x,size,replace,prob‬‬

‫در اﯾﻦ ﺗﺎﺑﻊ ‪ x‬ﺑﺮداري اﺳﺖ ﮐﻪ ﻣﯽ ﺧﻮاﻫﯿﻢ ﻧﻤﻮﻧﻪ ﻣﻮرد ﻧﻈﺮ از آن ﮔﺮﻓﺘﻪ ﺷﻮد‪ .‬در ﻗﺴﻤﺖ ‪ size‬ﺑﺎﯾﺪ ﺣﺠﻢ ﻧﻤﻮﻧﻪ را‬
‫ﻣﺸﺨﺺ ﮐﻨﯿﻢ‪ .‬در ﻗﺴﻤﺖ ‪ replace‬ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ ﮐﻪ آﯾﺎ ﻧﻤﻮﻧﻪ ﮔﯿﺮي ﺑﺎ ﺟﺎﯾﮕﺬاري ﺑﺎﺷﺪ ﯾﺎ ﺑﺪون ﺟﺎﯾﮕﺬاري‪.‬‬
‫در ﺻﻮرﺗﯽ ﮐﻪ ‪ replace‬را ﻣﺴﺎوي ‪ TRUE‬ﻗﺮار دﻫﯿﻢ ﻧﻤﻮﻧﻪ ﮔﯿﺮي ﺑﺎ ﺟﺎﯾﮕﺬاري اﻧﺠﺎم ﻣﯽ ﺷﻮد و در ﺻﻮرﺗﯽ ﮐـﻪ‬
‫آﻧﺮا ﻣﺴﺎوي ‪ FALSE‬ﻗﺮار دﻫﯿﻢ ﻧﻤﻮﻧﻪ ﮔﯿﺮي ﺑﺪون ﺟﺎﯾﮕﺬاري اﻧﺠﺎم ﺧﻮاﻫﺪ ﺷﺪ‪ .‬در ﻗـﺴﻤﺖ ‪ prob‬ﻧﯿـﺰ ﻣـﯽ ﺗـﻮان‬
‫ﺑﺮداري ﺷﺎﻣﻞ وزن ﻫﺎ وارد ﮐﺮد ﺗﺎ ﻧﻤﻮﻧﻪ ﮔﯿﺮي ﺑﻪ ﺻﻮرت وزﻧﯽ اﻧﺠﺎم ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> sample(1:20, 15, rep=T‬‬


‫‪[1] 7 16 6 20 9 14 9‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪3‬‬ ‫‪5‬‬ ‫‪2 16‬‬ ‫‪7 15‬‬

‫‪ .2.1.4‬اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ ﺑﺮدار‬

‫اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ ﺷﺊ ﻋﺒﺎرت اﺳﺖ از ﻓﺮاﺧﻮاﻧﯽ اﻋﻀﺎي آن ﺷﺊ‪ .‬ﺑﺮاي اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ ﺑﺮدار از ﻋﻼﻣﺖ ﺑﺮاﮐـﺖ‬
‫اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- c(5,10,8,12,6,14‬‬


‫]‪> x[3‬‬
‫‪[1] 8‬‬
‫]‪> x[2:6‬‬
‫‪[1] 10 8 12 6 14‬‬

‫‪ .2.1.5‬اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮﻫﺎ و ﺗﻮاﺑﻊ‬

‫ﺑﺮاي اﻧﺠﺎم ﻋﻤﻠﯿﺎت رﯾﺎﺿﯽ روي ﺑﺮدارﻫﺎ ﻣﯽ ﺗـﻮان از ﻋﻤﻠﮕﺮﻫـﺎي رﯾﺎﺿـﯽ ‪ ، / ، * ، - ، +‬و ^ ) ﺗـﻮان (‪،‬‬
‫)(‪،cos()،sin()،exp()،log‬‬ ‫‪ ) %%‬ﺑﺎﻗﯿﻤﺎﻧــﺪه (‪ ،‬و ‪ ) %/%‬ﺧــﺎرج ﻗــﺴﻤﺖ (‪ ،‬و ﺗﻮاﺑــﻊ رﯾﺎﺿــﯽ ﻣﺎﻧﻨــﺪ‬
‫)(‪ ) sqrt()،tan‬رﯾﺸﻪ دوم (‪ ،‬و ﻏﯿﺮه اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﻫﺮﯾﮏ از ﻋﻤﻠﮕﺮﻫﺎ و ﺗﻮاﺑﻊ ﻓﻮق ﺑﻪ ﺻﻮرت ﻋﻀﻮ ﺑـﻪ ﻋـﻀﻮ‬
‫روي ﻋﻨﺎﺻﺮ ﺑﺮدار ﻋﻤﻞ ﻣﯽ ﮐﻨﻨﺪ‪ .‬ﻣﺜﻼ در دﺳﺘﻮر ‪ y+1‬ﻫﺮ ﻋﻀﻮ ﺑﺮدار ‪ y‬ﺑﺎ ﻋﺪد ﯾﮏ ﺟﻤﻊ ﻣﯽ ﺷﻮد‪ .‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﯾـﻦ‬
‫ﺧﺎﺻﯿﺖ ﺑﺮاي اﻋﻤﺎل ﻋﻤﻠﮕﺮﻫﺎ روي ﺑﺮدارﻫﺎ ﻧﯿﺎزي ﻧﯿﺴﺖ ﮐﻪ ﺑﺮدارﻫﺎ داراي ﻃﻮل ﯾﮑﺴﺎن ﺑﺎﺷﻨﺪ‪ .‬ﻫﻤـﻮاره ﻃـﻮل ﻫﻤـﻪ‬
‫ﺑﺮدارﻫﺎي ﻣﻮﺟﻮد در ﯾﮏ ﻋﺒﺎرت رﯾﺎﺿﯽ ﺑﻪ اﻧﺪازه ﻃﻮل ﺑﺰرﮔﺘﺮﯾﻦ ﺑﺮدار ﻣﻮﺟﻮد در ﻋﺒﺎرت در ﺧﻮاﻫﻨﺪ آﻣﺪ‪ .‬در ﻣـﻮرد‬
‫ﺑﺮدارﻫﺎ ﻣﯽ ﺗﻮان از ﺑﺮﺧﯽ ﺗﻮاﺑﻊ آﻣﺎري ﻧﯿﺰ اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﺗﻮاﺑﻊ )(‪ min‬و )(‪ max‬ﺑـﻪ ﺗﺮﺗﯿـﺐ ﮐـﻮﭼﮑﺘﺮﯾﻦ ﻋـﻀﻮ و‬

‫‪5‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﺑﺰرﮔﺘﺮﯾﻦ ﻋﻀﻮ ﯾﮏ ﺑﺮدار را اراﺋﻪ ﻣﯽ ﮐﻨﻨﺪ‪ .‬ﺗﺎﺑﻊ )(‪ range‬ﺑﺮداري ﺑﺎ دو ﻋﻀﻮ اراﺋﻪ ﻣﯽ ﮐﻨﺪ ﮐـﻪ آن دو ﻋـﻀﻮ ﺑـﻪ‬
‫ﺗﺮﺗﯿﺐ ﮐﻮﭼﮑﺘﺮﯾﻦ و ﺑﺰرﮔﺘﺮﯾﻦ ﻋﻀﻮ ﺑﺮدارﻣﻮرد ﻧﻈﺮ ﻫﺴﺘﻨﺪ‪ .‬ﺗﺎﺑﻊ )(‪ length‬ﻃﻮل ﯾﮏ ﺑﺮدار‪ ،‬ﺗﺎﺑﻊ )(‪ sum‬ﺣﺎﺻﻞ‬
‫ﺟﻤﻊ اﻋﻀﺎي ﯾﮏ ﺑﺮدار‪ ،‬و ﺗﺎﺑﻊ )(‪ prod‬ﺣﺎﺻﻞ ﺿﺮب اﻋـﻀﺎي ﯾـﮏ ﺑـﺮدار را اراﺋـﻪ ﻣـﯽ ﮐﻨـﺪ‪ .‬ﻫﻤﭽﻨـﯿﻦ ﺗﻮاﺑـﻊ‬
‫)(‪ mean‬و )(‪ var‬و )(‪ sd‬ﺑﻪ ﺗﺮﺗﯿﺐ ﻣﯿﺎﻧﮕﯿﻦ و وارﯾـﺎﻧﺲ و اﻧﺤـﺮاف اﺳـﺘﺎﻧﺪارد اﻋـﻀﺎي ﯾـﮏ ﺑـﺮدار را اراﺋـﻪ‬
‫ﻣﯽ ﮐﻨﻨﺪ‪ .‬ﺗﻮاﺑﻊ )(‪ cor‬و )(‪ cov‬ﺑﻪ ﺗﺮﺗﯿﺐ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﻫﻤﺒﺴﺘﮕﯽ و ﮐﻮارﯾﺎﻧﺲ ﻣﯿﺎن اﻋﻀﺎي ﯾـﮏ ﺑـﺮدار ﻣـﻮرد‬
‫اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮﻧﺪ‪ .‬از ﺗﻮاﺑﻊ )(‪ summary‬و )(‪ quantile‬ﻧﯿﺰ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﭼﻨﺪك ﻫﺎ اﺳـﺘﻔﺎده ﻣـﯽ ﺷـﻮد‪.‬‬
‫ﺗﺎﺑﻊ )(‪ sort‬اﻋﻀﺎي ﯾﮏ ﺑﺮدار را ﺑﻪ ﺻﻮرت ﺻﻌﻮدي ﻣﺮﺗﺐ ﻣﯽ ﮐﻨﺪ‪ .‬از ﺗﺎﺑﻊ)(‪ round‬ﻧﯿـﺰ ﺑـﺮاي ﮔـﺮد ﮐـﺮدن‬
‫اﻋﺪاد ﺗﺎ رﻗﻢ اﻋﺸﺎر دﻟﺨﻮاه اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- c(15,14,19,18,20,15,16,17,18,14‬‬


‫)‪> sum(x);prod(x‬‬
‫‪[1] 166‬‬
‫‪[1] 1.476849e+12‬‬
‫)‪> mean(x);var(x);sd(x‬‬
‫‪[1] 16.6‬‬
‫‪[1] 4.488889‬‬
‫‪[1] 2.1187‬‬
‫)‪> sort(x‬‬
‫‪[1] 14 14 15 15 16 17 18 18 19 20‬‬
‫)‪> summary(x‬‬
‫‪Min. 1st Qu. Median‬‬ ‫‪Mean 3rd Qu.‬‬ ‫‪Max.‬‬
‫‪14.0‬‬ ‫‪15.0‬‬ ‫‪16.5‬‬ ‫‪16.6‬‬ ‫‪18.0‬‬ ‫‪20.0‬‬
‫)‪> quantile(x‬‬
‫‪0% 25% 50% 75% 100%‬‬
‫‪14.0 15.0 16.5 18.0 20.0‬‬
‫‪> x <- x+0.375*x‬‬
‫‪> x‬‬
‫‪[1] 20.625 19.250 26.125 24.750 27.500 20.625 22.000 23.375 24.750‬‬
‫‪19.250‬‬
‫)‪> round(x,2‬‬
‫‪[1] 20.62 19.25 26.12 24.75 27.50 20.62 22.00 23.38 24.75 19.25‬‬

‫‪ .2.1.6‬داده ﻫﺎي ﮔﻤﺸﺪه‬

‫ﺑﺮاي ﻣﻌﺮﻓﯽ داده ﻫﺎي ﮔﻤﺸﺪه در ﯾﮏ ﺑﺮدار از ﻋﺒﺎرت ‪ NA‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺮاي ﺑﺮرﺳﯽ داده ﻫﺎي ﮔﻤﺸﺪه در ﯾـﮏ‬
‫ﺑﺮدار از ﺗﺎﺑﻊ )(‪ is.na‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬اﯾﻦ ﺗﺎﺑﻊ ﺑﺮداري ﻣﻨﻄﻘﯽ ﺑﻪ ﻃﻮل ﺑﺮدار ﻣﻮرد ﻧﻈﺮ اراﺋﻪ ﻣﯽ دﻫﺪ ﮐﻪ ﻣﻘﺎدﯾﺮ‬
‫ﮔﻤﺸﺪه ﻣﺘﻨﺎﻇﺮ ﺑﺎ اﻋﻀﺎي ﺑﺮدار در آن ﺑﺎ ‪ TRUE‬ﻧﺸﺎن داده ﺷﺪه اﻧﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- c(2,5,NA,3,NA‬‬


‫)‪> is.na(x‬‬
‫‪[1] FALSE FALSE TRUE FALSE‬‬ ‫‪TRUE‬‬

‫‪6‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .2.1.7‬ﺑﺮدار ﮐﺎراﮐﺘﺮﻫﺎ‬

‫ﺑﺮدار ﮐﺎراﮐﺘﺮﻫﺎ ﻧﯿﺰ ﻫﻤﺎﻧﻨﺪ ﺑﺮدار اﻋﺪاد ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ c‬ﺳﺎﺧﺘﻪ ﻣﯽ ﺷﻮد‪ .‬ﺑﺮاي اﯾﺠﺎد ﯾﮏ ﺑـﺮدار از ﮐﺎراﮐﺘﺮﻫـﺎ‬
‫ﺑﺎﯾﺪ آﻧﻬﺎ را درون ﻋﻼﻣﺖ ﻫﺎي " ﯾﺎ ' ﻗﺮار داد‪ .‬در ﯾﮏ ﺑﺮدار از ﮐﺎراﮐﺘﺮﻫﺎ ﻣﯽ ﺗﻮان از ‪ \n‬ﺑﺮاي رﻓﺘﻦ ﺑﻪ ﺧﻂ ﺟﺪﯾﺪ‪،‬‬
‫از ‪ \t‬ﺑﺮا ي ﺟﻬﺶ‪ ،‬و از ‪ \b‬ﺑﺮاي ﺑﺎزﮔﺸﺖ اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﻫﻤﭽﻨﯿﻦ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ paste‬ﻣﯽ ﺗﻮان دﻧﺒﺎﻟﻪ اي‬
‫از اﻋﺪاد را ﺑﻪ ﮐﺎراﮐﺘﺮﻫﺎ ﺗﺨﺼﯿﺺ داد‪ .‬در ﺗﺎﺑﻊ )(‪ paste‬ﺑﺎ اﺳﺘﻔﺎده از ﮔﺰﯾﻨﻪ =‪ sep‬ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ ﮐﻪ ﮐﺎراﮐﺘﺮﻫﺎ‬
‫و اﻋﺪاد ﺑﻪ وﺳﯿﻠﻪ ﭼﻪ ﮐﺎراﮐﺘﺮي از ﻫﻢ ﺟﺪا ﺷﻮﻧﺪ‪.‬‬
‫ﻣﺜﺎل‪:‬‬

‫)""=‪> paste(c("X"),1:10,sep‬‬
‫"‪[1] "X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9‬‬ ‫"‪"X10‬‬
‫)""=‪> paste(c("X","Y"),rep(1:5,each=2),sep‬‬
‫"‪[1] "X1" "Y1" "X2" "Y2" "X3" "Y3" "X4" "Y4" "X5" "Y5‬‬

‫‪letters‬‬ ‫ﺑﺮاي ﺗﻮﻟﯿﺪ ﺑﺮدارﻫﺎﯾﯽ از ﺣﺮوف ﻣﯽ ﺗﻮان از ﺑﺮدارﻫﺎي ‪ letters‬و ‪ LETTERS‬اﺳﺘﻔﺎده ﮐﺮد‪ .‬دو ﺑﺮدار‬
‫و ‪ LETTERS‬ﺑﻪ ﺗﺮﺗﯿﺐ ﺷﺎﻣﻞ ‪ 26‬ﺣﺮف ﮐﻮﭼﮏ و ﺑﺰرگ ﻫﺴﺘﻨﺪ ﮐﻪ ﺑﺎ اﯾﻨﺪﮐﺲ ﮐﺮدن اﯾﻦ ﺑﺮدارﻫﺎ ﻣﯽ ﺗﻮان ﺑﻪ اﯾـﻦ‬
‫ﺣﺮوف دﺳﺖ ﯾﺎﻓﺖ‪.‬‬
‫ﻣﺜﺎل‪:‬‬

‫]‪> letters[1:10‬‬
‫"‪[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j‬‬
‫]‪> LETTERS[10:20‬‬
‫"‪[1] "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T‬‬

‫‪ .2.2‬ﻓﺎﮐﺘﻮرﻫﺎ‬

‫ﻓﺎﮐﺘﻮرﻫﺎ از ﻟﺤﺎظ ﺳﺎﺧﺘﺎري ﺑﺴﯿﺎر ﺷﺒﯿﻪ ﺑﺮدارﻫﺎ ﻫﺴﺘﻨﺪ‪ .‬از ﻓﺎﮐﺘﻮرﻫﺎ ﺑﺮاي ﮔﺮوه ﺑﻨﺪي و اﯾﺠﺎد ﺗﻤـﺎﯾﺰ ﺑـﯿﻦ داده ﻫـﺎي‬
‫ﺑﺮدارﻫﺎ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﻓﺎﮐﺘﻮرﻫﺎ را ﻣﯽ ﺗﻮان ﺑﻪ ﻃﻮر ﻣﺴﺘﻘﯿﻢ ﺗﻮﻟﯿﺪ ﮐﺮده و ﯾﺎ ﯾﮏ ﺑﺮدار را ﺑﻪ ﯾﮏ ﻓﺎﮐﺘﻮر ﺗﺒﺪﯾﻞ ﮐﺮد‪.‬‬
‫ﺑﺮاي ﺗﺒﺪﯾﻞ ﯾﮏ ﺑﺮدار ﺑﻪ ﯾﮏ ﻓﺎﮐﺘﻮر از ﺗﺎﺑﻊ )(‪ factor‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪ :‬در ﻣﻮرد ﮔﺮوﻫﯽ از اﻓﺮاد ﺟﻨﺴﯿﺖ و ﺳﻦ را در دو ﺑﺮدار ‪ sex‬و ‪ age‬ﺛﺒﺖ ﮐﺮده اﯾﻢ‪ .‬ﻣﯽ ﺧﻮاﻫﯿﻢ از ﺑﺮدار ‪sex‬‬
‫ﺑﻪ ﻋﻨﻮان ﻓﺎﮐﺘﻮري ﺑﺮاي دﺳﺘﻪ ﺑﻨﺪي داده ﻫﺎي ﺑﺮدار ‪ age‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪.‬‬

‫>‬ ‫)"‪sex <- c( "f","f","f","m","f","m","f","m","f","m‬‬


‫>‬ ‫)‪age <- c(25,30,23,25,28,26,29,27,24,28‬‬
‫>‬ ‫)‪sex.f <- factor(sex‬‬
‫>‬ ‫‪sex.f‬‬
‫‪[1] f f f m f m f m f m‬‬
‫‪Levels: f m‬‬

‫‪7‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .2.2.1‬اﺳﺘﻔﺎده از ﯾﮏ ﺗﺎﺑﻊ ﺑﺮ ﺣﺴﺐ ﯾﮏ ﻓﺎﮐﺘﻮر‬

‫ﺑﺎ اﺳﺘﻔﺎده ازﺗﺎﺑﻊ )(‪ tapply‬ﻣﯽ ﺗﻮان ﯾﮏ ﺗﺎﺑﻊ را ﺑﺮ ﺣﺴﺐ ﯾﮏ ﻓـﺎﮐﺘﻮر روي ﯾـﮏ ﺑـﺮدار اﻋﻤـﺎل ﮐـﺮد‪ .‬در ﺗـﺎﺑﻊ‬
‫)(‪ tapply‬ﺑﺎﯾﺪ ﺑﺮدار داده ﻫﺎ‪ ،‬ﻓﺎﮐﺘﻮر‪ ،‬و ﺗﺎﺑﻊ ﻣﻮرد ﻧﻈﺮ را وارد ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪ :‬در ﻣﻮرد داده ﻫﺎي ﺳﻦ در ﻣﺜﺎل ﻗﺒﻞ ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﯿﺎﻧﮕﯿﻦ ﺳﻦ را ﺑﺮاي ﻫﺮ ﺟﻨﺲ ﻣﺤﺎﺳﺒﻪ ﮐﻨﯿﻢ‪.‬‬

‫)‪> tapply(age,sex.f,mean‬‬
‫‪f‬‬ ‫‪m‬‬
‫‪26.5 26.5‬‬

‫‪.2.2.2‬ﺗﻮﻟﯿﺪ ﻓﺎﮐﺘﻮرﻫﺎي داراي اﻟﮕﻮ‬

‫ﺑﺮاي ﺗﻮﻟﯿﺪ ﯾﮏ ﻓﺎﮐﺘﻮر ﺑﺎ اﻟﮕﻮي ﻣﺸﺨﺺ از ﺗﺎﺑﻊ )(‪ gl‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‪.‬‬

‫) ‪gl(n,k,length,labels,ordered‬‬

‫در اﯾﻦ ﺗﺎﺑﻊ ‪ n‬ﻣﺸﺨﺺ ﮐﻨﻨﺪه ﺗﻌﺪاد ﺳﻄﻮح‪ k ،‬ﻣﺸﺨﺺ ﮐﻨﻨﺪه ﺗﻌﺪاد ﺗﮑﺮارﻫﺎ‪ length ،‬ﻣﺸﺨﺺ ﮐﻨﻨﺪه ﻃﻮل ﻓﺎﮐﺘﻮر‪،‬‬
‫و ‪ labels‬ﻣﺸﺨﺺ ﮐﻨﻨﺪه ﺑﺮﭼﺴﺐ ﺳﻄﻮح ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﻫﭽﻨﯿﻦ ‪ ordered‬ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﺳﻄﻮح ﻣﺮﺗﺐ ﺷـﺪه‬
‫ﺑﺎﺷﻨﺪ ﯾﺎ ﻧﻪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> gl(5,2‬‬
‫‪[1] 1 1 2 2 3 3 4 4 5 5‬‬
‫‪Levels: 1 2 3 4 5‬‬
‫)‪> gl(5,1,10‬‬
‫‪[1] 1 2 3 4 5 1 2 3 4 5‬‬
‫‪Levels: 1 2 3 4 5‬‬
‫)]‪> gl(5,1,10,labels=LETTERS[1:5‬‬
‫‪[1] A B C D E A B C D E‬‬
‫‪Levels: A B C D E‬‬

‫‪ .2.3‬آراﯾﻪ ﻫﺎ و ﻣﺎﺗﺮﯾﺲ ﻫﺎ‬

‫آراﯾﻪ ﻫﺎ ﯾﮑﯽ از اﺷﯿﺎء ﻣﻮﺟﻮد در ‪ R‬ﺑﺮاي ﮐﺎر ﺑﺎ داده ﻫﺎ ﻫﺴﺘﻨﺪ ﮐﻪ ﻣﺎ را ﻗﺎدر ﻣﯽ ﺳﺎزﻧﺪ ﺗﺎ داده ﻫﺎ را ﺑﻪ ﺻﻮرت ﭼﻨﺪ‬
‫ﺑﻌﺪي ﻧﮕﻪ داري ﮐﺮده و ﺑﺎ آﻧﻬﺎ ﮐﺎر ﮐﻨﯿﻢ‪ .‬در ﺧﺎﻟﺖ ﺧﺎص ﺑﺮدارﻫﺎ آراﯾﻪ ﻫﺎي ﯾﮏ ﺑﻌﺪي و ﻣﺎﺗﺮﯾﺲ ﻫﺎ آراﯾﻪ ﻫـﺎي دو‬
‫ﺑﻌﺪي ﻫﺴﺘﻨﺪ‪ .‬ﺳﺎده ﺗﺮﯾﻦ راه ﺳﺎﺧﺘﻦ ﯾﮏ آراﯾﻪ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ dim‬و ﺗﺒﺪﯾﻞ ﯾﮏ ﺑﺮدار ﺑﻪ ﯾﮏ آراﯾﻪ اﺳﺖ‪ .‬ﺑﺮاي‬
‫ﺗﺒﺪﯾﻞ ﯾﮏ ﺑﺮدار از داده ﻫﺎ ﺑﻪ ﯾﮏ آراﯾﻪ ﮐﺎﻓﯿﺴﺖ ﯾﮏ ﺑﺮدار ﺑﻌﺪ را ﺷﺎﻣﻞ اﻧﺪازه ﻃﻮل ﻫﺎي ﻣﻮرد ﻧﻈﺮ ﺑـﺮاي ﻫـﺮ ﺑﻌـﺪ‬
‫آراﯾﻪ ﺑﻪ ﺗﺎﺑﻊ )(‪ dim‬ﺗﺨﺼﯿﺺ دﻫﯿﻢ‪.‬‬

‫‪8‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫‪x <- 1:18‬‬


‫>‬ ‫)‪dim(x) <- c(2,3,3‬‬
‫>‬ ‫‪x‬‬
‫‪,‬‬ ‫‪, 1‬‬

‫]‪[,1] [,2] [,3‬‬


‫]‪[1,‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪5‬‬
‫]‪[2,‬‬ ‫‪2‬‬ ‫‪4‬‬ ‫‪6‬‬

‫‪, , 2‬‬

‫]‪[,1] [,2] [,3‬‬


‫]‪[1,‬‬ ‫‪7‬‬ ‫‪9‬‬ ‫‪11‬‬
‫]‪[2,‬‬ ‫‪8‬‬ ‫‪10‬‬ ‫‪12‬‬

‫‪, , 3‬‬

‫]‪[,1] [,2] [,3‬‬


‫]‪[1,‬‬ ‫‪13‬‬ ‫‪15‬‬ ‫‪17‬‬
‫]‪[2,‬‬ ‫‪14‬‬ ‫‪16‬‬ ‫‪18‬‬
‫)‪> dim(x) <- c(3,6‬‬
‫‪> x‬‬
‫]‪[,1] [,2] [,3] [,4] [,5] [,6‬‬
‫]‪[1,‬‬ ‫‪1‬‬ ‫‪4‬‬ ‫‪7‬‬ ‫‪10‬‬ ‫‪13‬‬ ‫‪16‬‬
‫]‪[2,‬‬ ‫‪2‬‬ ‫‪5‬‬ ‫‪8‬‬ ‫‪11‬‬ ‫‪14‬‬ ‫‪17‬‬
‫]‪[3,‬‬ ‫‪3‬‬ ‫‪6‬‬ ‫‪9‬‬ ‫‪12‬‬ ‫‪15‬‬ ‫‪18‬‬

‫ﯾﮏ راه دﯾﮕﺮ ﺳﺎﺧﺘﻦ آراﯾﻪ ﻫﺎ و ﻣﺎﺗﺮﯾﺲ ﻫﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ array‬اﺳﺖ‪ .‬ﺑﺮاي ﺳﺎﺧﺘﻦ ﯾﮏ آراﯾﻪ ﺑﺎ اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ‬
‫ﺑﺮدار داده ﻫﺎ و ﺑﺮدار ﺑﻌﺪ را در ﺗﺎﺑﻊ ﻣﺸﺨﺺ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪> x <- 1:20‬‬


‫))‪> y <- array(x,c(5,4‬‬
‫‪> y‬‬
‫]‪[,1] [,2] [,3] [,4‬‬
‫]‪[1,‬‬ ‫‪1‬‬ ‫‪6‬‬ ‫‪11‬‬ ‫‪16‬‬
‫]‪[2,‬‬ ‫‪2‬‬ ‫‪7‬‬ ‫‪12‬‬ ‫‪17‬‬
‫]‪[3,‬‬ ‫‪3‬‬ ‫‪8‬‬ ‫‪13‬‬ ‫‪18‬‬
‫]‪[4,‬‬ ‫‪4‬‬ ‫‪9‬‬ ‫‪14‬‬ ‫‪19‬‬
‫]‪[5,‬‬ ‫‪5‬‬ ‫‪10‬‬ ‫‪15‬‬ ‫‪20‬‬
‫))‪> z <- array(0,c(2,3‬‬
‫‪> z‬‬
‫]‪[,1] [,2] [,3‬‬
‫]‪[1,‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬
‫]‪[2,‬‬ ‫‪0‬‬ ‫‪0‬‬ ‫‪0‬‬

‫‪9‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .2.3.1‬اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ آراﯾﻪ‬

‫ﺑﺮاي اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ آراﯾﻪ از ﻋﻼﻣﺖ ﺑﺮاﮐﺖ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬


‫ﻣﺜﺎل ‪:‬‬

‫‪> x <- 1:20‬‬


‫]‪> x[15‬‬
‫‪[1] 15‬‬
‫)‪> dim(x) <- c(4,5‬‬
‫‪> x‬‬
‫]‪[,1] [,2] [,3] [,4] [,5‬‬
‫]‪[1,‬‬ ‫‪1‬‬ ‫‪5‬‬ ‫‪9‬‬ ‫‪13‬‬ ‫‪17‬‬
‫]‪[2,‬‬ ‫‪2‬‬ ‫‪6‬‬ ‫‪10‬‬ ‫‪14‬‬ ‫‪18‬‬
‫]‪[3,‬‬ ‫‪3‬‬ ‫‪7‬‬ ‫‪11‬‬ ‫‪15‬‬ ‫‪19‬‬
‫]‪[4,‬‬ ‫‪4‬‬ ‫‪8‬‬ ‫‪12‬‬ ‫‪16‬‬ ‫‪20‬‬
‫]‪> x[3,4‬‬
‫‪[1] 15‬‬

‫‪ .2.3.2‬ﺳﺎﺧﺘﻦ ﻣﺎﺗﺮﯾﺲ‬

‫ﺑﺮاي ﺳﺎﺧﺖ ﯾﮏ ﻣﺎﺗﺮﯾﺲ ﻋـﻼوه ﺑـﺮ ﺗـﺎﺑﻊ )(‪ dim‬ﻣـﯽ ﺗـﻮان از ﺗـﺎﺑﻊ )(‪ matrix‬ﻧﯿـﺰ اﺳـﺘﻔﺎده ﮐـﺮد‪ .‬در ﺗـﺎﺑﻊ‬
‫)(‪ matrix‬ﺑﺎﯾﺪ ﺑﺮدار داده ﻫﺎ‪ ،‬ﺗﻌﺪاد ﺳﻄﺮ‪ ،‬و ﺗﻌﺪاد ﺳﺘﻮن را وارد ﮐﻨﯿﻢ‪ .‬در ﺻﻮرﺗﯽ ﮐﻪ ﺑﺨﻮاﻫﯿﻢ ﻣﺎﺗﺮﯾﺲ داده ﻫﺎي‬
‫ﺑﺮدار را ﺑﻪ ﺻﻮرت ﺳﻄﺮي ﻣﺮﺗﺐ ﮐﻨﺪ ﻗﺴﻤﺖ =‪ byrow‬را ﻣﺴﺎوي ‪ TRUE‬ﻗﺮار ﻣﯽ دﻫﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪> x <- 1:20‬‬


‫)‪> matrix(x,4,5‬‬
‫]‪[,1] [,2] [,3] [,4] [,5‬‬
‫]‪[1,‬‬ ‫‪1‬‬ ‫‪5‬‬ ‫‪9‬‬ ‫‪13‬‬ ‫‪17‬‬
‫]‪[2,‬‬ ‫‪2‬‬ ‫‪6‬‬ ‫‪10‬‬ ‫‪14‬‬ ‫‪18‬‬
‫]‪[3,‬‬ ‫‪3‬‬ ‫‪7‬‬ ‫‪11‬‬ ‫‪15‬‬ ‫‪19‬‬
‫]‪[4,‬‬ ‫‪4‬‬ ‫‪8‬‬ ‫‪12‬‬ ‫‪16‬‬ ‫‪20‬‬
‫)‪> matrix(x,4,5,byrow=T‬‬
‫]‪[,1] [,2] [,3] [,4] [,5‬‬
‫]‪[1,‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬
‫]‪[2,‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬
‫]‪[3,‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬
‫]‪[4,‬‬ ‫‪16‬‬ ‫‪17‬‬ ‫‪18‬‬ ‫‪19‬‬ ‫‪20‬‬

‫‪ .2.3.3‬ﮐﺎر ﺑﺎ ﻣﺎﺗﺮﯾﺲ ﻫﺎ‬

‫ﺑﺮاي ﮐﺎر ﺑﺎ ﻣﺎﺗﺮﯾﺲ ﻫﺎ در ‪ R‬ﺗﻮاﺑﻊ و ﻗﺎﺑﻠﯿﺖ ﻫﺎﯾﯽ وﺟﻮد دارد ﮐﻪ ﺑﻪ ﺑﺮﺧﯽ از آﻧﻬﺎ اﺷﺎره ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﺑﺮاي ﺗﺮاﻧﻬﺎده ﮐﺮدن ﯾﮏ ﻣﺎﺗﺮﯾﺲ از ﺗﺎﺑﻊ )(‪ ، t‬ﺑﺮاي ﻧﻤﺎﯾﺶ ﺗﻌﺪاد ﺳﻄﺮﻫﺎي ﯾﮏ ﻣﺎﺗﺮﯾﺲ از ﺗﺎﺑﻊ )(‪ ، nrow‬و ﺑﺮاي‬
‫ﻧﻤﺎﯾﺶ ﺗﻌﺪاد ﺳﺘﻮن ﻫﺎي ﯾﮏ ﻣﺎﺗﺮﯾﺲ از ﺗﺎﺑﻊ )(‪ ncol‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫‪10‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﺜﺎل ‪:‬‬

‫‪> y‬‬
‫]‪[,1] [,2] [,3] [,4‬‬
‫]‪[1,‬‬ ‫‪1‬‬ ‫‪6‬‬ ‫‪11‬‬ ‫‪16‬‬
‫]‪[2,‬‬ ‫‪2‬‬ ‫‪7‬‬ ‫‪12‬‬ ‫‪17‬‬
‫]‪[3,‬‬ ‫‪3‬‬ ‫‪8‬‬ ‫‪13‬‬ ‫‪18‬‬
‫]‪[4,‬‬ ‫‪4‬‬ ‫‪9‬‬ ‫‪14‬‬ ‫‪19‬‬
‫]‪[5,‬‬ ‫‪5‬‬ ‫‪10‬‬ ‫‪15‬‬ ‫‪20‬‬
‫)‪> nrow(y‬‬
‫‪[1] 5‬‬
‫)‪> ncol(y‬‬
‫‪[1] 4‬‬
‫)‪> t(y‬‬
‫]‪[,1] [,2] [,3] [,4] [,5‬‬
‫]‪[1,‬‬ ‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬
‫]‪[2,‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬
‫]‪[3,‬‬ ‫‪11‬‬ ‫‪12‬‬ ‫‪13‬‬ ‫‪14‬‬ ‫‪15‬‬
‫]‪[4,‬‬ ‫‪16‬‬ ‫‪17‬‬ ‫‪18‬‬ ‫‪19‬‬ ‫‪20‬‬

‫ﺑﺮاي ﺿﺮب اﻋﻀﺎي ﻣﺘﻨﺎﻇﺮ دو ﻣﺎﺗﺮﯾﺲ در ﻫﻢ در ﻣﺎﺗﺮﯾﺲ ﻫﺎي ﻫﻢ ﻣﺮﺗﺒـﻪ از " * "‪ ،‬و ﺑـﺮاي ﺿـﺮب ﻣﺎﺗﺮﯾـﺴﯽ دو‬
‫ﻣﺎﺗﺮﯾﺲ در ﻫﻢ از " ‪ " %*%‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪> m‬‬
‫]‪[,1] [,2] [,3] [,4] [,5‬‬
‫]‪[1,‬‬ ‫‪2‬‬ ‫‪12‬‬ ‫‪22‬‬ ‫‪32‬‬ ‫‪42‬‬
‫]‪[2,‬‬ ‫‪4‬‬ ‫‪14‬‬ ‫‪24‬‬ ‫‪34‬‬ ‫‪44‬‬
‫]‪[3,‬‬ ‫‪6‬‬ ‫‪16‬‬ ‫‪26‬‬ ‫‪36‬‬ ‫‪46‬‬
‫]‪[4,‬‬ ‫‪8‬‬ ‫‪18‬‬ ‫‪28‬‬ ‫‪38‬‬ ‫‪48‬‬
‫]‪[5,‬‬ ‫‪10‬‬ ‫‪20‬‬ ‫‪30‬‬ ‫‪40‬‬ ‫‪50‬‬
‫‪> n‬‬
‫]‪[,1] [,2] [,3] [,4] [,5‬‬
‫]‪[1,‬‬ ‫‪3‬‬ ‫‪18‬‬ ‫‪33‬‬ ‫‪48‬‬ ‫‪63‬‬
‫]‪[2,‬‬ ‫‪6‬‬ ‫‪21‬‬ ‫‪36‬‬ ‫‪51‬‬ ‫‪66‬‬
‫]‪[3,‬‬ ‫‪9‬‬ ‫‪24‬‬ ‫‪39‬‬ ‫‪54‬‬ ‫‪69‬‬
‫]‪[4,‬‬ ‫‪12‬‬ ‫‪27‬‬ ‫‪42‬‬ ‫‪57‬‬ ‫‪72‬‬
‫]‪[5,‬‬ ‫‪15‬‬ ‫‪30‬‬ ‫‪45‬‬ ‫‪60‬‬ ‫‪75‬‬
‫‪> m*n‬‬
‫]‪[,1‬‬ ‫]‪[,2‬‬ ‫]‪[,3‬‬ ‫]‪[,4‬‬ ‫]‪[,5‬‬
‫]‪[1,‬‬ ‫‪6‬‬ ‫‪216‬‬ ‫‪726‬‬ ‫‪1536‬‬ ‫‪2646‬‬
‫]‪[2,‬‬ ‫‪24‬‬ ‫‪294‬‬ ‫‪864‬‬ ‫‪1734‬‬ ‫‪2904‬‬
‫]‪[3,‬‬ ‫‪54‬‬ ‫‪384‬‬ ‫‪1014‬‬ ‫‪1944‬‬ ‫‪3174‬‬
‫]‪[4,‬‬ ‫‪96‬‬ ‫‪486‬‬ ‫‪1176‬‬ ‫‪2166‬‬ ‫‪3456‬‬
‫‪[5,] 150‬‬ ‫‪600‬‬ ‫‪1350‬‬ ‫‪2400‬‬ ‫‪3750‬‬
‫‪> m%*%n‬‬
‫]‪[,1‬‬ ‫]‪[,2‬‬ ‫]‪[,3‬‬ ‫]‪[,4] [,5‬‬
‫‪[1,] 1290‬‬ ‫‪2940‬‬ ‫‪4590‬‬ ‫‪6240 7890‬‬
‫‪[2,] 1380‬‬ ‫‪3180‬‬ ‫‪4980‬‬ ‫‪6780 8580‬‬
‫‪[3,] 1470‬‬ ‫‪3420‬‬ ‫‪5370‬‬ ‫‪7320 9270‬‬
‫‪[4,] 1560‬‬ ‫‪3660‬‬ ‫‪5760‬‬ ‫‪7860 9960‬‬
‫‪[5,] 1650‬‬ ‫‪3900‬‬ ‫‪6150‬‬ ‫‪8400 10650‬‬

‫‪11‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﻣﻌﮑﻮس ﯾﮏ ﻣﺎﺗﺮﯾﺲ و ﯾﺎ ﺣﻞ ﯾﮏ ﻣﻌﺎدﻟﻪ ﻣﺎﺗﺮﯾﺴﯽ از ﺗﺎﺑﻊ )(‪ solve‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬اﮔﺮ در اﯾـﻦ‬
‫ﺗﺎﺑﻊ ﻓﻘﻂ ﯾﮏ ﻣﺎﺗﺮﯾﺲ را وارد ﮐﻨﯿﻢ ﻣﻌﮑﻮس آن ﻣﺎﺗﺮﯾﺲ ﻣﺤﺎﺳﺒﻪ ﺧﻮاﻫﺪ ﺷﺪ‪ ،‬و اﮔﺮ ﻋﻼوه ﺑﺮ ﯾﮏ ﻣﺎﺗﺮﯾﺲ ﺿـﺮاﯾﺐ‬
‫ﻣﺎﺗﺮﯾﺲ ﭘﺎﺳﺦ را ﻧﯿﺰ وارد ﮐﻨﯿﻢ ﺟﻮاب ﻣﻌﺎدﻟﻪ ﻣﺎﺗﺮﯾﺴﯽ ﺑﻪ ﺷﮑﻞ ‪ b=AX‬ﻣﺤﺎﺳﺒﻪ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪> b‬‬
‫]‪[,1‬‬
‫]‪[1,‬‬ ‫‪4.5‬‬
‫]‪[2,‬‬ ‫‪6.0‬‬
‫]‪[3,‬‬ ‫‪7.5‬‬
‫]‪[4,‬‬ ‫‪9.0‬‬
‫‪> A‬‬
‫]‪[,1] [,2] [,3] [,4‬‬
‫]‪[1,‬‬ ‫‪0‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬
‫]‪[2,‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪3‬‬ ‫‪2‬‬
‫]‪[3,‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬ ‫‪3‬‬
‫]‪[4,‬‬ ‫‪3‬‬ ‫‪2‬‬ ‫‪1‬‬ ‫‪0‬‬
‫)‪> solve(A‬‬
‫]‪[,1‬‬ ‫]‪[,2‬‬ ‫]‪[,3‬‬ ‫]‪[,4‬‬
‫‪[1,] -0.20833333 0.04166667 0.04166667 0.29166667‬‬
‫‪[2,] 0.29166667 -0.20833333 0.04166667 0.04166667‬‬
‫‪[3,] 0.04166667 0.29166667 -0.20833333 0.04166667‬‬
‫‪[4,] 0.04166667 0.04166667 0.29166667 -0.20833333‬‬
‫)‪> solve(A,b‬‬
‫]‪[,1‬‬
‫‪[1,] 2.25‬‬
‫‪[2,] 0.75‬‬
‫‪[3,] 0.75‬‬
‫‪[4,] 0.75‬‬

‫ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﻣﻘﺎدﯾﺮ وﯾﮋه و ﺑﺮدارﻫﺎي وﯾﮋه ﯾﮏ ﻣﺎﺗﺮﯾﺲ از ﺗﺎﺑﻊ )(‪ eigen‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪> z‬‬
‫]‪[,1] [,2] [,3‬‬
‫]‪[1,‬‬ ‫‪1‬‬ ‫‪3‬‬ ‫‪5‬‬
‫]‪[2,‬‬ ‫‪3‬‬ ‫‪1‬‬ ‫‪2‬‬
‫]‪[3,‬‬ ‫‪5‬‬ ‫‪2‬‬ ‫‪1‬‬
‫)‪> eigen(z‬‬
‫‪$values‬‬
‫‪[1] 7.8390863 -0.7106916 -4.1283947‬‬

‫‪$vectors‬‬
‫]‪[,1‬‬ ‫]‪[,2‬‬ ‫]‪[,3‬‬
‫‪[1,] -0.6465566 0.1916741 0.7383939‬‬
‫‪[2,] -0.4612978 -0.8691432 -0.1783099‬‬
‫‪[3,] -0.6075927 0.4559069 -0.6503692‬‬

‫در ﺻﻮرﺗﯽ ﮐﻪ ﺑﺨﻮاﻫﯿﻢ ﺑﺎ وﺻﻞ ﮐﺮدن ﭼﻨﺪ ﺑﺮدار ﯾﺎ ﭼﻨﺪ ﻣﺎﺗﺮﯾﺲ ﺑﻪ ﻫﻢ ﯾﮏ ﻣﺎﺗﺮﯾﺲ ﯾﺎ ﺑﺮدار ﺟﺪﯾﺪ ﺑﺴﺎزﯾﻢ از ﺗﻮاﺑﻊ‬
‫)(‪ rbind‬و )(‪ cbind‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺗﺎﺑﻊ )(‪ rbind‬ﺑﺮدارﻫﺎ ﯾﺎ ﻣﺎﺗﺮﯾﺲ ﻫﺎ را ﺑﻪ ﺻـﻮرت ﺳـﻄﺮي ﺑـﻪ ﻫـﻢ‬
‫وﺻﻞ ﻣﯽ ﮐﻨﺪ و ﺗﺎﺑﻊ )(‪ cbind‬اﯾﻦ ﮐﺎر را ﺑﻪ ﺻﻮرت ﺳﺘﻮﻧﯽ اﻧﺠﺎم ﻣﯽ دﻫﺪ‪.‬‬

‫‪12‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﺜﺎل ‪:‬‬

‫‪> x‬‬
‫‪[1] 6 9 12 15‬‬
‫‪> y‬‬
‫‪[1] 6.6 9.9 13.2 16.5‬‬
‫)‪> rbind(x,y‬‬
‫]‪[,1] [,2] [,3] [,4‬‬
‫‪x 6.0 9.0 12.0 15.0‬‬
‫‪y 6.6 9.9 13.2 16.5‬‬
‫)‪> cbind(x,y‬‬
‫‪x‬‬ ‫‪y‬‬
‫‪[1,] 6 6.6‬‬
‫‪[2,] 9 9.9‬‬
‫‪[3,] 12 13.2‬‬
‫‪[4,] 15 16.5‬‬

‫‪ .2.4‬ﻟﯿﺴﺖ ﻫﺎ‬

‫ﯾﮏ ﻟﯿﺴﺖ در ‪ R‬ﻣﺠﻤﻮﻋﻪ اي ﻣﻨﻈﻢ از اﺷﯿﺎء اﺳﺖ ﮐﻪ اﯾﻦ اﺷﯿﺎء را ﻣﻮﻟﻔﻪ ﻫﺎي آن ﻟﯿﺴﺖ ﻣﯽ ﻧﺎﻣﯿﻢ‪ .‬ﺿﺮورﺗﯽ ﻧﺪارد ﮐﻪ‬
‫ﻣﻮﻟﻔﻪ ﻫﺎي ﯾﮏ ﻟﯿﺴﺖ ﻫﻤﻪ از ﯾﮏ ﻧﻮع ﺑﺎﺷﻨﺪ‪ .‬ﺑـﻪ ﻋﻨـﻮان ﻣﺜـﺎل ﯾـﮏ ﻟﯿـﺴﺖ ﻣـﯽ ﺗﻮاﻧـﺪ ﺷـﺎﻣﻞ ﺑﺮدارﻫـﺎي ﻋـﺪدي‪،‬‬
‫ﺗﺎﺑﻊ )(‪list‬‬ ‫ﻣﺎﺗﺮﯾﺲ ﻫﺎ‪ ،‬ﺑﺮدارﻫﺎي ﻣﻨﻄﻘﯽ‪ ،‬آراﯾﻪ ﻫﺎ‪ ،‬ﺑﺮدارﻫﺎي ﮐﺎراﮐﺘﺮي و ﻏﯿﺮه ﺑﺎﺷﺪ‪ .‬ﺑﺮاي ﺳﺎﺧﺘﻦ ﯾﮏ ﻟﯿﺴﺖ از‬
‫اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﺗﺎﺑﻊ )(‪ list‬ﻧﺎم ﻫﺮ ﻣﻮﻟﻔﻪ را وارد ﮐﺮده و ﺑﻌﺪ از ﻋﻼﻣـﺖ ﻣـﺴﺎوي ﺷـﺊ ﻣـﻮرد ﻧﻈـﺮ را وارد‬
‫ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪> lst <- list(name="Ferd", wife="Mary", no.childern=3,‬‬


‫))‪child.ages=c(4,7,9‬‬
‫‪> lst‬‬
‫‪$name‬‬
‫"‪[1] "Ferd‬‬

‫‪$wife‬‬
‫"‪[1] "Mary‬‬

‫‪$no.childern‬‬
‫‪[1] 3‬‬

‫‪$child.ages‬‬
‫‪[1] 4 7 9‬‬

‫‪ .2.4.1‬اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ ﻟﯿﺴﺖ‬

‫ﺑﺮاي اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ ﻟﯿﺴﺖ از دو ﻋﻼﻣﺖ ﺑﺮاﮐﺖ ﻣﺘﻮاﻟﯽ و ﺑﺮاي اﯾﻨـﺪﮐﺲ ﮐـﺮدن ﯾـﮏ ﻣﻮﻟﻔـﻪ از ﻟﯿـﺴﺖ از ﯾـﮏ‬
‫ﻋﻼﻣﺖ ﺑﺮاﮐﺖ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬

‫‪13‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﺜﺎل ‪:‬‬

‫]]‪> lst[[2‬‬
‫"‪[1] "Mary‬‬
‫]]"‪> lst[["name‬‬
‫"‪[1] "Ferd‬‬
‫])‪> lst[["child.ages"]][c(1,2‬‬
‫‪[1] 4 7‬‬

‫‪ .2.5‬دﯾﺘﺎ ﻓﺮﯾﻢ ﻫﺎ‬

‫دﯾﺘﺎ ﻓﺮﯾﻢ ﻫﺎ از ﻟﺤﺎظ ﺳﺎﺧﺘﺎر ﺷﺒﺎﻫﺖ ﺑﺴﯿﺎر زﯾﺎدي ﺑﻪ ﻣﺎﺗﺮﯾﺲ ﻫﺎ دارﻧﺪ‪ .‬ﯾﮏ دﯾﺘﺎ ﻓﺮﯾﻢ را ﻣﯽ ﺗﻮان ﻣﺎﺗﺮﯾﺴﯽ در ﻧﻈـﺮ‬
‫ﮔﺮﻓﺖ ﮐﻪ ﺳﺘﻮن ﻫﺎي آن ﺑﺮدارﻫﺎﯾﯽ ﺑﺎ ﺳﺎﺧﺘﺎرﻫﺎي ﻣﺨﺘﻠﻒ اﺳﺖ‪ .‬ﯾﮏ دﯾﺘﺎ ﻓﺮﯾﻢ در اﺻـﻞ ﻟﯿـﺴﺘﯽ از ﺑﺮدارﻫـﺎي ﻫـﻢ‬
‫اﻧﺪازه و ﺑﺎ ﺳﺎﺧﺘﺎرﻫﺎي ﻣﺨﺘﻠﻒ اﺳﺖ‪ .‬ﺑﺮاي ﺳﺎﺧﺘﻦ ﯾﮏ دﯾﺘﺎ ﻓﺮﯾﻢ از ﺗﺎﺑﻊ )(‪ data.frame‬اﺳﺘﻔﺎده ﻣﯽ ﺷـﻮد‪ .‬در‬
‫اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾﺪ ﻧﺎم ﻣﻮرد ﻧﻈﺮ ﺑﺮاي ﻫﺮ ﺳﺘﻮن را ﺑﻪ ﻫﻤﺮاه ﺑﺮدار ﺷﺎﻣﻞ داده ﻫﺎي آن ﺳﺘﻮن وارد ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫)"‪name <- c("A","B","C","D‬‬


‫>‬ ‫)‪age <- c(19,22,18,20‬‬
‫>‬ ‫)"‪sex <- c("M","M","F","M‬‬
‫>‬ ‫)‪score <- c(18,19,17,20‬‬
‫>‬ ‫)‪data.frame(Name=name,Age=age,Sex=sex,Score=score‬‬
‫‪Name Age Sex Score‬‬
‫‪1‬‬ ‫‪A 19‬‬ ‫‪M‬‬ ‫‪18‬‬
‫‪2‬‬ ‫‪B 22‬‬ ‫‪M‬‬ ‫‪19‬‬
‫‪3‬‬ ‫‪C 18‬‬ ‫‪F‬‬ ‫‪17‬‬
‫‪4‬‬ ‫‪D 20‬‬ ‫‪M‬‬ ‫‪20‬‬

‫‪ .2.5.1‬اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ دﯾﺘﺎ ﻓﺮﯾﻢ‬

‫ﯾﮏ دﯾﺘﺎ ﻓﺮﯾﻢ را ﻣﯽ ﺗﻮان ﻫﻤﺎﻧﻨﺪ ﯾﮏ ﻣﺎﺗﺮﯾﺲ ﯾﺎ ﯾﮏ ﻟﯿﺴﺖ اﯾﻨﺪﮐﺲ ﮐﺮد‪ .‬ﻫﻤﭽﻨﯿﻦ ﻣﯽ ﺗﻮان از ﻋﻼﻣﺖ "‪ " $‬ﺑﺮاي‬
‫اﯾﻨﺪﮐﺲ ﮐﺮدن ﯾﮏ دﯾﺘﺎ ﻓﺮﯾﻢ اﺳﺘﻔﺎده ﮐﺮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> df <- data.frame(Name=name,Age=age,Sex=sex,Score=score‬‬


‫]‪> df[,2‬‬
‫‪[1] 19 22 18 20‬‬
‫]]"‪> df[["Score‬‬
‫‪[1] 18 19 17 20‬‬
‫‪> df$Age‬‬
‫‪[1] 19 22 18 20‬‬

‫‪14‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .3‬دﺳﺘﮑﺎري داده ﻫﺎ‬

‫‪ .3.1‬ﻧﺎم ﮔﺬاري داده ﻫﺎ‬

‫ﺑﺮاي ﻧﺎم ﮔﺬاري ﯾﺎ ﻣﺸﺎﻫﺪه ﻧﺎم داده ﻫﺎي ﯾﮏ ﺷﺊ از ﺗﺎﺑﻊ )(‪ names‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺮاي ﻧﺎم ﮔـﺬاري داده ﻫـﺎي‬
‫ﯾﮏ ﺷﺊ ﺑﺮدار ﺷﺎﻣﻞ ﮐﺮاﮐﺘﺮﻫﺎ را ﺑﻪ ﺗﺎﺑﻊ )(‪ names‬ﺗﺨﺼﯿﺺ ﻣﯽ دﻫﯿﻢ و ﺑﺮاي ﻣﺸﺎﻫﺪه ﻧﺎم داده ﻫﺎي ﯾﮏ ﺷـﺊ آن‬
‫ﺷﺊ را در ﺗﺎﺑﻊ )(‪ names‬وارد ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫‪x <- 1:10‬‬


‫>‬ ‫]‪y <- LETTERS[11:20‬‬
‫>‬ ‫‪names(x) <- y‬‬
‫>‬ ‫‪x‬‬
‫‪K L M N O P Q R S T‬‬
‫‪1 2 3 4 5 6 7 8 9 10‬‬
‫)‪> names(x‬‬
‫"‪[1] "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T‬‬

‫‪ .3.2‬ﻣﺮﺗﺐ ﮐﺮدن داده ﻫﺎ‬

‫ﺑﺮاي ﻣﺮﺗﺐ ﮐﺮدن داده ﻫﺎ از ﺗﺎﺑﻊ )(‪ sort‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ sort‬ﻣﯽ ﺗـﻮان داده ﻫـﺎ را ﺑـﻪ‬
‫ﺻﻮرت اﻓﺰاﯾﺸﯽ‪ ،‬ﮐﺎﻫﺸﯽ‪ ،‬و ﯾﺎ ﺟﺰﺋﯽ ﻣﺮﺗﺐ ﮐﺮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫‪> x‬‬
‫‪[1] 4 5 3 4 2 4 1 1 2 5 3‬‬ ‫‪4 5 2 3‬‬
‫)‪> sort(x‬‬
‫‪[1] 1 1 2 2 2 3 3 3 4 4 4‬‬ ‫‪4 5 5 5‬‬
‫)‪> sort(x, decreasing=T‬‬
‫‪[1] 5 5 5 4 4 4 4 3 3 3 2‬‬ ‫‪2 2 1 1‬‬
‫))‪> sort(x, partial=c(3,4‬‬
‫‪[1] 1 1 2 2 3 3 2 3 4 5 4‬‬ ‫‪4 5 5 4‬‬
‫‪> x‬‬
‫‪[1] 4 5 3 4 2 4 1 1 2 5 3‬‬ ‫‪4 5 2 3‬‬

‫‪ .3.3‬رﺗﺒﻪ ﺑﻨﺪي داده ﻫﺎ‬

‫ﺑﺮاي رﺗﺒﻪ ﺑﻨﺪي داده ﻫﺎ از ﺗﺎﺑﻊ )(‪ rank‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬

‫‪15‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﺜﺎل ‪:‬‬

‫‪> x‬‬
‫‪[1] 4 5 3 4 2 4 1 1 2 5 3 4 5 2 3‬‬
‫)‪> rank(x‬‬
‫‪[1] 10.5 14.0 7.0 10.5 4.0 10.5‬‬ ‫‪1.5‬‬ ‫‪1.5‬‬ ‫‪4.0 14.0‬‬ ‫‪7.0 10.5 14.0‬‬
‫‪4.0 7.0‬‬

‫‪ .3.4‬ﺟﺪول ﺑﻨﺪي داده ﻫﺎ‬

‫ﺑﺮاي ﺟﺪول ﺑﻨﺪي داده ﻫﺎ از ﺗﺎﺑﻊ )(‪ table‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬


‫ﻣﺜﺎل ‪ :‬ﺑﺮدار ‪ sex‬ﺷﺎﻣﻞ ﺟﻨﺴﯿﺖ و ﺑﺮدار ‪ age‬ﺷﺎﻣﻞ ﺳﻦ داﻧﺶ آﻣﻮزان دﺑﯿﺮﺳﺘﺎﻧﯽ در ﯾﮏ ﻧﻤﻮﻧﻪ ‪ 50‬ﺗﺎﯾﯽ ﻣﯽ ﺑﺎﺷـﺪ‪.‬‬
‫در ﺑﺮدار ‪ sex‬ﭘﺴﺮ را ﺑﺎ ‪ 1‬و دﺧﻨﺮ را ﺑﺎ ‪ 2‬ﻧﻤﺎﯾﺶ داده اﯾﻢ‪.‬‬

‫‪> sex‬‬
‫‪[1] 2 2 2 2 1 1‬‬ ‫‪1 2 2 2 1 2 2 1 2 2 1 1 2 2 2 2 1 1 2 2 1 2 2 2 1 1‬‬
‫‪1 1 2 1 2 1‬‬
‫‪[39] 1 2 2 2 2 2‬‬ ‫‪1 2 2 1 1 1‬‬
‫)‪> table(sex‬‬
‫‪sex‬‬
‫‪1 2‬‬
‫‪21 29‬‬
‫‪> age‬‬
‫‪[1] 17 15 18 15‬‬ ‫‪17 18 17 18 18 16 17 15 16 18 15 16 15 16 15 16 18‬‬
‫‪18 16 17 16‬‬
‫‪[26] 18 18 18 18‬‬ ‫‪15 16 18 15 18 18 18 15 15 17 18 18 15 16 17 18 16‬‬
‫‪17 15 17 17‬‬
‫)‪> table(age‬‬
‫‪age‬‬
‫‪15 16 17 18‬‬
‫‪12 10 10 18‬‬
‫)‪> table(age,sex‬‬
‫‪sex‬‬
‫‪age‬‬ ‫‪1 2‬‬
‫‪15 4 8‬‬
‫‪16 3 7‬‬
‫‪17 7 3‬‬
‫‪18 7 11‬‬

‫‪ .3.5‬ﺟﺪا ﮐﺮدن داده ﻫﺎ‬

‫ﺑﺮاي ﺟﺪا ﮐﺮدن داده ﻫﺎي ﯾﮏ ﺑﺮدار ﺑﺮ ﺣﺴﺐ ﯾﮏ ﺑﺮدار دﯾﮕﺮ از ﺗﺎﺑﻊ )(‪ split‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬

‫‪16‬‬
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

: ‫ﻣﺜﺎل‬

> split(age,sex)

$`1`
[1] 17 18 17 17 18 15 16 16 17 18 16 18 15 18 18 15 17 18 15 17 17

$`2`
[1] 17 15 18 15 18 18 16 15 16 15 16 15 16 18 18 16 18 18 18 15 18
15 18 18 15
[26] 16 17 16 17

> split(sex,age)
$`15`
[1] 2 2 2 2 1 2 2 1 2 1 2 1

$`16`
[1] 2 2 2 1 2 1 2 1 2 2

$`17`
[1] 2 1 1 1 1 1 2 2 1 1

$`18`
[1] 2 1 2 2 1 2 2 2 1 2 2 1 1 2 1 2 2 1

‫ ﺗﻮزﯾﻊ ﻫﺎي آﻣﺎري‬.4

‫ ﺗﺎﺑﻌﯽ وﺟﻮد دارد ﮐﻪ ﻣﯽ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از آن ﺗﺎﺑﻊ ﻣﻘﺎدﯾﺮ اﺣﺘﻤﺎل را ﺑﺮاي ﯾﮏ ﺗﻮزﯾـﻊ‬R ‫ﺑﺮاي ﻫﺮ ﺗﻮزﯾﻊ آﻣﺎري در‬
.‫ در ﺟﺪول زﯾﺮ ﺑﺮﺧﯽ از اﯾﻦ ﺗﻮاﺑﻊ ﻣﻌﺮﻓﯽ ﺷﺪه اﻧﺪ‬.‫ﻣﺤﺎﺳﺒﻪ ﮐﺮده و ﯾﺎ اﻋﺪاد ﺗﺼﺎدﻓﯽ از ﯾﮏ ﺗﻮزﯾﻊ ﺗﻮﻟﯿﺪ ﮐﺮد‬

‫ﺗﻮزﯾﻊ‬ ‫ﺗﺎﺑﻊ‬ ‫ﭘﺎراﻣﺘﺮﻫﺎ‬

beta beta() shape1, shape2, ncp


binomial binom() size, prob
Cauchy cauchy() location, scale
chi-squared chisq() df, ncp
exponential exp() rate
F f() df1, df2, ncp
gamma gamma() shape, scale
geometric geom() prob
hypergeometric hyper() m, n, k
log-normal lnorm() meanlog, sdlog
logistic logis() location, scale
negative binomial nbinom() size, prob
normal norm() mean, sd
Poisson pois() lambda
Student’s t t() df, ncp
Uniform unif() min, max
Weibull weibull() shape, scale
Wilcoxon wilcox() m, n

17
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪r‬‬ ‫ﺑﺮاي اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ ﺟﺪول ﻓﻮق ﺑﺎﯾﺪ ﺑﺮ ﺣﺴﺐ ﻧﻮع اﺳﺘﻔﺎده از ﺗﺎﺑﻊ‪ ،‬ﭘﯿﺶ از ﻧﺎم ﺗﺎﺑﻊ از ﺣـﺮوف ‪ ، d ، q ، p‬ﯾـﺎ‬
‫اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪ .‬از ﺣﺮف ‪ p‬ﺑﺮاي ﻣﺤﺎﺳﺒﻪ اﺣﺘﻤﺎل در ﺗﺎﺑﻊ ﺗﻮزﯾﻊ‪ ،‬از ﺣﺮف ‪ q‬ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﭼﻨﺪك ﻫﺎ‪ ،‬از ﺣﺮف ‪ d‬ﺑﺮاي‬
‫ﻣﺤﺎﺳﺒﻪ ﭼﮕﺎﻟﯽ‪ ،‬و از ﺣﺮف ‪ r‬ﺑﺮاي ﺗﻮﻟﯿﺪ اﻋﺪاد ﺗﺼﺎدﻓﯽ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺮاي آﺷﻨﺎﯾﯽ دﻗﯿـﻖ ﺑـﺎ ﻧﺤـﻮه ﻗـﺮار دادن‬
‫ﭘﺎراﻣﺘﺮﻫﺎ و ﻣﻘﺎدﯾﺮ در ﻫﺮ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮان ﻧﺎم ﺗﺎﺑﻊ ﻣﻮرد ﻧﻈﺮ را ﺑﻌﺪ از ﯾﮏ ﻋﻼﻣﺖ ﺳﻮال ﺑﻪ ﻋﻨﻮان ﯾﮏ دﺳﺘﻮر وارد ﮐﺮد‬
‫ﺗﺎ ﺻﻔﺤﻪ ‪ help‬ﻣﺮﺑﻮط ﺑﻪ آن ﺗﺎﺑﻊ ﺑﺎز ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)(‪> ?rnorm‬‬
‫)‪> rnorm(n=10‬‬
‫‪[1] -0.04785585 -0.31453549 1.01482215 -0.33774153 -0.46852454 -‬‬
‫‪0.42633759‬‬
‫‪[7] 0.88107806 0.58547995 -0.51812346 1.05938773‬‬
‫)‪> rnorm(n=10, mean=10, sd=15‬‬
‫‪[1] 12.962637‬‬ ‫‪4.022534 29.767160 -19.041441 42.498506‬‬
‫‪20.358151‬‬
‫‪[7] 13.582569 -2.029278 35.003451 39.089246‬‬
‫)‪> pnorm(q=1.5‬‬
‫‪[1] 0.9331928‬‬
‫)‪> qnorm(p=0.05‬‬
‫‪[1] -1.644854‬‬
‫)‪> dbinom(x=15, size=20, prob=0.04‬‬
‫‪[1] 1.357375e-17‬‬
‫)‪> pbinom(q=5, size=20, prob=0.04‬‬
‫‪[1] 0.9999023‬‬

‫‪ .5‬دﺳﺘﻮرات ﮐﻨﺘﺮﻟﯽ‬

‫‪ .5.1‬دﺳﺘﻮر ﺷﺮط‬

‫ﺑﺮاي اﺟﺮاي دﺳﺘﻮرات ﺷﺮﻃﯽ در ‪ R‬از دﺳﺘﻮر ‪ if/else‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ دﺳﺘﻮر ﺑﻪ ﺷـﮑﻞ زﯾـﺮ‬
‫اﺳﺖ‪.‬‬

‫‪> if (expr_1) expr_2 else expr_3‬‬

‫در اﯾﻦ دﺳﺘﻮر ‪ expr_1‬ﻋﺒﺎرت ﺷﺮﻃﯽ اﺳﺖ ﮐﻪ ﺑﺎﯾﺪ ﻣﺸﺨﺺ ﺷﻮد‪ .‬در ﺻﻮرﺗﯽ ﮐﻪ ﺷﺮط ﺑﺮﻗـﺮار ﺑﺎﺷـﺪ دﺳـﺘﻮرات‬
‫وارد ﺷﺪه در ﻗﺴﻤﺖ ‪ expr_2‬اﺟﺮا ﺧﻮاﻫﻨﺪ ﺷﺪ و در ﻏﯿﺮ اﯾـﻦ ﺻـﻮرت دﺳـﺘﻮرات وارد ﺷـﺪه ﭘـﺲ از ‪ else‬در‬
‫ﻗﺴﻤﺖ ‪ expr_3‬اﺟﺮا ﻣﯽ ﺷﻮﻧﺪ‪ .‬در ﻗﺴﻤﺖ ﺷﺮط ﻣﯽ ﺗـﻮان از " && " و " || " ﺑـﻪ ﻋﻨـﻮان "و" و "ﯾـﺎ" ﻣﻨﻄﻘـﯽ‬
‫اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﺑﺮاي ﮔﺮوه ﺑﻨﺪي دﺳﺘﻮرات اﺟﺮاﯾﯽ از ﻋﻼﻣﺖ" } "و" { " اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬در ﮔﺮوه ﻫﺎ ﺑـﺮاي ﺟـﺪا‬
‫ﮐﺮدن دﺳﺘﻮرات از " ; " اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬

‫‪18‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- rnorm(100); m <- mean(x‬‬


‫‪> if (m>=0.1||m<=-0.1){y <- "mean is not 0";y} else {y <- "mean is‬‬
‫}‪0";y‬‬
‫"‪[1] "mean is 0‬‬

‫‪ .5.2‬دﺳﺘﻮرات ﺗﮑﺮار‬

‫در ‪ R‬ﺳﻪ دﺳﺘﻮر ﺗﮑﺮار وﺟﻮد دارد ﮐﻪ ﻋﺒﺎراﺗﺪ از ‪ ،repeat،for‬و ‪ .while‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾـﻦ ﺳـﻪ دﺳـﺘﻮر ﺑـﻪ‬
‫ﺷﮑﻞ زﯾﺮ اﺳﺖ‪.‬‬
‫‪> for (name in expr_1) expr_2‬‬

‫‪> repeat expr‬‬

‫‪> while (condition) expr‬‬

‫در دﺳﺘﻮر ‪ for‬در ﻗﺴﻤﺖ ‪ name‬ﻧﺎم ﻣﺘﻐﯿﺮ ﺷﻤﺎرﻧﺪه و در ﻗـﺴﻤﺖ ‪ expr_1‬ﺗﮑﺮارﻫـﺎ را ﻣـﺸﺨﺺ ﻣـﯽ ﮐﻨـﯿﻢ‪ .‬در‬
‫‪ repeat‬در ﻗـﺴﻤﺖ ‪expr‬‬ ‫ﻗﺴﻤﺖ ‪ expr_2‬ﻧﯿﺰ دﺳﺘﻮراﺗﯽ را ﮐﻪ ﺑﺎﯾﺪ ﺗﮑـﺮار ﺷـﻮﻧﺪ وارد ﻣـﯽ ﮐﻨـﯿﻢ‪ .‬در دﺳـﺘﻮر‬
‫دﺳﺘﻮراﺗﯽ را ﮐﻪ ﺑﺎﯾﺪ ﺗﮑﺮار ﺷﻮﻧﺪ وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺮاي ﺗﻮﻗﻒ ﺗﮑـﺮار دﺳـﺘﻮرات در دﺳـﺘﻮر ‪ repeat‬از ﮐﻠﯿـﺪ ‪Esc‬‬
‫اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬در دﺳﺘﻮر ‪ while‬در ﻗﺴﻤﺖ ‪ condition‬ﺷﺮط ﭘﺎﯾﺎن ﺗﮑﺮار و در ﻗﺴﻤﺖ ‪ expr‬دﺳـﺘﻮراﺗﯽ را‬
‫ﮐﻪ ﺑﺎﯾﺪ ﺗﮑﺮار ﺷﻮﻧﺪ وارد ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫})‪> for (i in 1:10){dens <- dbinom(i, 10, 0.5); print(dens‬‬


‫‪[1] 0.009765625‬‬
‫‪[1] 0.04394531‬‬
‫‪[1] 0.1171875‬‬
‫‪[1] 0.2050781‬‬
‫‪[1] 0.2460938‬‬
‫‪[1] 0.2050781‬‬
‫‪[1] 0.1171875‬‬
‫‪[1] 0.04394531‬‬
‫‪[1] 0.009765625‬‬
‫‪[1] 0.0009765625‬‬
‫‪> j <- 0‬‬
‫}‪> while (j<=10){z <- dbinom(j, 10, 0.5);print(z);j=j+1‬‬
‫‪[1] 0.0009765625‬‬
‫‪[1] 0.009765625‬‬
‫‪[1] 0.04394531‬‬
‫‪[1] 0.1171875‬‬
‫‪[1] 0.2050781‬‬
‫‪[1] 0.2460938‬‬
‫‪[1] 0.2050781‬‬
‫‪[1] 0.1171875‬‬
‫‪[1] 0.04394531‬‬
‫‪[1] 0.009765625‬‬
‫‪[1] 0.0009765625‬‬
‫)(‪ print‬ﺑﺮاي ﭼﺎپ ﺧﺮوﺟﯽ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬ ‫از ﺗﺎﺑﻊ‬

‫‪19‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .6‬ﻧﻮﺷﺘﻦ ﺗﻮاﺑﻊ و ﻋﻤﻠﮕﺮﻫﺎي ﺷﺨﺼﯽ‬

‫ﺑﺮاي ﻧﻮﺷﺘﻦ ﺗﻮاﺑﻊ ﺷﺨﺼﯽ در ‪ R‬از ﺗﺎﺑﻊ )(‪ function‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺷﮑﻞ ﮐﻠﯽ اﺳﺘﻔﺎده از اﯾـﻦ ﺗـﺎﺑﻊ ﺑـﺮاي‬
‫ﻧﻮﺷﺘﻦ ﺗﻮاﺑﻊ ﺷﺨﺼﯽ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪.‬‬

‫‪> name <- function(arg_1,arg_2,...) expression‬‬

‫‪arg_1,arg_2,...‬‬ ‫در ﺳﺎﺧﺘﺎر ﻓﻮق در ﻗﺴﻤﺖ ‪ name‬ﻧﺎم ﻣﻮرد ﻧﻈﺮ ﺑﺮاي ﺗﺎﺑﻊ را وارد ﻣـﯽ ﮐﻨـﯿﻢ‪ .‬در ﻗـﺴﻤﺖ‬
‫ﻧﯿﺰ ﭘﺎراﻣﺘﺮﻫﺎي ﺗﺎﺑﻊ ﻣﻮرد ﻧﻈﺮ را وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻫﻨﮕﺎم ﺗﻌﯿﯿﻦ ﭘﺎراﻣﺘﺮﻫﺎ در ﺻﻮرت ﺗﻤﺎﯾﻞ ﻣﯽ ﺗـﻮان ﺑـﺎ اﺳـﺘﻔﺎده از‬
‫ﻋﻼﻣﺖ ﻣﺴﺎوي ﻣﻘﺪار ﭘﯿﺶ ﻓﺮﺿﯽ را ﺑﺮاي ﻫﺮ ﭘﺎراﻣﺘﺮ ﻣﺸﺨﺺ ﮐﺮد‪ .‬در ﻗﺴﻤﺖ ‪ expression‬ﻧﯿﺰ دﺳﺘﻮرات ﺑﺪﻧـﻪ‬
‫ﺗﺎﺑﻊ ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮد‪ .‬در ﻧﻮﺷﺘﻦ دﺳﺘﻮرات ﺑﺪﻧﻪ ﯾﮏ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮان از ﺗﻮاﺑﻊ دﯾﮕﺮ ﻧﯿﺰ اﺳﺘﻔﺎده ﮐﺮده و ﯾـﺎ ﺣﺘـﯽ ﺗﻮاﺑـﻊ‬
‫ﺷﺨﺼﯽ ﻧﻮﺷﺖ‪ .‬ﻓﺮاﺧﻮاﻧﯽ و اﺳﺘﻔﺎده از اﯾﻦ ﺗﻮاﺑﻊ ﻫﻤﺎﻧﻨﺪ دﯾﮕﺮ ﺗﻮاﺑﻊ ‪ R‬ﻣﯽ ﺑﺎﺷﺪ‪ ،‬اﻟﺒﺘـﻪ ﺑـﺎ اﯾـﻦ ﺗﻔـﺎوت ﮐـﻪ ﺑـﺮاي‬
‫ﺗﺨﺼﯿﺺ ﺧﺮوﺟﯽ ﯾﮏ ﺗﺎﺑﻊ ﺷﺨﺼﯽ ﺑﻪ ﯾﮏ ﺷﺊ از ﻋﻼﻣﺖ" ‪ " <<-‬ﺑﻪ ﺟﺎي " ‪ " <-‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺑﺎ اﺳﺘﻔﺎده از‬
‫ﺗـﺎﺑﻊ )(‪function‬‬ ‫ﺷﯿﻮه اي ﻣﺸﺎﺑﻪ ﻣﯽ ﺗﻮان ﻋﻤﻠﮕﺮ ﺷﺨﺼﯽ ﻧﯿﺰ ﻧﻮﺷﺖ‪ .‬ﯾﮏ ﻋﻤﻠﮕﺮ ﺷﺨﺼﯽ ﻧﯿـﺰ ﺑـﺎ اﺳـﺘﻔﺎده از‬
‫ﻧﻮﺷﺘﻪ ﻣﯽ ﺷﻮد‪ .‬ﺷﮑﻞ ﮐﻠﯽ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ function‬ﺑﺮاي ﻧﻮﺷﺘﻦ ﻋﻤﻠﮕﺮ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪.‬‬

‫} ‪> "%!%" <- function(X,y) { ...‬‬

‫در ﻗﺴﻤﺖ " ‪ " %!%‬ﺑﻪ ﺟﺎي ﻋﻼﻣﺖ! ﮐﺎراﮐﺘﺮ ﻣـﻮرد ﻧﻈـﺮ ﺑـﺮاي ﻧـﺸﺎن دادن ﻋﻤﻠﮕـﺮ را ﺑـﯿﻦ دو ﻋﻼﻣـﺖ ‪ %‬ﺗﻌﯿـﯿﻦ‬
‫ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗﺴﻤﺖ ‪ X,y‬ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ ﮐﻪ ﻋﻤﻠﮕﺮ ﺑﯿﻦ ﭼﻪ اﺷﯿﺎﺋﯽ ﻋﻤﻞ ﮐﻨﺪ‪ .‬در ﻗﺴﻤﺖ آﺧﺮ ﻧﯿﺰ ﺑﺪﻧﻪ ﻋﻤﻠﮕﺮ را‬
‫ﺗﻌﯿﯿﻦ ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﻋﻤﻠﮕﺮ ﺿﺮب ﻣﺎﺗﺮﯾﺲ ﻫﺎ‪ ، " %*% " ،‬ﻧﻤﻮﻧﻪ اي از ﻋﻤﻠﮕﺮﻫﺎي ﺷﺨﺼﯽ اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ‪ :‬ﺗﺎﺑﻊ زﯾﺮ ﺑﺮدار ﻋﺪدي ‪ x‬را ﮔﺮﻓﺘﻪ و ﺑﺮاي ﻣﻘﺎﯾﺴﻪ ﻣﯿﺎﻧﻪ آن ﺑﺎ ﺻﻔﺮ از آزﻣﻮن ﻋﻼﻣﺖ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ‪.‬‬

‫{ )‪sign.test <- function (x, mu=0‬‬


‫)‪n <- length(x‬‬
‫)‪y <- sum(x<mu‬‬
‫‪p.value <- min(c( pbinom(y,n,.5), pbinom(y,n,.5,lower.tail=F) ))*2‬‬
‫‪p.value‬‬
‫}‬

‫‪20‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﮔﺮاﻓﯿﮏ و رﺳﻢ ﻧﻤﻮدار‬

‫در ‪ R‬ﻧﻤﻮدارﻫﺎ و ﺗﺮﺳﯿﻤﺎت در ﭘﻨﺠﺮه اي ﻣﺠﺰا ﺑﻪ ﻧﺎم ﭘﻨﺠﺮه ﮔﺮاﻓﯿﮏ ﻧﻤﺎﯾﺶ داده ﻣﯽ ﺷﻮﻧﺪ‪ .‬اﯾﻦ ﭘﻨﺠﺮه ﺑﺎ اﺳـﺘﻔﺎده از‬
‫ﺗﺎﺑﻊ )(‪ windows‬ﺑﺎز ﻣﯽ ﺷﻮد‪ .‬اﻟﺒﺘﻪ اﺳﺘﻔﺎده از اﯾﻦ ﺗﺎﺑﻊ ﺿﺮورﺗﯽ ﻧﺪارد زﯾﺮا در رﺳﻢ ﻫﺮ ﻧﻤـﻮدار اﯾـﻦ ﭘﻨﺠـﺮه ﺑـﻪ‬
‫ﺻﻮرت اﺗﻮﻣﺎﺗﯿﮏ ﺑﺎز ﻣﯽ ﺷﻮد‪ .‬ﺑﺮاي ﮐﺴﺐ اﻃﻼﻋﺎت ﮐﺎﻣﻞ در ﻣﻮرد ﺗﺎﺑﻊ )(‪ windows‬ﻣﯽ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر‬
‫)(‪ ?windows‬از ﻓﺎﯾﻞ ‪ help‬ﮐﻤﮏ ﮔﺮﻓﺖ‪ .‬در ﺣﺎﻟﺖ ﮐﻠﯽ ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﻧﻤﻮدار در ‪ R‬را ﻣﯽ ﺗـﻮان ﺑـﻪ ﺳـﻪ دﺳـﺘﻪ‬
‫ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﺑﺎﻻ‪ ،‬ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﭘﺎﯾﯿﻦ‪ ،‬و ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺗﻌﺎﻣﻠﯽ ﺗﻘﺴﯿﻢ ﮐﺮد‪ .‬ﺑﺎ اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺳﻄﺢ‬
‫ﺑﺎﻻ ﻗﺎدر ﺧﻮاﻫﯿﻢ ﺑﻮد ﻧﻤﻮدارﻫﺎﯾﯽ ﺷﺎﻣﻞ ﻣﺤﻮرﻫﺎ‪ ،‬ﺑﺮﭼﺴﺐ ﻫﺎ‪ ،‬ﻋﻨﻮان‪ ،‬و ﻣﻮاردي از اﯾﻦ ﻗﺒﯿﻞ رﺳﻢ ﮐﻨﯿﻢ‪ .‬ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ‬
‫ﺳﻄﺢ ﭘﺎﯾﯿﻦ ﻣﺎ را ﻗﺎدر ﻣﯽ ﺳﺎزﻧﺪ ﮐﻪ روي ﻧﻤﻮدارﻫﺎي ﻣﻮﺟﻮد ﺗﻐﯿﯿﺮاﺗﯽ اﻋﻤﺎل ﮐﻨﯿﻢ‪ ،‬و ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺗﻌﺎﻣﻠﯽ ﺑﻪ ﻣﺎ اﯾـﻦ‬
‫اﻣﮑﺎن را ﻣﯽ دﻫﻨﺪ ﺗﺎ ﺑﻪ ﺗﺒﺎدل اﻃﻼﻋﺎت ﺑﺎ ﻧﻤﻮدارﻫﺎي ﻣﻮﺟﻮد ﺑﭙﺮدازﯾﻢ‪ .‬در اداﻣﻪ ﺑﻪ ﺑﺮرﺳﯽ اﻧﻮاع ﺗﻮاﺑـﻊ و دﺳـﺘﻮرات‬
‫ﺗﺮﺳﯿﻢ ﺧﻮاﻫﯿﻢ ﭘﺮداﺧﺖ‪.‬‬

‫‪ .1‬دﺳﺘﻮرﻫﺎي ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﺑﺎﻻ‬

‫)(‪plot‬‬ ‫‪ .1.1‬ﺗﺎﺑﻊ‬

‫ﯾﮑﯽ از ﭘﺮﮐﺎرﺑﺮد ﺗﺮﯾﻦ ﺗﻮاﺑﻊ رﺳﻢ ﻧﻤﻮدار در ‪ R‬ﺗﺎﺑﻊ )(‪ plot‬اﺳﺖ‪ .‬در ﺻﻮرﺗﯽ ﮐـﻪ از ﺗـﺎﺑﻊ )(‪ plot‬ﺑـﻪ ﺷـﮑﻞ‬
‫‪x‬‬ ‫)‪ plot(x‬ﯾﺎ )‪ plot(x,y‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪ ،‬ﮐﻪ ‪ x‬و ‪ y‬دو ﺑﺮدارﻧﺪ‪ ،‬ﺑﻪ ﺗﺮﺗﯿﺐ ﻧﻤﻮدار ﺑﺮدار ‪ x‬و ﻧﻤﻮدار ﭘﺮاﮐﻨـﺪﮔﯽ‬
‫در ﻣﻘﺎﺑﻞ ‪ y‬رﺳﻢ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- rnorm(10‬‬


‫‪> y <- 1:10‬‬
‫)‪> plot(x‬‬

‫‪21‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)‪> plot(x,y‬‬

‫‪22‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫در ﺻﻮرﺗﯽ ﮐﻪ از ﺗﺎﺑﻊ )(‪ plot‬ﺑﻪ ﺷﮑﻞ )‪ plot(f‬ﯾﺎ )‪ plot(f,y‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪ ،‬ﮐﻪ ‪ f‬ﯾﮏ ﻓـﺎﮐﺘﻮر و ‪ y‬ﯾـﮏ‬
‫ﺑﺮدار اﺳﺖ‪ ،‬ﺑﻪ ﺗﺮﺗﯿﺐ ﻧﻤﻮدار ﻣﯿﻠﻪ اي ‪ f‬و ﻧﻤﻮدار ﺟﻌﺒﻪ اي ‪ y‬در ﻣﻘﺎﺑﻞ ‪ f‬رﺳﻢ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> z <- sample(1:4,30,rep=T‬‬


‫)‪> z.f <- factor(z‬‬
‫)‪> plot(z.f‬‬

‫)‪> x <- rep(c(1,2,3,4),each=4‬‬


‫)‪> x.f <- factor(x‬‬
‫‪> x.f‬‬
‫‪[1] 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4‬‬
‫‪Levels: 1 2 3 4‬‬
‫)‪> y <- c(20,23,22,24,25,26,21,23,20,21,25,24,23,21,21,26‬‬
‫)‪> plot(x.f,y‬‬

‫‪23‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)(‪curve‬‬ ‫‪ .1.2‬ﺗﺎﺑﻊ‬

‫از ﺗﺎﺑﻊ )(‪ curve‬ﺑﺮاي رﺳﻢ ﻣﻨﺤﻨﯽ ﯾﮏ ﺗﺎﺑﻊ در ﻣﺤﺪوده ﺗﻌﯿﯿﻦ ﺷﺪه اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬از اﯾﻦ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮان ﺑـﺮاي‬
‫ﺑﺮرﺳﯽ ﻣﻨﺤﻨﯽ ﺗﻮزﯾﻊ ﻫﺎي آﻣﺎري اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﺗﺎﺑﻌﯽ ﮐﻪ ﻣﯽ ﺧﻮاﻫﯿﻢ ﻣﻨﺤﻨﯽ آن رﺳﻢ ﺷﻮد ﯾﺎ ﺑﺎﯾﺪ ﺑﻪ ﺷﮑﻞ ﮐﻠﯽ ﺗﺎﺑﻌﯽ‬
‫از " ‪ " x‬ﺑﺎﺷﺪ‪ ،‬و ﯾﺎ ﺑﺎﯾﺪ ﺗﺎﺑﻌﯽ از ﯾﮏ ﺑﺮدار ﺑﺎﺷﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> curve(dchisq(x,3),0,10‬‬

‫)(‪pairs‬‬ ‫‪ .1.3‬ﺗﺎﺑﻊ‬

‫از ﺗﺎﺑﻊ )(‪ pairs‬ﺑﺮاي رﺳﻢ ﻫﺮ ﺳﺘﻮن ﯾﮏ ﻣﺎﺗﺮﯾﺲ ﻋﺪدي در ﻣﻘﺎﺑﻞ ﺳﺘﻮن ﻫﺎي دﯾﮕﺮ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- sample(1:10,12,rep=T‬‬


‫)‪> dim(x) <- c(3,4‬‬
‫‪> x‬‬
‫]‪[,1] [,2] [,3] [,4‬‬
‫]‪[1,‬‬ ‫‪3‬‬ ‫‪7‬‬ ‫‪7‬‬ ‫‪4‬‬
‫]‪[2,‬‬ ‫‪5‬‬ ‫‪10‬‬ ‫‪2‬‬ ‫‪5‬‬
‫]‪[3,‬‬ ‫‪6‬‬ ‫‪6‬‬ ‫‪10‬‬ ‫‪5‬‬
‫)‪> pairs(x‬‬

‫‪24‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)(‪coplot‬‬ ‫‪ .1.4‬ﺗﺎﺑﻊ‬

‫ﺑﺮاي رﺳﻢ ﯾﮏ ﺑﺮدار در ﻣﻘﺎﺑﻞ ﯾﮏ ﺑﺮدار دﯾﮕﺮ ﺑﻪ ﺷﺮط ﯾﮏ ﺑﺮدار ﯾﺎ ﯾﮏ ﻓﺎﮐﺘﻮر از ﺗﺎﺑﻊ )(‪ coplot‬ﺑﺎ ﺳﺎﺧﺘﺎر ﮐﻠﯽ‬
‫زﯾﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫)‪> coplot(a~b|c‬‬

‫در ﺻﻮرﺗﯽ ﮐﻪ ﺷﺮط ﺗﺎﺑﻊ ﯾﮏ ﻓﺎﮐﺘﻮر ﺑﺎﺷﺪ دو ﺑﺮدار در ﺳﻄﻮح آن ﻓﺎﮐﺘﻮر در ﻣﻘﺎﺑﻞ ﻫﻢ رﺳﻢ ﺧﻮاﻫﻨﺪ ﺷﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫)‪x <- sample(1:10,20,rep=T‬‬


‫>‬ ‫)‪y <- rnorm(20‬‬
‫>‬ ‫)‪z <- rep(c(1,2,3,4,5),each=4‬‬
‫>‬ ‫)‪z <- factor(z‬‬
‫>‬ ‫)‪coplot(y~x|z‬‬

‫‪25‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)(‪hist‬‬ ‫‪ .1.5‬ﺗﺎﺑﻊ‬

‫از ﺗﺎﺑﻊ )(‪ hist‬ﺑﺮاي رﺳﻢ ﻫﯿﺴﺘﻮﮔﺮام ﯾﮏ ﺑﺮدار اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬


‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- rnorm(100‬‬


‫)‪> hist(x‬‬

‫‪26‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)(‪barplot‬‬ ‫‪ .1.6‬ﺗﺎﺑﻊ‬

‫ﺑﺮاي رﺳﻢ ﻧﻤﻮدار ﻣﯿﻠﻪ اي ﯾﮏ ﺑﺮدار از ﺗﺎﺑﻊ )(‪ barplot‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺑﺮدار وارد ﺷـﺪه در اﯾـﻦ ﺗـﺎﺑﻊ ﺑـﺮدار‬
‫ﻓﺮاواﻧﯽ ﻫﺎ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- rnorm(10‬‬


‫)‪> barplot(x‬‬

‫)(‪boxplot‬‬ ‫‪ .1.7‬ﺗﺎﺑﻊ‬

‫از ﺗﺎﺑﻊ )(‪ boxplot‬ﺑﺮاي رﺳﻢ ﻧﻤﻮدار ﺟﻌﺒﻪ اي اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺑﺮاي رﺳﻢ ﻧﻤﻮدار ﺟﻌﺒـﻪ اي ﺗﻮﺳـﻂ اﯾـﻦ ﺗـﺎﺑﻊ‬
‫ﻣﯽ ﺗﻮان از ﯾﮏ ﺑﺮدار ﯾﺎ از ﻓﺮﻣﻮﻟﯽ ﺷﺎﻣﻞ ﺑﺮدار و ﻓﺎﮐﺘﻮر اﺳﺘﻔﺎده ﮐﺮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- rnorm(100‬‬


‫))‪> y <- factor(rep(1:5,times=20‬‬
‫)‪> boxplot(x~y‬‬

‫‪27‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)(‪dotchart‬‬ ‫‪ .1.8‬ﺗﺎﺑﻊ‬

‫ﺑﺮاي رﺳﻢ ﻧﻤﻮدار ﻧﻘﻄﻪ اي ﯾﮏ ﺑﺮدار از ﺗﺎﺑﻊ )(‪ dotchart‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬


‫ﻣﺜﺎل ‪:‬‬
‫)‪> x <- rnorm(10‬‬
‫)‪> dotchart(x‬‬

‫‪28‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .1.9‬ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺳﻪ ﻣﺘﻐﯿﺮي‬

‫ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺳﻪ ﻣﺘﻐﯿﺮي ﻋﺒﺎرﺗﻨﺪ از )(‪ ، contour() ، image‬و )(‪ .persp‬ﺗﻔﺎوت اﯾـﻦ ﺳـﻪ ﺗـﺎﺑﻊ در ﺷـﯿﻮه‬
‫)(‪contour‬‬ ‫ﻧﻤﺎﯾﺶ ﻧﻤﻮدار در آﻧﻬﺎﺳﺖ‪ .‬ﺗﺎﺑﻊ )(‪ image‬ﻣﺘﻐﯿﺮ ﺳﻮم را ﺑﺎ رﻧﮓ ﻫﺎي ﻣﺘﻔﺎوت ﻧﺸﺎن ﻣﯽ دﻫﺪ‪ .‬ﺗﺎﺑﻊ‬
‫ﻣﺘﻐﯿﺮ ﺳﻮم را ﺑﻪ ﺻﻮرت ﻧﻘﺸﻪ اي ﻧﺸﺎن ﻣﯽ دﻫﺪ‪ ،‬و ﺗﺎﺑﻊ )(‪ persp‬ﻧﻤﻮدار را ﺑﻪ ﺻﻮرت ﺳﻪ ﺑﻌﺪي ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ‪.‬‬
‫ﻧﮑﺘﻪ اي ﮐﻪ ﺑﺎﯾﺪ ﺑﻪ آن ﺗﻮﺟﻪ داﺷﺖ اﯾﻦ اﺳﺖ ﮐﻪ در ﻫﺮ ﺳﻪ ﺗﺎﺑﻊ ﻓﻮق ﺑﺎﯾﺪ ﻣﺘﻐﯿﺮ ﺳﻮم را ﺑـﻪ ﺻـﻮرت ﻣـﺎﺗﺮﯾﺲ وارد‬
‫ﮐﺮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫‪x <- 1:10‬‬


‫>‬ ‫‪y <- 1:10‬‬
‫>‬ ‫)‪z <- rnorm(100‬‬
‫>‬ ‫)‪dim(z) <- c(10,10‬‬
‫>‬ ‫)‪image(x,y,z‬‬

‫‪29‬‬
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

> contour(x,y,z)

> persp(x,y,z)

30
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .1.10‬ﺗﻮاﺑﻊ ﻣﻘﺎﯾﺴﻪ ﺗﻮزﯾﻊ ﻫﺎ‬

‫ﺑﺮاي ﺑﺮرﺳﯽ و ﻣﻘﺎﯾﺴﻪ ﺗﻮزﯾﻊ ﻫﺎ از ﺳﻪ ﺗﺎﺑﻊ )(‪ ، qqline() ، qqnorm‬و )(‪ qqplot‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺑـﺮاي‬
‫ﺑﺮرﺳﯽ ﻧﺮﻣﺎل ﺑﻮدن ﺗﻮزﯾﻊ داده ﻫﺎي ﯾﮏ ﺑﺮدار از ﺗﺎﺑﻊ )(‪ qqnorm‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺑﺮاي رﺳـﻢ ﺧـﻂ ﻧﺮﻣـﺎل روي‬
‫ﻧﻤﻮدار رﺳﻢ ﺷﺪه از ﺗﺎﺑﻊ )(‪ qqline‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ ،‬و ﺑﺮاي ﻣﻘﺎﯾﺴﻪ ﺗﻮزﯾﻊ دو ﻣﺘﻐﯿﺮ و ﺑﺮرﺳـﯽ ﻫﻤﺘﻮزﯾـﻊ ﺑـﻮدن‬
‫آﻧﻬﺎ از ﺗﺎﺑﻊ )(‪ qqplot‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- rnorm(30‬‬


‫)‪> qqnorm(x‬‬

‫‪31‬‬
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

> qqline(x)

> x <- rnorm(50)


> y <- rbinom(50,100,0.05)
> qqplot(x,y)

32
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .1.11‬ﻧﻤﻮدارﻫﺎي ﺳﺮي زﻣﺎﻧﯽ‬

‫ﺑﺮاي رﺳﻢ ﻧﻤﻮدارﻫﺎي ﺳﺮي زﻣﺎﻧﯽ اﺑﺘﺪا ﺑﺎﯾﺪ ﺑﺮدار ﻣﺸﺎﻫﺪات ر ا ﺑﻪ ﺳﺮي زﻣـﺎﻧﯽ ﺗﺒـﺪﯾﻞ ﮐﻨـﯿﻢ‪ .‬ﺑـﺮاي ﺗﺒـﺪﯾﻞ ﺑـﺮدار‬
‫ﻣﺸﺎﻫﺪات ﺑﻪ ﺳﺮي زﻣﺎﻧﯽ از ﺗﺎﺑﻊ )(‪ ts‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﭘﺲ از ﺗﺒﺪﯾﻞ ﯾﮏ ﺑﺮدار ﺑـﻪ ﯾـﮏ ﺳـﺮي زﻣـﺎﻧﯽ از ﺗﻮاﺑـﻊ‬
‫)(‪ acf‬و )(‪ pacf‬ﺑﺮاي رﺳﻢ ﻧﻤﻮدارﻫﺎي ‪ ACF‬و ‪ PACF‬ﺳﺮي زﻣﺎﻧﯽ ﻣﻮرد ﻧﻈﺮ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬

‫ﻣﺜﺎل ‪:‬‬

‫‪> x <-‬‬
‫‪c(14,11,10,13,20,15,19,17,12,18,17,24,21,15,22,16,20,23,19,25,23,26,‬‬
‫)‪30‬‬
‫)‪> T <- ts(x‬‬
‫)‪> plot(T‬‬

‫‪33‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)‪> acf(T‬‬

‫)‪> pacf(T‬‬

‫‪34‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .1.12‬ﺟﺰﺋﯿﺎت رﺳﻢ ﻧﻤﻮدار‬

‫در ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﺑﺎﻻ آرﮔﻮﻣﺎن ﻫﺎﯾﯽ وﺟﻮد دارﻧﺪ ﮐﻪ ﺑﺎ ﻣﻘﺪار دﻫﯽ آﻧﻬﺎ ﻣـﯽ ﺗـﻮان ﺑـﻪ ﺻـﻮرت دﻟﺨـﻮاه ﺑﺮﺧـﯽ‬
‫ﺟﺰﺋﯿﺎت رﺳﻢ ﻧﻤﻮدار را ﺗﻐﯿﯿﺮ داده و ﯾﺎ ﺟﺰﺋﯿﺎﺗﯽ را ﺑﻪ ﻧﻤﻮدار اﺿﺎﻓﻪ ﮐﺮد‪ .‬ﺑﺮﺧﯽ از اﯾﻦ آرﮔﻮﻣﺎن ﻫﺎ ﺑﻪ ﺷﺮح زﯾﺮﻧﺪ‪.‬‬

‫=‪ : type‬ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ آرﮔﻮﻣﺎن ﻣﯽ ﺗﻮان ﻧﻮع ﻧﻤﺎﯾﺶ ﻧﻤﻮدار را ﺗﻌﯿﯿﻦ ﮐﺮد‪ .‬ﻣﻘـﺪار ﭘـﯿﺶ ﻓـﺮض اﯾـﻦ آرﮔﻮﻣـﺎن‬
‫" ‪ " p‬اﺳﺖ ﮐﻪ ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﻧﻤﻮدار ﺑﻪ ﺻﻮرت ﻧﻘﻄﻪ اي ﻧﻤﺎﯾﺶ داده ﺷﻮد‪ .‬ﻣﯽ ﺗﻮان اﯾﻦ آرﮔﻮﻣﺎن را ﺑـﻪ دﻟﺨـﻮاه‬
‫ﻣﻘﺪار دﻫﯽ ﮐﺮد‪ .‬از ﻣﻘﺪار " ‪ " l‬ﺑﺮاي ﻧﻤﺎﯾﺶ ﺧﻄﯽ‪ ،‬از ﻣﻘﺪار " ‪ " b‬و " ‪ " o‬ﺑـﺮاي ﻧﻤـﺎﯾﺶ ﺧﻄـﯽ و ﻧﻘﻄـﻪ اي‪ ،‬از‬
‫ﻣﻘﺪار " ‪ " h‬ﺑﺮاي ﻧﻤﺎﯾﺶ ﺑﻪ ﺻﻮرت ﺧﻂ ﻫﺎي ﻋﻤﻮد ﺑﺮ ﻣﺤﻮر اﻓﻘﯽ‪ ،‬و از ﻣﻘﺪار " ‪ " s‬و " ‪ " S‬ﺑﺮاي ﻧﻤﺎﯾﺶ ﭘﻠﻪ اي‬
‫اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬در ﺻﻮرﺗﯽ ﮐﻪ از ﻣﻘﺪار " ‪ " n‬اﺳﺘﻔﺎده ﺷﻮد ﻧﻤﻮدار رﺳﻢ ﺷﺪه اﻣﺎ ﭼﯿﺰي ﻧﻤﺎﯾﺶ داده ﻧﻤﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- sample(1:10,20,rep=T‬‬


‫)‪> plot(x‬‬
‫)"‪> plot(x,type="l‬‬

‫‪35‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫=‪ xlab‬و =‪ : ylab‬از اﯾﻦ دو آرﮔﻮﻣﺎن ﺑﺮاي ﺑﺮﭼﺴﺐ ﮔﺬاري ﻣﺤﻮر اﻓﻘﯽ و ﻋﻤﻮدي اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)"‪> plot(x,type="h",xlab="order",ylab="measure‬‬

‫=‪ main‬و =‪ : sub‬از =‪ main‬ﺑﺮاي ﻗﺮار دادن ﻋﻨﻮان ﻧﻤﻮدار در ﺑﺎﻻ و از =‪ sub‬ﺑﺮاي ﻗﺮار دادن زﯾﺮﻋﻨـﻮان ﻧﻤـﻮدار‬
‫در ﭘﺎﯾﯿﻦ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)"‪> plot(x,type="s",main="First Plot",sub="first plot‬‬

‫=‪ : col‬ﺑﺮاي اﻧﺘﺨﺎب رﻧﮓ ﻧﻤﻮدار از =‪ col‬اﺳﺘﻔﺎده ﮐﺮده و در ﻣﻘﺎﺑﻞ آن ﻧﺎم ﯾـﺎ ﺷـﻤﺎره رﻧـﮓ ﻣـﻮرد ﻧﻈـﺮ را وارد‬
‫ﻣﯽ ﮐﻨﯿﻢ‪.‬‬

‫‪36‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .2‬دﺳﺘﻮرﻫﺎي ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﭘﺎﯾﯿﻦ‬

‫دﺳﺘﻮرﻫﺎي ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﭘﺎﯾﯿﻦ ﻣﺎ را ﻗﺎدر ﻣﯽ ﺳﺎزﻧﺪ ﺗﺎ ﻣﻮاردي از ﻗﺒﯿﻞ ﻧﻘﻄﻪ ﻫﺎ‪ ،‬ﺧﻄﻮط‪ ،‬و ﻧﻮﺷﺘﻪ ﻫﺎ را ﺑﻪ ﻧﻤﻮدارﻫﺎي‬
‫رﺳﻢ ﺷﺪه ﺗﻮﺳﻂ دﺳﺘﻮرﻫﺎي ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﺑﺎﻻ اﺿﺎﻓﻪ ﮐﻨﯿﻢ‪ .‬ﺑﺮﺧﯽ از ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﭘﺎﯾﯿﻦ ﺑﻪ ﺷﺮح زﯾﺮﻧﺪ‪.‬‬

‫)(‪text‬‬ ‫‪ .2.1‬ﺗﺎﺑﻊ‬

‫اﯾﻦ ﺗﺎﺑﻊ ﻣﺎ را ﻗﺎدر ﻣﯽ ﺳﺎزد ﺗﺎ ﺑﺮداري از اﻋﺪاد ﯾﺎ ﮐﺎراﮐﺘﺮﻫﺎ را ﺑﻪ ﻧﻘﺎط ﯾﮏ ﻧﻤﻮدار اﺿﺎﻓﻪ ﮐﻨﯿﻢ‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ‬
‫ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‪.‬‬
‫)‪text(x,y,labels, ...‬‬

‫در اﯾﻦ ﺗﺎﺑﻊ ‪ x‬و ‪ y‬ﺑﺮدارﻫﺎي ﻣﺸﺨﺺ ﮐﻨﻨﺪه ﻧﻘﺎط ﻣﻮرد ﻧﻈﺮ‪ ،‬و ‪ lables‬ﺑﺮدار ﺷﺎﻣﻞ اﻋﺪاد ﯾﺎ ﮐﺮاﮐﺘﺮﻫﺎي ﻣﻮرد ﻧﻈﺮ‬
‫اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫‪x <- 1:10‬‬


‫>‬ ‫)‪y <- rbinom(10,10,0.5‬‬
‫>‬ ‫)"‪plot(x,y,type="S‬‬
‫>‬ ‫))‪text(x,y,c(1:10‬‬

‫ﻣﺜﺎل ‪ :‬ﯾﮑﯽ از ﺑﯿﺸﺘﺮﯾﻦ ﻣﻮارد اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ text‬ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪.‬‬

‫)"‪> plot(x,y,type="n‬‬
‫))"‪> text(x,y,c("A","B","C","D","E","F","G","H","I","J‬‬

‫‪37‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)(‪abline‬‬ ‫‪ .2.2‬ﺗﺎﺑﻊ‬

‫ﺑﺮاي رﺳﻢ ﯾﮏ ﺧﻂ ﺑﺎ ﺷﯿﺐ و ﻋﺮض از ﻣﺒﺪاء دﻟﺨﻮاه روي ﯾﮏ ﻧﻤﻮدار از ﺗﺎﺑﻊ )(‪ abline‬اﺳﺘﻔﺎده ﻣـﯽ ﺷـﻮد‪ .‬در‬
‫ﺻﻮرﺗﯽ ﮐﻪ از اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ )‪ abline(a,b‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ ﺧﻄﯽ ﺑﺎ ﻋﺮض از ﻣﺒﺪاء ‪ a‬و ﺷﯿﺐ ‪ b‬روي ﻧﻤـﻮدار‬
‫رﺳﻢ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬اﮔﺮ از اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ )‪ abline(v=x‬ﯾﺎ )‪ abline(h=y‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ از ﻫﺮ ﻧﻘﻄﻪ ﻧﻤـﻮدار‬
‫ﺑﻪ ﺗﺮﺗﯿﺐ ﺧﻄﻮط ﻋﻤﻮد ﺑﺮ ﻣﺤﻮر ‪ x‬ﯾﺎ ‪ y‬رﺳﻢ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫‪x <- 1:10‬‬


‫>‬ ‫)‪y <- rpois(10, 5‬‬
‫>‬ ‫)‪plot(x,y‬‬
‫>‬ ‫)‪abline(0,1‬‬

‫‪38‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)‪> plot(x,y‬‬
‫)‪> abline(h=y‬‬

‫)(‪legend‬‬ ‫‪ .2.3‬ﺗﺎﺑﻊ‬

‫از ﺗﺎﺑﻊ )(‪ legend‬ﺑﺮاي وارد ﮐﺮدن ﯾﮏ ﻧﻮﺷﺘﻪ درﻗﺴﻤﺘﯽ از ﻧﻤﻮدار اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬در اﯾﻦ ﺗﺎﺑﻊ ﺑﺎﯾـﺪ ﻣﺨﺘـﺼﺎت‬
‫ﻧﻘﻄﻪ ﻣﻮرد ﻧﻈﺮ و ﻧﻮﺷﺘﻪ ﻣﻮرد ﻧﻈﺮ را وارد ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- rnorm(30‬‬


‫)‪> hist(x‬‬
‫‪> legend(-3,2.3,"first‬‬ ‫)"‬

‫‪39‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫در اﯾﻦ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮان آرﮔﻮﻣﺎن ﻫﺎﯾﯽ ﻧﯿﺰ وارد ﮐﺮد‪ .‬ﺑﺮﺧﯽ از اﯾﻦ آرﮔﻮﻣﺎن ﻫﺎ ﺑﻪ ﺷﺮح زﯾﺮﻧﺪ‪.‬‬

‫=‪ : fill‬ﺑﺎ وارد ﮐﺮدن ﻧﺎم ﯾﺎ ﺷﻤﺎره رﻧﮓ ﻣﺮﺑﻌﯽ ﺑﺎ آن رﻧﮓ وارد ﻧﻤﻮدار ﻣﯽ ﮐﻨﺪ‪.‬‬
‫=‪ : lty‬ﺑﺎ وارد ﮐﺮدن ﺷﻤﺎره ﺧﻂ ﻣﻮرد ﻧﻈﺮ ﺧﻄﯽ ﺑﺎ آن ﻧﻮع روي ﻧﻤﻮدار رﺳﻢ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫=‪ : lwd‬ﺑﺎ وارد ﮐﺮدن اﻧﺪازه ﺿﺨﺎﻣﺖ ﺧﻄﯽ ﺑﺎ آن ﺿﺨﺎﻣﺖ روي ﻧﻤﻮدار رﺳﻢ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫=‪ : pch‬ﺑﺎ وارد ﮐﺮدن ﺷﻤﺎره ﯾﺎ ﮐﺎراﮐﺘﺮ ﻣﻮرد ﻧﻈﺮ آن ﮐﺎراﮐﺘﺮ را وارد ﻧﻤﻮدار ﻣﯽ ﮐﻨﺪ‪.‬‬

‫)(‪title‬‬ ‫‪ .2.4‬ﺗﺎﺑﻊ‬

‫از اﯾﻦ ﺗﺎﺑﻊ ﺑﺮاي وارد ﮐﺮدن ﻋﻨﻮان در ﺑﺎﻻي ﻧﻤﻮدار و زﯾﺮﻋﻨﻮان در ﭘﺎﯾﯿﻦ ﻧﻤﻮدار اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> hist(x‬‬
‫‪> title("\n\n\n normal sample plot"," the plot of a sample of a‬‬
‫)" ‪normal distributed‬‬

‫‪40‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .3‬دﺳﺘﻮرات ﺗﺮﺳﯿﻢ ﺗﻌﺎﻣﻠﯽ‬

‫دﺳﺘﻮرات ﺗﺮﺳﯿﻢ ﺗﻌﺎﻣﻠﯽ ﺑﻪ ﻣﺎ اﯾﻦ اﻣﮑﺎن را ﻣﯽ دﻫﻨﺪ ﺗﺎ از ﻃﺮﯾﻖ ﻣﻮس اﻃﻼﻋﺎﺗﯽ را از ﻧﻤﻮدار درﯾﺎﻓﺖ ﮐﺮده ﯾﺎ ﺑﻪ آن‬
‫وارد ﮐﻨﯿﻢ‪ .‬ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺗﻌﺎﻣﻠﯽ ﺑﻪ ﺷﺮح زﯾﺮﻧﺪ‪.‬‬

‫)(‪locator‬‬ ‫‪ .3.1‬ﺗﺎﺑﻊ‬

‫از اﯾﻦ ﺗﺎﺑﻊ ﺑﺮاي ﺗﻌﯿﯿﻦ ﻣﺨﺘﺼﺎت ﻧﻘﺎط ﺗﻮﺳﻂ ﻣﻮس اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺎ ﻗﺮار دادن اﯾﻦ ﺗﺎﺑﻊ در ﺗﻮاﺑﻊ دﯾﮕﺮ ﻣﯽ ﺗﻮان از‬
‫ﻣﻘﺪاري ﮐﻪ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﻋﻨﻮان ﻣﺨﺘﺼﺎت ﻧﻘﻄﻪ ﮐﻠﯿﮏ ﺷﺪه ﺗﻮﺳﻂ ﻣﻮس ﺑﺮ ﻣﯽ ﮔﺮداﻧﺪ اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾـﻦ‬
‫ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‪.‬‬
‫)‪locator(n,type‬‬

‫آرﮔﻮﻣﺎن ‪ n‬ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﭼﻨﺪ ﻧﻘﻄﻪ ﺗﻮﺳﻂ ﻣﻮس ﮐﻠﯿﮏ ﺷﻮد‪ ،‬و آرﮔﻮﻣﺎن ‪ type‬ﻫﻤﺎﻧﻨﺪ آرﮔﻮﻣﺎن ‪ type‬در‬
‫ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺳﻄﺢ ﺑﺎﻻ ﻋﻤﻞ ﻣﯽ ﮐﻨﺪ و ﻣﯽ ﺗﻮاﻧﺪ ﻣﻘﺎدﯾﺮ " ‪ ، " p " ، " l " ، " n‬و ﯾﺎ " ‪ " o‬را اﺧﺘﯿﺎر ﮐﻨﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- rbinom(20, 20, 0.5‬‬


‫)‪> hist(x‬‬
‫)"‪> locator(3,"o‬‬
‫‪$x‬‬
‫‪[1] 6.916213 8.992383 10.951034‬‬

‫‪$y‬‬
‫‪[1] 4.000000 2.033199 8.003223‬‬

‫‪41‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫)(‪identify‬‬ ‫‪ .3.2‬ﺗﺎﺑﻊ‬

‫ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮان ﺗﺮﺗﯿﺐ ﻫﺮ ﻧﻘﻄﻪ از ﻧﻤﻮدار را ﺑﺎ ﮐﻠﯿﮏ ﻣﻮس روي آن ﻧﻘﻄﻪ ﻧﻤﺎﯾﺶ داد‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫)‪x <- rpois(10,10‬‬


‫>‬ ‫‪y <- 1:10‬‬
‫>‬ ‫)‪plot(x,y‬‬
‫>‬ ‫)‪identify(x,y‬‬

‫‪ .4‬ﺗﻐﯿﯿﺮ ﭘﺎراﻣﺘﺮﻫﺎي ﺗﻮاﺑﻊ‬

‫ﺑﺮاي ﺗﻐﯿﯿﺮ ﭘﺎراﻣﺘﺮﻫﺎي ﺗﻮاﺑﻊ از ﺗﺎﺑﻊ )(‪ par‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬در ﺻﻮرت ﺑﮑﺎر ﮔﯿﺮي اﯾﻦ ﺗﺎﺑﻊ ﺑﺪون آرﮔﻮﻣﺎن ﻟﯿﺴﺘﯽ از‬
‫ﭘﺎراﻣﺘﺮﻫﺎي ﻗﺎﺑﻞ ﺗﻐﯿﯿﺮ ﺗﻮاﺑﻊ ﺗﺮﺳﯿﻢ ﺑﻪ ﻧﻤﺎﯾﺶ در ﺧﻮاﻫﺪ آﻣﺪ‪ .‬از ﺗﺎﺑﻊ )(‪ par‬ﻗﺒﻞ از رﺳﻢ ﻧﻤﻮدار اﺳـﺘﻔﺎده ﻣـﯽ ﺷـﻮد‪.‬‬
‫ﺑﺮاي ﮐﺴﺐ اﻃﻼﻋﺎت دﻗﯿﻖ در ﻣﻮرد اﯾﻦ ﺗﺎﺑﻊ ﻣﯽ ﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر )(‪ ?par‬از ﻓﺎﯾﻞ ‪ help‬ﮐﻤﮏ ﮔﺮﻓﺖ‪.‬‬

‫‪42‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫آزﻣﻮن ﻫﺎي آﻣﺎري‬

‫‪ .1‬آزﻣﻮن ‪t'student‬‬

‫آزﻣﻮن ‪ t'student‬ﺑﺮاي اﻧﺠﺎم آزﻣﻮن در ﻣﻮرد ﻣﯿﺎﻧﮕﯿﻦ ﯾﮏ ﯾﺎ دو ﺟﺎﻣﻌﻪ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣـﯽ ﮔﯿـﺮد‪ .‬ﺑـﺮاي اﻧﺠـﺎم‬
‫آزﻣﻮن ‪ t‬از ﺗﺎﺑﻊ )(‪ t.test‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‪.‬‬

‫)‪t.test(x,y,alternative,mu,paired,var.equal,conf.level‬‬

‫در ﺳﺎﺧﺘﺎر ﻓﻮق ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ﯾﮏ ﻧﻤﻮﻧﻪ اي ﻓﻘﻂ ﯾﮏ ﺑﺮدار ﻋﺪدي در ﻗﺴﻤﺖ ‪ x‬ﺑﻪ ﻋﻨﻮان ﺑﺮدار ﻣﺸﺎﻫﺪات وارد‬
‫ﻣﯽ ﮐﻨﯿﻢ و ﺑﺮاي اﻧﺠﺎم آزﻣﻮن دو ﻧﻤﻮﻧﻪ اي ﻋﻼوه ﺑﺮ ﺑﺮدار ‪ x‬ﯾﮏ ﺑﺮدار ﻋـﺪدي ﻧﯿـﺰ در ﻗـﺴﻤﺖ ‪ y‬ﺑـﻪ ﻋﻨـﻮان ﺑـﺮدار‬
‫ﻣــﺸﺎﻫﺪات دوم وارد ﻣــﯽ ﮐﻨــﯿﻢ‪ .‬در ﻗــﺴﻤﺖ ‪ altervative‬ﻓــﺮض ﻣﻘﺎﺑــﻞ را ﺑــﻪ ﺻــﻮرت " ‪، " graeter‬‬
‫" ‪ ، " less‬و ﯾﺎ " ‪ " two.sided‬ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ﯾﮏ ﻃﺮﻓﻪ ﯾﺎ دو ﻃﺮﻓﻪ ﺑﻪ ﺻﻮرت دﻟﺨﻮاه وارد ﻣﯽ ﮐﻨـﯿﻢ‪ .‬در‬
‫ﻗﺴﻤﺖ ‪ mu‬ﻣﻘﺪار ﻣﯿﺎﻧﮕﯿﻦ ﺗﺤﺖ ﻓﺮض ﺻﻔﺮ را وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗﺴﻤﺖ ‪ paired‬اﮔﺮ ﻣﻘﺪار ‪ TRUE‬را وارد ﮐﻨﯿﻢ‬
‫آزﻣﻮن ﺑﻪ ﺻﻮرت ﺟﻔﺘﯽ اﻧﺠﺎم ﻣﯽ ﺷﻮد ﮐﻪ در اﯾﻦ ﺣﺎﻟﺖ ﺑﺎﯾﺪ اﻧﺪازه دو ﺑﺮدار وارد ﺷﺪه ﯾﮑﺴﺎن ﺑﺎﺷﺪ‪ .‬در ﺻﻮرﺗﯽ ﮐﻪ‬
‫ﻣﻘﺪار ‪ paired‬را ‪ FALSE‬وارد ﮐﻨﯿﻢ آزﻣﻮن ﺑﻪ ﺻﻮرت ﺟﻔﺘﯽ اﻧﺠﺎم ﻧﻤﯽ ﺷـﻮد‪ .‬در ﻗـﺴﻤﺖ ‪ var.equal‬اﮔـﺮ‬
‫ﻣﻘﺪار ‪ TRUE‬را وارد ﮐﻨﯿﻢ آزﻣﻮن ﺑﺎ ﺷﺮط ﺑﺮاﺑﺮي وارﯾﺎﻧﺲ ﻫﺎ اﻧﺠﺎم ﻣﯽ ﺷﻮد و اﮔﺮ ﻣﻘﺪار ‪ FALSE‬را وارد ﮐﻨـﯿﻢ‬
‫آزﻣﻮن ﺑﺎ ﺷﺮط ﻧﺎ ﺑﺮاﺑﺮي وارﯾﺎﻧﺲ ﻫﺎ اﻧﺠﺎم ﻣﯽ ﺷﻮد‪ .‬در ﻗﺴﻤﺖ ‪ conf.level‬ﻧﯿﺰ ﺑﺎﯾﺪ ﺳﻄﺢ اﻃﻤﯿﻨﺎن ﻣﻮرد ﻧﻈﺮ را‬
‫وارد ﮐﻨﯿﻢ‪ .‬در ﺳﺎﺧﺘﺎر ﺗﺎﺑﻊ ﮔﺰﯾﻨﻪ ﻫﺎ داراي ﻣﻘﺎدﯾﺮ ﭘﯿﺶ ﻓﺮض ﻣﯽ ﺑﺎﺷﻨﺪ‪ .‬ﻣﻘﺎدﯾﺮ ﭘﯿﺶ ﻓﺮض ﮔﺰﯾﻨﻪ ﻫﺎ ﺑﻪ ﺻﻮرت زﯾﺮ‬
‫اﺳﺖ‪.‬‬

‫‪t.test(x,y = NULL,alternative = c("two.sided", "less", "greater"),‬‬


‫)‪mu = 0,paired = FALSE,var.equal = FALSE,conf.level = 0.95‬‬

‫ﻣﺜﺎل ) آزﻣﻮن ﯾﮏ ﻧﻤﻮﻧﻪ اي ( ‪:‬‬

‫)‪> x <- rnorm(10‬‬


‫)‪> t.test(x‬‬

‫‪One Sample t-test‬‬

‫‪data: x‬‬
‫‪t = -0.7416, df = 9, p-value = 0.4772‬‬
‫‪alternative hypothesis: true mean is not equal to 0‬‬
‫‪95 percent confidence interval:‬‬
‫‪-1.0486421 0.5308475‬‬
‫‪sample estimates:‬‬
‫‪mean of x‬‬
‫‪-0.2588973‬‬

‫)‪> x <- rnorm(10,5,25); mean(x‬‬


‫‪[1] 1.971701‬‬

‫‪43‬‬
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

> t.test(x,mu=5,alternatinve="less")

One Sample t-test

data: x
t = -0.5815, df = 9, p-value = 0.5752
alternative hypothesis: true mean is not equal to 5
95 percent confidence interval:
-9.809701 13.753104
sample estimates:
mean of x
1.971701

: ( ‫ﻣﺜﺎل ) آزﻣﻮن دو ﻧﻤﻮﻧﻪ اي‬

> x <- rnorm(30); y <- rnorm(25)


> t.test(x,y,var.equal=T)

Two Sample t-test

data: x and y
t = 0.8449, df = 53, p-value = 0.402
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.3073231 0.7546665
sample estimates:
mean of x mean of y
0.3012040 0.0775323

> t.test(x,y,var.equal=F)

Welch Two Sample t-test

data: x and y
t = 0.855, df = 52.835, p-value = 0.3964
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-0.3010520 0.7483953
sample estimates:
mean of x mean of y
0.3012040 0.0775323

: ( ‫ﻣﺜﺎل ) آزﻣﻮن ﺟﻔﺘﯽ‬

> x <- rpois(15,5); y <- rpois(15,6)


> t.test(x,y,paired=T)

Paired t-test

data: x and y
t = -1.9335, df = 14, p-value = 0.07365
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-3.9373174 0.2039841
sample estimates:
mean of the differences
-1.866667

44
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

F ‫ آزﻣﻮن‬.2

‫ از‬F ‫ ﺑﺮاي اﻧﺠﺎم آزﻣـﻮن‬.‫ ﺑﺮاي اﻧﺠﺎم آزﻣﻮن در ﻣﻮرد وارﯾﺎﻧﺲ دو ﺟﺎﻣﻌﻪ ﻧﺮﻣﺎل ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد‬F ‫آزﻣﻮن‬
.‫ ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‬.‫ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‬var.test() ‫ﺗﺎﺑﻊ‬

var.test(x,y,ratio,alternative,conf.level)

‫ ﻧﺴﺒﺖ ﻣﻮرد ﻧﻈﺮ ﺗﺤﺖ ﻓﺮ ض ﺻﻔﺮ‬ratio ‫ در ﻗﺴﻤﺖ‬.‫ ﺑﺮدارﻫﺎي ﻣﺸﺎﻫﺪات را وارد ﻣﯽ ﮐﻨﯿﻢ‬y ‫ و‬x ‫در اﯾﻦ ﺗﺎﺑﻊ در‬
‫ ﻧﯿﺰ ﺑﻪ ﺗﺮﺗﯿﺐ ﻣﻘﺎدﯾﺮ ﻓﺮض ﻣﻘﺎﺑـﻞ و ﺳـﻄﺢ‬conf.level ‫ و‬alternative ‫ در ﻗﺴﻤﺖ ﻫﺎي‬.‫را وارد ﻣﯽ ﮐﻨﯿﻢ‬
.‫ ﻣﻘﺪار ﭘﯿﺶ ﻓﺮض ﮔﺰﯾﻨﻪ ﻫﺎي اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‬.‫اﻃﻤﯿﻨﺎن ﻣﻮرد ﻧﻈﺮ را وارد ﻣﯽ ﮐﻨﯿﻢ‬

var.test(x,y,ratio = 1,alternative = c("two.sided", "less",


"greater"),conf.level = 0.95)

:‫ﻣﺜﺎل‬

> x <- rnorm(30,0,1)


> y <- rnorm(30,0,5)
> var.test(x,y)

F test to compare two variances

data: x and y
F = 0.0237, num df = 29, denom df = 29, p-value < 2.2e-16
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
0.01128097 0.04979629
sample estimates:
ratio of variances
0.02370128

> var.test(x,y,ratio=0.02)

F test to compare two variances

data: x and y
F = 1.1851, num df = 29, denom df = 29, p-value = 0.6505
alternative hypothesis: true ratio of variances is not equal to 0.02
95 percent confidence interval:
0.01128097 0.04979629
sample estimates:
ratio of variances
0.02370128

45
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .3‬آزﻣﻮن دو ﺟﻤﻠﻪ اي‬

‫آزﻣﻮن دو ﺟﻤﻠﻪ اي ﺑﺮاي اﻧﺠﺎم آزﻣﻮن در ﻣﻮرد ﻧﺴﺒﺖ ﻣﻮﻓﻘﯿﺖ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد‪ .‬ﺑـﺮاي اﻧﺠـﺎم آزﻣـﻮن دو‬
‫ﺟﻤﻠﻪ اي از ﺗﺎﺑﻊ )(‪ binom.test‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‪.‬‬

‫)‪binom.test(x,n,p,alternative,conf.level‬‬

‫در اﯾﻦ ﺗﺎﺑﻊ ‪ x‬ﺗﻌﺪاد ﻣﻮﻓﻘﯿـﺖ‪ n ،‬ﺗﻌـﺪاد آزﻣـﺎﯾﺶ ﻫـﺎ‪ ،‬و ‪ p‬اﺣﺘﻤـﺎل ﻣﻮﻓﻘﯿـﺖ ﺗﺤـﺖ ﻓـﺮض ﺻـﻔﺮ اﺳـﺖ‪ .‬ﻣﻘـﺎدﯾﺮ‬
‫‪ alternative‬و ‪ conf.level‬ﻧﯿﺰ ﺑﻪ ﺗﺮﺗﯿﺐ ﻓﺮض ﻣﻘﺎﺑﻞ و ﺳﻄﺢ اﻃﻤﯿﻨﺎن ﻣﻮرد ﻧﻈـﺮ ﻫـﺴﺘﻨﺪ‪ .‬ﻣﻘـﺪار ﭘـﯿﺶ‬
‫ﻓﺮض ﮔﺰﯾﻨﻪ ﻫﺎي ﻓﻮق ﺑﻪ ﺻﻮرت زﯾﺮ اﺳﺖ‪.‬‬

‫‪binom.test(x,n,p = 0.5,alternative = c("two.sided", "less",‬‬


‫)‪"greater"),conf.level = 0.95‬‬

‫ﻣﺜﺎل ‪:‬‬

‫)‪> binom.test(48,90,0.5‬‬

‫‪Exact binomial test‬‬

‫‪data: 48 and 90‬‬


‫‪number of successes = 48, number of trials = 90, p-value = 0.5984‬‬
‫‪alternative hypothesis: true probability of success is not equal to‬‬
‫‪0.5‬‬
‫‪95 percent confidence interval:‬‬
‫‪0.4251273 0.6392843‬‬
‫‪sample estimates:‬‬
‫‪probability of success‬‬
‫‪0.5333333‬‬

‫‪ .4‬آزﻣﻮن ‪chi-square‬‬

‫آزﻣﻮن ‪ chi-square‬ﺑﺮاي اﻧﺠﺎم آزﻣﻮن در ﻣﻮرد ﻧﯿﮑﻮﯾﯽ ﺑﺮازش و ﯾﺎ ﺑﺮرﺳﯽ اﺳﺘﻘﻼل در ﺟـﺪاول ﭘﯿـﺸﺎﯾﻨﺪي ﻣـﻮرد‬
‫اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد‪ .‬ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ‪ chi-square‬از ﺗﺎﺑﻊ )(‪ chisq.test‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠـﯽ‬
‫اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‪.‬‬

‫)‪chisq.test(x,y,correct,p,rescale.p,simulate.p.value,B‬‬

‫در ﺳﺎﺧﺘﺎر ﻓﻮق ‪ x‬ﯾﮏ ﺑﺮدار ﯾﺎ ﯾﮏ ﻣﺎﺗﺮﯾﺲ و ‪ y‬ﯾﮏ ﺑﺮدار اﺳﺖ‪ .‬در ﺻﻮرﺗﯽ ﮐﻪ ﺑﺨﻮاﻫﯿﻢ آزﻣـﻮن ﻧﯿﮑـﻮﯾﯽ ﺑـﺮازش‬
‫اﻧﺠﺎم دﻫﯿﻢ ﺗﻨﻬﺎ در ﻗﺴﻤﺖ ‪ x‬ﺑﺮدار ﻓﺮاواﻧﯽ ﻫﺎ را وارد ﻣﯽ ﮐﻨﯿﻢ و ﻧﯿﺎزي ﻧﯿﺴﺖ در ﻗﺴﻤﺖ ‪ y‬ﭼﯿﺰي وارد ﺷـﻮد‪ .‬اﮔـﺮ‬
‫ﺑﺨﻮاﻫﯿﻢ آزﻣﻮن اﺳﺘﻘﻼل در ﺟﺪاول ﭘﯿﺸﺎﯾﻨﺪي اﻧﺠﺎم دﻫﯿﻢ ﯾﺎ ﺟﺪول را ﺑﻪ ﺻﻮرت ﯾـﮏ ﻣـﺎﺗﺮﯾﺲ در ﻗـﺴﻤﺖ ‪ x‬وارد‬

‫‪46‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﯽ ﮐﻨﯿﻢ و ﯾﺎ ﺑﺮدارﻫﺎي ﺟﻤﻊ ﻫـﺎي ﺣﺎﺷـﯿﻪ اي را در ﻗـﺴﻤﺖ ‪ x‬و ‪ y‬وارد ﻣـﯽ ﮐﻨـﯿﻢ‪ .‬در ﻗـﺴﻤﺖ ‪ correct‬در‬
‫ﺻﻮرﺗﯽ ﮐﻪ ﺑﺨﻮاﻫﯿﻢ ﺗﺼﺤﯿﺢ ﭘﯿﻮﺳﺘﮕﯽ اﻧﺠﺎم ﺷﻮد ﻣﻘﺪار ‪ ، TRUE‬و در ﻏﯿﺮ اﯾﻦ ﺻﻮرت ﻣﻘـﺪار ‪ FALSE‬را وارد‬
‫ﻣﯽ ﮐﻨـﯿﻢ‪ .‬در ﻗـﺴﻤﺖ ‪ p‬ﺑـﺮدار اﺣﺘﻤـﺎل ﻫـﺎ را ﺑـﺮاي اﻧﺠـﺎم آزﻣـﻮن ﻧﯿﮑـﻮﯾﯽ ﺑـﺮازش وارد ﻣـﯽ ﮐﻨـﯿﻢ‪ .‬در ﻗـﺴﻤﺖ‬
‫‪ rescale.p‬در ﺻﻮرﺗﯽ ﮐﻪ ﺟﻤﻊ اﺣﺘﻤﺎل ﻫﺎي ﺑﺮدار ‪ p‬ﺑﺮاﺑﺮ ﯾﮏ ﻧﺒﺎﺷﺪ ﻣﻘﺪار ‪ TRUE‬را وارد ﻣﯽ ﮐﻨﯿﻢ ﺗﺎ ﺑﺮدار‬
‫از ﻧﻮ ﻣﻘﺪار دﻫﯽ ﺷﻮد ﺑﻪ ﺻﻮرﺗﯽ ﮐﻪ ﺟﻤﻊ اﺣﺘﻤـﺎﻻت ﺑﺮاﺑـﺮ ﯾـﮏ ﺷـﻮد‪ .‬در ﻗـﺴﻤﺖ ‪ simulate.p.value‬در‬
‫ﺻﻮرﺗﯽ ﮐﻪ ﺑﺨﻮاﻫﯿﻢ ‪ p-value‬از روش ﻣﻮﻧﺖ‪-‬ﮐﺎرﻟﻮ ﺷﺒﯿﻪ ﺳﺎزي ﺷﻮد ﻣﻘﺪار ‪ TRUE‬را وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗـﺴﻤﺖ‬
‫‪ B‬ﻧﯿﺰ ﺗﻌﺪاد اﺟﺮاﻫﺎي روش ﻣﻮﻧﺖ‪-‬ﮐﺎرﻟﻮ را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﻣﻘﺪار ﭘﯿﺶ ﻓﺮض ﮔﺰﯾﻨﻪ ﻫﺎي ﻓﻮق ﺑـﻪ ﺻـﻮرت زﯾـﺮ‬
‫اﺳﺖ‪.‬‬

‫‪chisq.test(x,y = NULL,correct = TRUE,p = rep(1/length(x),length(x)),‬‬


‫)‪rescale.p = FALSE,simulate.p.value = FALSE,B = 2000‬‬

‫ﻣﺜﺎل ) آزﻣﻮن ﻧﯿﮑﻮﯾﯽ ﺑﺮازش ( ‪:‬‬

‫)‪> x <- c(15,18,12,17,11,19‬‬


‫)‪> prob <- rep(1/6,6‬‬
‫)‪> chisq.test(x,p=prob‬‬

‫‪Chi-squared test for given probabilities‬‬

‫‪data: x‬‬
‫‪X-squared = 3.4783, df = 5, p-value = 0.6267‬‬

‫ﻣﺜﺎل ) آزﻣﻮن اﺳﺘﻘﻼل ( ‪:‬‬

‫)‪> x <- matrix(c(10,15,14,10,12,15),2,3‬‬


‫‪> x‬‬
‫]‪[,1] [,2] [,3‬‬
‫]‪[1,‬‬ ‫‪10‬‬ ‫‪14‬‬ ‫‪12‬‬
‫]‪[2,‬‬ ‫‪15‬‬ ‫‪10‬‬ ‫‪15‬‬
‫)‪> chisq.test(x‬‬

‫‪Pearson's Chi-squared test‬‬

‫‪data: x‬‬
‫‪X-squared = 1.7944, df = 2, p-value = 0.4077‬‬

‫‪47‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫آزﻣﻮن ﻫﺎي ﻧﺎﭘﺎراﻣﺘﺮي‬

‫‪ .1‬آزﻣﻮن وﯾﻠﮑﺎﮐﺴﻮن‬

‫ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ﻧﺎﭘﺎراﻣﺘﺮي در ﻣﻮرد ﻣﯿﺎﻧﻪ ﯾﮏ ﯾﺎ دو ﺟﺎﻣﻌﻪ از آزﻣﻮن ﯾﮏ ﻧﻤﻮﻧﻪ اي ﯾـﺎ دو ﻧﻤﻮﻧـﻪ اي وﯾﻠﮑﺎﮐـﺴﻮن‬
‫اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬آزﻣﻮن دو ﻧﻤﻮﻧﻪ اي وﯾﻠﮑﺎﮐﺴﻮن ﺑﻪ ﻧﺎم آزﻣﻮن ﻣﻦ‪-‬وﯾﺘﻨﯽ ﻧﯿﺰ ﺷﻨﺎﺧﺘﻪ ﻣﯽ ﺷﻮد‪ .‬ﺑﺮاي اﻧﺠـﺎم آزﻣـﻮن‬
‫وﯾﻠﮑﺎﮐﺴﻮن از ﺗﺎﺑﻊ )(‪ wilcox.test‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‪.‬‬

‫‪wilcox.test(x,y,alternative,mu,paired,exact,correct,conf.int,‬‬
‫)‪conf.level‬‬

‫در ﺳﺎﺧﺘﺎر ﻓﻮق در ﻗﺴﻤﺖ ‪ x‬ﺑﺮدار ﻣﺸﺎﻫﺪات را وارد ﻣﯽ ﮐﻨﯿﻢ و در ﻗﺴﻤﺖ ‪ y‬در ﺻﻮرﺗﯽ ﮐـﻪ ﺑﺨـﻮاﻫﯿﻢ آزﻣـﻮن دو‬
‫ﻧﻤﻮﻧﻪ اي اﻧﺠﺎم دﻫﯿﻢ ﺑﺮدار ﻣﺸﺎﻫﺪات ﻧﻤﻮﻧﻪ دوم را وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗﺴﻤﺖ ‪ alternative‬ﻓﺮض ﻣﻘﺎﺑﻞ را ﺑـﻪ‬
‫ﺻﻮرت " ‪ ، " less " ، " graeter‬و ﯾﺎ " ‪ " two.sided‬ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ﯾﮏ ﻃﺮﻓﻪ ﯾﺎ دو ﻃﺮﻓﻪ ﺑﻪ ﺻﻮرت‬
‫دﻟﺨﻮاه وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗﺴﻤﺖ ‪ mu‬ﻣﻘﺪار ﻣﯿﺎﻧﻪ را ﺗﺤﺖ ﻓﺮض ﺻﻔﺮ وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗﺴﻤﺖ ‪ paired‬اﮔﺮ ﻣﻘﺪار‬
‫‪ TRUE‬را وارد ﮐﻨﯿﻢ آزﻣﻮن ﺑﻪ ﺻﻮرت ﺟﻔﺘﯽ اﻧﺠﺎم ﻣﯽ ﺷﻮد ﮐﻪ در اﯾﻦ ﺣﺎﻟﺖ ﺑﺎﯾﺪ اﻧﺪازه دو ﺑﺮدار وارد ﺷﺪه ﯾﮑﺴﺎن‬
‫ﺑﺎﺷﺪ‪ .‬در ﺻﻮرﺗﯽ ﮐﻪ ﻣﻘﺪار ‪ paired‬را ‪ FALSE‬وارد ﮐﻨﯿﻢ آزﻣﻮن ﺑﻪ ﺻﻮرت ﺟﻔﺘﯽ اﻧﺠﺎم ﻧﻤﯽ ﺷﻮد‪ .‬در ﻗـﺴﻤﺖ‬
‫‪ exact‬اﮔﺮ ﻣﻘﺪار ‪ TRUE‬را وارد ﮐﻨﯿﻢ ﻣﻘﺪار ‪ p-value‬ﺑﻪ ﺻﻮرت دﻗﯿﻖ ﻣﺤﺎﺳﺒﻪ ﻣﯽ ﺷﻮد‪ ،‬در ﻏﯿﺮ اﯾـﻦ ﺻـﻮرت‬
‫‪ p-value‬ﺑﺎ ﺗﻘﺮﯾﺐ ﻣﺤﺎﺳﺒﻪ ﻣﯽ ﮔﺮدد‪ .‬در ﻗﺴﻤﺖ ‪ correct‬در ﺻﻮرﺗﯽ ﮐﻪ ﺑﺨـﻮاﻫﯿﻢ ﺗـﺼﺤﯿﺢ ﭘﯿﻮﺳـﺘﮕﯽ اﻧﺠـﺎم‬
‫ﺷﻮد ﻣﻘﺪار ‪ ، TRUE‬و در ﻏﯿﺮ اﯾﻦ ﺻﻮرت ﻣﻘﺪار ‪ FALSE‬را وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗﺴﻤﺖ ‪ conf.int‬در ﺻﻮرﺗﯽ‬
‫ﮐﻪ ﺑﺨﻮاﻫﯿﻢ ﻓﺎﺻﻠﻪ اﻃﻤﯿﻨﺎن ﻣﺤﺎﺳﺒﻪ ﺷﻮد ﻣﻘﺪار ‪ TRUE‬و در ﻏﯿﺮ اﯾﻦ ﺻﻮرت ﻣﻘﺪار ‪ FALSE‬را وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در‬
‫ﻗﺴﻤﺖ ‪ conf.level‬ﻧﯿﺰ ﺑﺎﯾﺪ ﺳﻄﺢ اﻃﻤﯿﻨﺎن ﻣﻮرد ﻧﻈﺮ را وارد ﮐﻨﯿﻢ‪ .‬ﻣﻘـﺪار ﭘـﯿﺶ ﻓـﺮض ﮔﺰﯾﻨـﻪ ﻫـﺎي ﻓـﻮق ﺑـﻪ‬
‫ﺻﻮرت زﯾﺮ اﺳﺖ‪.‬‬

‫‪wilcox.test(x,y = NULL,alternative = c("two.sided", "less",‬‬


‫‪"greater"),mu = 0,paired = FALSE,exact = NULL,correct = TRUE,‬‬
‫)‪conf.int = FALSE,conf.level = 0.95‬‬

‫ﻣﺜﺎل ) آزﻣﻮن ﯾﮏ ﻧﻤﻮﻧﻪ اي ( ‪:‬‬

‫)‪> x <- sample(c(-5:5),20,rep=T‬‬


‫‪> x‬‬
‫‪[1] 1 -2 2 0 -5 3 -2 -5 5‬‬ ‫‪1 -3‬‬ ‫‪1 -1 -2 -3 -1‬‬ ‫‪3‬‬ ‫‪3 -3 -5‬‬
‫)‪> wilcox.test(x,exact=F‬‬

‫‪Wilcoxon signed rank test with continuity correction‬‬

‫‪data: x‬‬
‫‪V = 71.5, p-value = 0.351‬‬
‫‪alternative hypothesis: true location is not equal to 0‬‬

‫‪48‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﺜﺎل ) آزﻣﻮن ﻣﻦ‪-‬وﯾﺘﻨﯽ ( ‪:‬‬

‫)‪> x <- sample(c(5:15),20,rep=T‬‬


‫)‪> y <- sample(c(0:20),20,rep=T‬‬
‫‪> x‬‬
‫‪[1] 15 13 13 14 13 6 7 10 12 14 6‬‬ ‫‪9‬‬ ‫‪7 15 14‬‬ ‫‪8 11 14‬‬ ‫‪5 12‬‬
‫‪> y‬‬
‫‪[1] 15 3 20 11 15 0 12 19 7 10 14‬‬ ‫‪6 19‬‬ ‫‪0‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪3 11 13 13‬‬
‫)‪> wilcox.test(x,y,exact=F‬‬

‫‪Wilcoxon rank sum test with continuity correction‬‬

‫‪data: x and y‬‬


‫‪W = 218, p-value = 0.6347‬‬
‫‪alternative hypothesis: true location shift is not equal to 0‬‬

‫ﻣﺜﺎل ) آزﻣﻮن ﺟﻔﺘﯽ ( ‪:‬‬

‫)‪> wilcox.test(x,y,exact=F,paired=T‬‬

‫‪Wilcoxon signed rank test with continuity correction‬‬

‫‪data: x and y‬‬


‫‪V = 107.5, p-value = 0.6288‬‬
‫‪alternative hypothesis: true location shift is not equal to 0‬‬

‫‪ .2‬آزﻣﻮن ﮐﻮﻟﻤﻮﮔﺮوف‪-‬اﺳﻤﯿﺮوﻧﻮف‬

‫ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ﻧﺎﭘﺎراﻣﺘﺮي در ﻣﻮرد ﺗﻮزﯾﻊ ﯾﮏ ﯾﺎ دو ﻣﺘﻐﯿﺮ از آزﻣﻮن ﮐﻮﻟﻤﻮﮔﺮوف‪-‬اﺳﻤﯿﺮوﻧﻮف اﺳﺘﻔﺎده ﻣﯽ ﺷـﻮد‪.‬‬
‫ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ﮐﻮﻟﻤﻮﮔﺮوف‪-‬اﺳﻤﯿﺮوﻧﻮف از ﺗﺎﺑﻊ )(‪ ks.test‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ‬
‫زﯾﺮ اﺳﺖ‪.‬‬

‫)‪ks.test(x,y,...,alternative,exact‬‬

‫در ﺗﺎﺑﻊ ﻓﻮق در ﻗﺴﻤﺖ ‪ x‬ﺑﺮدار ﻣﺸﺎﻫﺪات را وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗـﺴﻤﺖ ‪ y‬در ﺻـﻮرﺗﯽ ﮐـﻪ ﺑﺨـﻮاﻫﯿﻢ آزﻣـﻮن ﯾـﮏ‬
‫ﻧﻤﻮﻧﻪ اي اﻧﺠﺎم دﻫﯿﻢ ﻧﺎم ﺗﻮزﯾﻊ ﭘﯿﻮﺳﺘﻪ ﻣﻮرد ﻧﻈﺮ و در ﺻﻮرﺗﯽ ﮐﻪ ﺑﺨﻮاﻫﯿﻢ آزﻣﻮن دو ﻧﻤﻮﻧﻪ اي اﻧﺠـﺎم دﻫـﯿﻢ ﺑـﺮدار‬
‫ﻣﺸﺎﻫﺪات دوم را وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗﺴﻤﺖ ﺑﻌﺪ از ‪ y‬ﭘﺎراﻣﺘﺮﻫﺎي ﺗﻮزﯾﻊ وارد ﺷﺪه در ﻗـﺴﻤﺖ ‪ y‬ﺑـﺮاي آزﻣـﻮن ﯾـﮏ‬
‫ﻧﻤﻮﻧﻪ اي را وارد ﻣﯽ ﮐﻨﯿﻢ‪ .‬در ﻗﺴﻤﺖ ﻫﺎي ‪ alternative‬و ‪ exact‬ﻧﯿﺰ ﺑﻪ ﺗﺮﺗﯿﺐ ﻓﺮض ﻣﻘﺎﺑـﻞ و اﯾﻨﮑـﻪ آﯾـﺎ‬
‫‪ p-value‬ﺑﻪ ﺻﻮرت دﻗﯿﻖ ﯾﺎ ﺗﻘﺮﯾﺒﯽ ﻣﺤﺎﺳﺒﻪ ﺷﻮد را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﻣﻘﺪار ﭘـﯿﺶ ﻓـﺮض ﮔﺰﯾﻨـﻪ ﻫـﺎي ﻓـﻮق ﺑـﻪ‬
‫ﺻﻮرت زﯾﺮ اﺳﺖ‪.‬‬

‫‪ks.test(x,y,...,alternative = c("two.sided", "less", "greater"),‬‬


‫)‪exact = NULL‬‬

‫‪49‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻣﺜﺎل ) آزﻣﻮن ﯾﮏ ﻧﻤﻮﻧﻪ اي ( ‪:‬‬

‫)‪> x <- rnorm(30‬‬


‫)"‪> ks.test(x,"pnorm‬‬

‫‪One-sample Kolmogorov-Smirnov test‬‬

‫‪data: x‬‬
‫‪D = 0.1434, p-value = 0.5221‬‬
‫‪alternative hypothesis: two-sided‬‬

‫ﻣﺜﺎل ) آزﻣﻮن دو ﻧﻤﻮﻧﻪ اي ( ‪:‬‬

‫)‪> x <- rnorm(30‬‬


‫)‪> y <- rnorm(25‬‬
‫)‪> ks.test(x,y‬‬

‫‪Two-sample Kolmogorov-Smirnov test‬‬

‫‪data: x and y‬‬


‫‪D = 0.2333, p-value = 0.3848‬‬
‫‪alternative hypothesis: two-sided‬‬

‫‪ .3‬آزﻣﻮن ﺷﺎﭘﯿﺮو‪-‬وﯾﻠﮏ‬

‫آزﻣﻮن ﺷﺎﭘﯿﺮو‪-‬وﯾﻠﮏ ﺑﺮاي ﺑﺮرﺳﯽ ﻧﺮﻣﺎل ﺑﻮدن ﺗﻮزﯾﻊ ﻣﺸﺎﻫﺪات ﺑﻪ ﺻﻮرت ﻧﺎﭘﺎراﻣﺘﺮي ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣـﯽ ﮔﯿـﺮد‪.‬‬
‫ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ﺷﺎﭘﯿﺮو‪-‬وﯾﻠﮏ از ﺗﺎﺑﻊ )(‪ shapiro.test‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ زﯾﺮ‬
‫اﺳﺖ‪.‬‬
‫)‪shapiro.test(x‬‬

‫ﻫﻤﺎﻧﻄﻮر ﮐﻪ ﻣﺸﺎﻫﺪه ﻣﯽ ﺷﻮد ﺗﻨﻬﺎ ﻣﻮردي ﮐﻪ ﺑﺎﯾﺪ در ﺗﺎﺑﻊ وارد ﮐﺮد ﺑﺮدار ﻣﺸﺎﻫﺪات اﺳﺖ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- rnorm(25‬‬


‫)‪> shapiro.test(x‬‬

‫‪Shapiro-Wilk normality test‬‬

‫‪data: x‬‬
‫‪W = 0.9317, p-value = 0.09503‬‬

‫‪50‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .4‬آزﻣﻮن ﮐﺮوﺳﮑﺎل‪-‬واﻟﯿﺲ‬

‫آزﻣﻮن ﮐﺮوﺳﮑﺎل‪-‬واﻟﯿﺲ ﺑﺮاي اﻧﺠﺎم ﻣﻘﺎﯾﺴﻪ در ﻣﻮرد ﺑﯿﺶ از دو ﺟﺎﻣﻌﻪ ﺑﻪ ﻋﻨﻮان آﻧﺎﻟﯿﺰ وارﯾﺎﻧﺲ ﯾﮏ ﻃﺮﻓﻪ ﻧﺎﭘﺎراﻣﺘﺮي‬
‫ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد‪ .‬ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ﮐﺮوﺳﮑﺎل‪-‬واﻟﯿﺲ از ﺗﺎﺑﻊ )(‪ kruskal.test‬اﺳﺘﻔﺎده ﻣـﯽ ﺷـﻮد‪.‬‬
‫ﺳﺎﺧﺘﺎر ﮐﻠﯽ اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‪.‬‬
‫)‪kruskal.test(x,g‬‬

‫در اﯾﻦ ﺗﺎﺑﻊ در ﻗﺴﻤﺖ ‪ x‬ﺑﺮدار ﻣﺸﺎﻫﺪات و در ﻗﺴﻤﺖ ‪ g‬ﻓﺎﮐﺘﻮر ﻣﺸﺨﺺ ﮐﻨﻨﺪه ﮔﺮوه ﻫﺎ را وارد ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫>‬ ‫)‪fact <- rep(1:4,each=5‬‬


‫>‬ ‫)‪fact <- factor(fact‬‬
‫>‬ ‫)‪x <- sample(20:30,20,rep=T‬‬
‫>‬ ‫)‪kruskal.test(x,fact‬‬

‫‪Kruskal-Wallis rank sum test‬‬

‫‪data: x and fact‬‬


‫‪Kruskal-Wallis chi-squared = 0.707, df = 3, p-value = 0.8715‬‬

‫‪51‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫رﮔﺮﺳﯿﻮن‬

‫‪ .1‬ﻣﺪل ﻫﺎي ﺧﻄﯽ‬

‫ﺑﺮاي اﻧﺠﺎم ﯾﮏ ﺗﺤﻠﯿﻞ رﮔﺮﺳﯿﻮﻧﯽ در ‪ R‬اﺑﺘﺪا ﺑﺎﯾﺪ ﻣﺪل را ﺗﻌﯿﯿﻦ و ﻣﻌﺮﻓﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺮاي ﻣﻌﺮﻓﯽ ﻣﺪل ﻫﺎي ﺧﻄﯽ ﺑﻪ ﻃﻮر‬
‫ﻣﻌﻤﻮل از ﺗﻮاﺑﻊ )(‪ lm‬ﯾﺎ )(‪ glm‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺗﺎﺑﻊ )(‪ lm‬داراي ﮐﺎرﺑﺮدﻫﺎي وﺳﯿﻌﯽ ﺑﻮده و ﺑﻪ ﻃـﻮر ﮐﻠـﯽ در‬
‫ﺑﺴﯿﺎري از ﺗﺤﻠﯿﻞ ﻫﺎي ﺧﻄﯽ از ﺟﻤﻠﻪ آﻧﺎﻟﯿﺰ وارﯾﺎﻧﺲ ﺑﺮاي ﻣﻌﺮﻓﯽ ﻣﺪل ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد‪ .‬ﺑﺮاي ﺗﻌﺮﯾﻒ ﯾﮏ‬
‫ﻣﺪل ﺧﻄﯽ در ﺗﺎﺑﻊ )(‪ lm‬از ﻋﻼﻣﺖ " ~ " در ﻣﯿﺎن ﻧﺎم ﻣﺘﻐﯿﺮ واﺑـﺴﺘﻪ و ﻣﺘﻐﯿﺮﻫـﺎي ﻣـﺴﺘﻘﻞ اﺳـﺘﻔﺎده ﻣـﯽ ﮐﻨـﯿﻢ‪ .‬در‬
‫ﺻﻮرﺗﯽ ﮐﻪ ﻣﺪل داراي ﻋﺮض از ﻣﺒﺪاء ﺻﻔﺮ ﺑﺎﺷﺪ از " ‪ " -1‬ﺑﺮاي ﻧﺸﺎن دادن اﯾﻦ ﻣﻄﻠﺐ در ﻣﺪل اﺳﺘﻔﺎده ﻣﯽ ﮐﻨـﯿﻢ‪.‬‬
‫ﻣﺜﻼ ﯾﮏ ﻣﺪل ﺧﻄﯽ ﺳﺎده ﺑﺎ ﻣﺘﻐﯿﺮ ﻣﺴﺘﻘﻞ ‪ x‬و ﻣﺘﻐﯿﺮ واﺑﺴﺘﻪ ‪ y‬و ﻋﺮض از ﻣﺒﺪاء ﺻﻔﺮ را ﺑـﻪ ﺻـﻮرت ) ‪( y~x -1‬‬
‫ﻧﺸﺎن ﻣﯽ دﻫﯿﻢ‪ .‬ﭘﺲ از ﻣﻌﺮﻓﯽ ﻣﺪل ﺑﺎ اﺳﺘﻔﺎده از ﺗـﺎﺑﻊ )(‪ lm‬از دو ﺗـﺎﺑﻊ )(‪ summary‬و )(‪ plot‬ﺑـﺮاي اﻧﺠـﺎم‬
‫ﺗﺤﻠﯿﻞ ﻫﺎ و رﺳﻢ ﻧﻤﻮدارﻫﺎي ﻣﺪل اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬اﯾﻦ دو ﺗﺎﺑﻊ زﻣﺎﻧﯽ ﮐﻪ ﺑﺎ ﺗﺎﺑﻊ )(‪ lm‬ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮﻧﺪ‬
‫ﺑﺎ اﯾﻦ ﺗﺎﺑﻊ ﺳﺎزش ﯾﺎﻓﺘﻪ و ﺧﺮوﺟﯽ ﺧﻮد را ﺑﺎ آن ﻣﻨﻄﺒﻖ ﻣﯽ ﺳﺎزﻧﺪ‪ .‬از ﺧﺮوﺟﯽ ﺗـﺎﺑﻊ )(‪ summary‬ﻣـﯽ ﺗـﻮان در‬
‫ﺗـﺎﺑﻊ )(‪coef‬‬ ‫ﺗﻮاﺑﻌﯽ ﻧﻈﯿﺮ )(‪ coef() ، resid‬اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﺗﺎﺑﻊ )(‪ resid‬ﺑﺮاي ﻣـﺸﺎﻫﺪه ﺑﺎﻗﯿﻤﺎﻧـﺪه ﻫـﺎ و‬
‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﺿﺮاﯾﺐ ﻣﻮرد اﺳـﺘﻔﺎده ﻗـﺮار ﻣـﯽ ﮔﯿﺮﻧـﺪ‪ .‬ﻫﻤﭽﻨـﯿﻦ از ﺧﺮوﺟـﯽ ﺗـﺎﺑﻊ )(‪ lm‬ﻧﯿـﺰ ﻋـﻼوه ﺑـﺮ ﺗﻮاﺑـﻊ‬
‫)(‪predict‬‬ ‫)(‪ summary‬و )(‪ ، plot‬ﻣﯽ ﺗﻮان در ﺗﻮاﺑﻊ )(‪ predict‬و )(‪ fitted‬اﺳﺘﻔﺎده ﮐﺮد‪ .‬ﺗﺎﺑﻊ‬
‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﻘﺎدﯾﺮ ﭘﯿﺶ ﺑﯿﻨﯽ ﺷﺪه و ﺗﺎﺑﻊ )(‪ fitted‬ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﻘـﺎدﯾﺮ ﺑﺮازاﻧـﺪه ﺷـﺪه ﻣـﻮرد اﺳـﺘﻔﺎده ﻗـﺮار‬
‫ﻣﯽ ﮔﯿﺮﻧﺪ‪ .‬اﻟﺒﺘﻪ ﺑﺪون اﺳﺘﻔﺎده از اﯾﻦ ﺗﻮاﺑﻊ ﻧﯿﺰ ﻣﯽ ﺗﻮان ﻣﻘﺎدﯾﺮ ﻣﻮرد ﻧﻈﺮ را ﺑﺎ ﻓﺮاﺧﻮاﻧﯽ ﺑﻪ ﺻﻮرت اﺟﺰاي ﯾﮏ ﻟﯿﺴﺖ‬
‫ﻣﺸﺎﻫﺪه ﮐﺮد‪.‬‬
‫ﻣﺜﺎل ) ﻣﺪل ﺧﻄﯽ ﺳﺎده ( ‪:‬‬

‫)‪> x <- sample(20:50, 20‬‬


‫)‪> y <- 5+2*x+rnorm(20‬‬
‫)‪> lm(y~x‬‬

‫‪Call:‬‬
‫)‪lm(formula = y ~ x‬‬

‫‪Coefficients:‬‬
‫)‪(Intercept‬‬ ‫‪x‬‬
‫‪6.034‬‬ ‫‪1.968‬‬

‫))‪> result <- summary(lm(y~x‬‬


‫‪> result‬‬

‫‪Call:‬‬
‫)‪lm(formula = y ~ x‬‬

‫‪Residuals:‬‬
‫‪Min‬‬ ‫‪1Q‬‬ ‫‪Median‬‬ ‫‪3Q‬‬ ‫‪Max‬‬
‫‪-2.06729 -0.37419‬‬ ‫‪0.04529‬‬ ‫‪0.60234‬‬ ‫‪2.38873‬‬

‫‪52‬‬
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.03444 1.11164 5.428 3.71e-05 ***
x 1.96844 0.03124 63.009 < 2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.069 on 18 degrees of freedom


Multiple R-Squared: 0.9955, Adjusted R-squared: 0.9952
F-statistic: 3970 on 1 and 18 DF, p-value: < 2.2e-16

> coef(result) ### or use result[['coef']]


Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.034437 1.1116414 5.428402 3.708729e-05
x 1.968442 0.0312408 63.008679 1.444519e-22
> resid(result) ### or use result[['resid']]
1 2 3 4 5
6
-0.99868842 0.57877341 -0.19974547 -0.34595725 0.06239822 -
0.14850556
7 8 9 10 11
12
0.22635293 0.77872693 1.44455478 -0.45889197 -2.06728728
0.02818797
13 14 15 16 17
18
-1.59416327 0.99571160 0.08357862 -1.45554332 0.67302312 -
0.09639819
19 20
0.10514744 2.38872574
> fitted(lm(y~x)) ### or use lm(y~x)[['fitted']]
1 2 3 4 5 6 7
8
79.20855 89.24124 105.29355 57.13663 71.18240 47.10393 99.27394
69.17586
9 10 11 12 13 14 15
16
49.11047 81.21509 53.12355 63.15624 65.16278 45.09740 61.14970
83.22163
17 18 19 20
91.24778 93.25432 95.26086 101.28048
> predict(lm(y~x)) ### or use lm(y~x)[['predict']]
1 2 3 4 5 6 7
8
79.20855 89.24124 105.29355 57.13663 71.18240 47.10393 99.27394
69.17586
9 10 11 12 13 14 15
16
49.11047 81.21509 53.12355 63.15624 65.16278 45.09740 61.14970
83.22163
17 18 19 20
91.24778 93.25432 95.26086 101.28048

53
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

‫ در ﻧﺤﻮه ﻣﻌﺮﻓـﯽ‬R ‫ﺗﻨﻬﺎ ﺗﻔﺎوت اﻧﺠﺎم ﯾﮏ ﺗﺤﻠﯿﻞ رﮔﺮﺳﯿﻮﻧﯽ ﺧﻄﯽ ﺳﺎده و ﯾﮏ ﺗﺤﻠﯿﻞ رﮔﺮﺳﯿﻮﻧﯽ ﺧﻄﯽ ﭼﻨﺪﮔﺎﻧﻪ در‬
‫ ﮐﺎﻓﯿـﺴﺖ ﻣﺘﻐﯿﺮﻫـﺎي ﻣـﺴﺘﻘﻞ را ﺑـﺎ‬lm() ‫ ﺑﺮاي ﻣﻌﺮﻓﯽ ﯾﮏ ﻣﺪل ﺧﻄﯽ ﭼﻨﺪﮔﺎﻧﻪ در ﺗﺎﺑﻊ‬.‫ اﺳﺖ‬lm() ‫ﻣﺪل در ﺗﺎﺑﻊ‬
.‫ ﺑﻘﯿﻪ ﻣﻮارد درﺳﺖ ﺷﺒﯿﻪ ﻣﺪل ﺧﻄﯽ ﺳﺎده اﻧﺠﺎم ﻣﯽ ﺷﻮد‬.‫ " در ﮐﻨﺎر ﻫﻢ وارد ﮐﻨﯿﻢ‬+ " ‫ﻋﻼﻣﺖ‬
: ( ‫ﻣﺜﺎل ) ﻣﺪل ﺧﻄﯽ ﭼﻨﺪﮔﺎﻧﻪ‬

> x1 <- sample(20:50, 15)


> x2 <- sample(100:200, 15)
> x3 <- sample(35:80, 15)
> y <- 20+10*x1+36*x2+x3
> result <- summary(lm(y~x1+x2+x3))
> result

Call:
lm(formula = y ~ x1 + x2 + x3)

Residuals:
Min 1Q Median 3Q Max
-2.226e-13 -1.601e-13 -2.370e-14 5.958e-14 8.123e-13

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.000e+01 6.659e-13 3.004e+13 <2e-16 ***
x1 1.000e+01 7.354e-15 1.360e+15 <2e-16 ***
x2 3.600e+01 2.900e-15 1.241e+16 <2e-16 ***
x3 1.000e+00 5.857e-15 1.707e+14 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 2.88e-13 on 11 degrees of freedom


Multiple R-Squared: 1, Adjusted R-squared: 1
F-statistic: 5.694e+31 on 3 and 11 DF, p-value: < 2.2e-16

> result[['coef']] ### or use coef(result)


Estimate Std. Error t value Pr(>|t|)
(Intercept) 20 6.658508e-13 3.003676e+13 6.996206e-144
x1 10 7.353855e-15 1.359831e+15 4.272794e-162
x2 36 2.900086e-15 1.241342e+16 1.164768e-172
x3 1 5.856779e-15 1.707423e+14 3.493768e-152
> result[['resid']] ### or use resid(result)
1 2 3 4 5
8.122656e-13 -1.768020e-13 -2.370040e-14 -2.225954e-13 1.712964e-13
6 7 8 9 10
-9.655112e-14 -1.597916e-13 -1.997304e-14 2.331408e-14 1.000102e-13
11 12 13 14 15
-1.085188e-13 -1.228068e-14 -2.220154e-13 -1.605037e-13 9.584586e-14

54
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .2‬رﺳﻢ ﻧﻤﻮدار ﺧﻂ رﮔﺮﺳﯿﻮن‬

‫ﺑﺮاي رﺳﻢ ﻧﻤﻮدار ﺧﻂ رﮔﺮﺳﯿﻮن اﺑﺘﺪا ﻧﻤﻮدار ﭘﺮاﮐﻨﺪﮔﯽ ﻣﺘﻐﯿﺮ ﻣﺴﺘﻘﻞ در ﻣﻘﺎﺑﻞ ﻣﺘﻐﯿﺮ واﺑﺴﺘﻪ را رﺳﻢ ﮐﺮده و ﺳﭙﺲ ﺑﺎ‬
‫اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ abline‬ﺧﻂ رﮔﺮﺳﯿﻮن را روي ﻧﻤﻮدار ﭘﺮاﮐﻨﺪﮔﯽ رﺳﻢ ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x <- sample(20:50, 20‬‬


‫)‪> y <- 5+2*x+rnorm(20‬‬
‫)‪> lm(y~x‬‬

‫‪Call:‬‬
‫)‪lm(formula = y ~ x‬‬

‫‪Coefficients:‬‬
‫)‪(Intercept‬‬ ‫‪x‬‬
‫‪4.967‬‬ ‫‪2.007‬‬

‫)‪> plot(x,y‬‬
‫))‪> abline(lm(y~x‬‬

‫‪55‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .3‬ﺑﺮرﺳﯽ ﻓﺮض ﻫﺎي ﻣﺪل‬

‫ﺗـﺎﺑﻊ )(‪lm‬‬ ‫ﺑﺮاي ﺑﺮرﺳﯽ ﺑﺮﻗﺮار ﺑﻮدن ﻓﺮض ﻫﺎي ﻣﺪل ﺑﺎ اﺳﺘﻔﺎده از روش ﻧﻤـﻮداري از ﺗـﺎﺑﻊ )(‪ plot‬ﺑـﻪ ﻫﻤـﺮاه‬
‫اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﺗﺎﺑﻊ )(‪ plot‬ﭼﻬﺎر ﻧﻤﻮدار رﺳﻢ ﻣﯽ ﮐﻨﺪ و آﻧﻬﺎ را ﯾﮑﯽ ﭘﺲ از دﯾﮕﺮي ﻧﻤﺎﯾﺶ ﻣـﯽ دﻫـﺪ‪ .‬ﺑـﺮاي‬
‫ﺗﺎﺑﻊ )(‪plot‬‬ ‫ﻧﻤﺎﯾﺶ ﻫﺮ ﭼﻬﺎر ﻧﻤﻮدار در ﯾﮏ ﺻﻔﺤﻪ از ﺗﺎﺑﻊ )(‪ par‬ﺑﻪ ﺷﮑﻞ ))‪ par(mfrow=c(2,2‬ﻗﺒﻞ از‬
‫اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫))‪> par(mfrow=c(2,2‬‬
‫))‪> plot(lm(y~x‬‬

‫‪56‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .4‬آزﻣﻮن ﻓﺮض‬

‫ﺟﺪوﻟﯽ ﮐﻪ در ﺧﺮوﺟﯽ ﺗﺎﺑﻊ )(‪ summary‬ﻇﺎﻫﺮ ﻣﯽ ﺷﻮد ﻣﻘﺎدﯾﺮ ﻋﺮض از ﻣﺒـﺪاء و ﺿـﺮاﯾﺐ را ﺑـﺎ ﺻـﻔﺮ ﻣﻘﺎﯾـﺴﻪ‬
‫ﻣﯽ ﮐﻨﺪ و آزﻣﻮﻧﯽ ﮐﻪ اﻧﺠﺎم ﻣﯽ دﻫﺪ ﺑﺮرﺳﯽ ﻓﺮض ﺻﻔﺮ ﺑﻮدن اﯾﻦ ﻣﻘﺎدﯾﺮ اﺳﺖ‪ .‬در ﺻﻮرﺗﯽ ﮐﻪ ﺑﺨـﻮاﻫﯿﻢ ﻋـﺮض از‬
‫ﻣﺒﺪاء و ﺿﺮاﯾﺐ را ﺑﺎ ﻣﻘﺎدﯾﺮ ﻣﻮرد ﻧﻈﺮ ﺧﻮد ﻣﻘﺎﯾﺴﻪ ﮐﻨﯿﻢ و آزﻣﻮﻧﯽ ﮐﻪ در ﺗﺎﺑﻊ )(‪ summary‬اﻧﺠـﺎم ﻣـﯽ ﺷـﻮد ﺑـﺮ‬
‫اﺳﺎس ﻣﻘﺎدﯾﺮ ﻣﻮرد ﻧﻈﺮ ﻣﺎ ﺑﺎﺷﺪ ﺑﺎﯾﺪ زﻣﺎﻧﯽ ﮐﻪ ﻣﺪل را در ﺗﺎﺑﻊ )(‪ lm‬ﺗﻌﯿﯿﻦ ﻣﯽ ﮐﻨﯿﻢ ﻓﺮض ﻣـﻮرد ﻧﻈـﺮ ﺧـﻮد را در‬
‫ﻣﺪل اﻋﻤﺎل ﮐﻨﯿﻢ‪ .‬در ﺗﺎﺑﻊ )(‪ lm‬ﻋﻤﻠﮕﺮﻫﺎي رﯾﺎﺿﯽ ﮐﺎرﺑﺮدﻫﺎي ﻣﺘﻔﺎوﺗﯽ دارﻧﺪ‪ .‬ﺑﺮاي اﯾﻨﮑﻪ ﻋﻤﻠﮕﺮﻫﺎي رﯾﺎﺿﯽ ﺑﻪ ﮐﺎر‬
‫ﺑﺮده ﺷﺪه در ﻣﺪل داراي ﻣﻌﺎﻧﯽ ﻫﻤﯿﺸﮕﯽ ﺧﻮد در ﻣﺤﺎﺳﺒﺎت رﯾﺎﺿﯽ ﺑﺎﺷﻨﺪ از ﺗﺎﺑﻊ )(‪ I‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ و ﻋﻤﻠﮕﺮﻫﺎ‬
‫را ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ ﺗﺎﺑﻊ ﺑﻪ ﮐﺎر ﻣﯽ ﮔﯿﺮﯾﻢ‪.‬‬
‫ﻣﺜﺎل ‪ :‬ﻣﯽ ﺧﻮاﻫﯿﻢ آزﻣﻮن ﮐﻨﯿﻢ آﯾﺎ ﻋﺮض از ﻣﺒﺪاء ﺑﺮاﺑﺮ ‪ 1‬اﺳﺖ‪.‬‬

‫)‪> x <- sample(10:30,15‬‬


‫)‪> y <- 1+3*x+rnorm(15‬‬
‫)‪> lm(y~x‬‬

‫‪Call:‬‬
‫)‪lm(formula = y ~ x‬‬

‫‪Coefficients:‬‬
‫)‪(Intercept‬‬ ‫‪x‬‬
‫‪1.744‬‬ ‫‪2.964‬‬

‫))‪> summary(lm(I(y-1)~x‬‬

‫‪Call:‬‬
‫)‪lm(formula = I(y - 1) ~ x‬‬

‫‪Residuals:‬‬
‫‪Min‬‬ ‫‪1Q Median‬‬ ‫‪3Q‬‬ ‫‪Max‬‬
‫‪-1.0105 -0.5707 -0.2755‬‬ ‫‪0.4279‬‬ ‫‪1.5420‬‬

‫‪Coefficients:‬‬
‫)|‪Estimate Std. Error t value Pr(>|t‬‬
‫‪(Intercept) 0.74427‬‬ ‫‪0.72543‬‬ ‫‪1.026‬‬ ‫‪0.324‬‬
‫‪x‬‬ ‫‪2.96391‬‬ ‫‪0.03616 81.959‬‬ ‫*** ‪<2e-16‬‬
‫‪---‬‬
‫‪Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1‬‬

‫‪Residual standard error: 0.8138 on 13 degrees of freedom‬‬


‫‪Multiple R-Squared: 0.9981,‬‬ ‫‪Adjusted R-squared: 0.9979‬‬
‫‪F-statistic: 6717 on 1 and 13 DF, p-value: < 2.2e-16‬‬

‫‪57‬‬
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

.‫ اﺳﺖ‬3 ‫ ﺑﺮاﺑﺮ‬x ‫ در ﻣﺜﺎل ﻗﺒﻞ ﻣﯽ ﺧﻮاﻫﯿﻢ آزﻣﻮن ﮐﻨﯿﻢ آﯾﺎ ﺿﺮﯾﺐ‬: ‫ﻣﺜﺎل‬

> summary(lm(I(y-3*x)~x))

Call:
lm(formula = I(y - 3 * x) ~ x)

Residuals:
Min 1Q Median 3Q Max
-1.0105 -0.5707 -0.2755 0.4279 1.5420

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.74427 0.72543 2.404 0.0318 *
x -0.03609 0.03616 -0.998 0.3365
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.8138 on 13 degrees of freedom


Multiple R-Squared: 0.07117, Adjusted R-squared: -0.0002754
F-statistic: 0.9961 on 1 and 13 DF, p-value: 0.3365

.‫ در ﻣﺜﺎل ﻗﺒﻞ ﻣﯽ ﺧﻮاﻫﯿﻢ ﻫﺮ دو ﻓﺮض را ﻫﻢ زﻣﺎن آزﻣﻮن ﮐﻨﯿﻢ‬: ‫ﻣﺜﺎل‬

> summary(lm(I(y-1-3*x)~x))

Call:
lm(formula = I(y - 1 - 3 * x) ~ x)

Residuals:
Min 1Q Median 3Q Max
-1.0105 -0.5707 -0.2755 0.4279 1.5420

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.74427 0.72543 1.026 0.324
x -0.03609 0.03616 -0.998 0.336

Residual standard error: 0.8138 on 13 degrees of freedom


Multiple R-Squared: 0.07117, Adjusted R-squared: -0.0002754
F-statistic: 0.9961 on 1 and 13 DF, p-value: 0.3365

58
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .5‬ﻓﺎﺻﻠﻪ اﻃﻤﯿﻨﺎن‬

‫ﻣﯽ ﺗﻮان ﺑﺮاي ﻋـﺮض از ﻣﺒـﺪاء و ﺿـﺮاﯾﺐ ﻓﺎﺻـﻠﻪ اﻃﻤﯿﻨـﺎن ﺗـﺸﮑﯿﻞ داد‪ .‬ﺑـﺮاي ﻣﺤﺎﺳـﺒﻪ ﻓﺎﺻـﻠﻪ اﻃﻤﯿﻨـﺎن از ﺗـﺎﺑﻊ‬
‫)(‪ confint‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> lm(y~x‬‬

‫‪Call:‬‬
‫)‪lm(formula = y ~ x‬‬

‫‪Coefficients:‬‬
‫)‪(Intercept‬‬ ‫‪x‬‬
‫‪1.744‬‬ ‫‪2.964‬‬

‫))‪> confint(lm(y~x‬‬
‫‪2.5 %‬‬ ‫‪97.5 %‬‬
‫‪(Intercept) 0.1770625 3.311473‬‬
‫‪x‬‬ ‫‪2.8857802 3.042033‬‬

‫‪ .6‬ﻣﻘﺎﯾﺴﻪ ﻣﺪل ﻫﺎ‬

‫ﺑﺮاي اﻧﺠﺎم آزﻣﻮن در ﻣﻮرد اﯾﻨﮑﻪ آﯾﺎ دو ﻣﺪل ﺑﺎ ﻫﻢ ﺗﻔﺎوت ﻣﻌﻨﯽ داري دارﻧﺪ ﯾﺎ ﻧﻪ از ﺗﺎﺑﻊ )(‪ anova‬ﺑﻪ ﻫﻤﺮاه ﺗﺎﺑﻊ‬
‫)(‪ lm‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬اﯾﻦ ﺗﺎﺑﻊ ﺑﺮاي ﻣﻘﺎﯾﺴﻪ دو ﻣﺪل ﯾﮏ ﺟﺪول آﻧﺎﻟﯿﺰ وارﯾﺎﻧﺲ ﺗﺸﮑﯿﻞ ﻣﯽ دﻫﺪ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> x1 <- sample(10:30,10); x2 <- sample(100:130,10‬‬


‫)‪> y <- 5+9*x1+x2+rnorm(10‬‬
‫)‪> m1 <- lm(y~x1+x2); m2 <- lm(y~x2‬‬
‫)‪> anova(m1,m2‬‬
‫‪Analysis of Variance Table‬‬

‫‪Model 1: y ~ x1 + x2‬‬
‫‪Model 2: y ~ x2‬‬
‫‪Res.Df‬‬ ‫‪RSS Df Sum of Sq‬‬ ‫‪F‬‬ ‫)‪Pr(>F‬‬
‫‪1‬‬ ‫‪7‬‬ ‫‪3.9‬‬
‫‪2‬‬ ‫*** ‪8 28532.3 -1 -28528.4 51829 8.329e-15‬‬
‫‪---‬‬
‫‪Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1‬‬
‫)‪> m3 <- lm(y~x1‬‬
‫)‪> anova(m1,m3‬‬
‫‪Analysis of Variance Table‬‬

‫‪Model 1: y ~ x1 + x2‬‬
‫‪Model 2: y ~ x1‬‬
‫‪Res.Df‬‬ ‫‪RSS Df Sum of Sq‬‬ ‫‪F‬‬ ‫)‪Pr(>F‬‬
‫‪1‬‬ ‫‪7‬‬ ‫‪3.85‬‬
‫‪2‬‬ ‫‪8 423.04 -1‬‬ ‫*** ‪-419.19 761.56 2.106e-08‬‬
‫‪---‬‬
‫‪Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1‬‬

‫‪59‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫ﻃﺮح آزﻣﺎﯾﺶ ﻫﺎ‬

‫‪ .1‬آﻧﺎﻟﯿﺰ وارﯾﺎﻧﺲ ﯾﮏ ﻃﺮﻓﻪ‬

‫ﺑﺮاي اﻧﺠﺎم آﻧﺎﻟﯿﺰ وارﯾﺎﻧﺲ ﺑﻪ دو روش ﻣﯽ ﺗﻮان ﻋﻤﻞ ﮐﺮد‪ .‬روش اول آن اﺳﺖ ﮐﻪ اﺑﺘﺪا ﻣﺪل را ﺑـﺎ اﺳـﺘﻔﺎده از ﺗـﺎﺑﻊ‬
‫)(‪ lm‬ﻣﻌﺮﻓﯽ ﮐﺮده و ﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ anova‬ﺑﻪ آﻧﺎﻟﯿﺰ وارﯾﺎﻧﺲ ﺑﭙﺮدازﯾﻢ‪ .‬روش دﯾﮕﺮ آن اﺳﺖ ﮐﻪ اﺑﺘﺪا‬
‫ﻣﺪل را ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ aov‬ﻣﻌﺮﻓﯽ ﮐﺮده و ﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ )(‪ summary‬ﺑﻪ آﻧﺎﻟﯿﺰ وارﯾﺎﻧﺲ ﺑﭙﺮدازﯾﻢ‪.‬‬
‫ﻧﺘﯿﺠﻪ ﺣﺎﺻﻞ از ﻫﺮ دو روش ﯾﮑﺴﺎن ﺧﻮاﻫﺪ ﺑﻮد‪ ،‬اﻣﺎ ﺷﯿﻮه ﻣﺘﺪاول اﺳﺘﻔﺎده از روش دوم اﺳﺖ‪ .‬ﻣﻌﺮﻓﯽ ﻣﺪل در ﻫﺮ دو‬
‫روش ﺑﻪ ﯾﮏ ﺷﮑﻞ اﻧﺠﺎم ﻣﯽ ﺷﻮد‪ .‬ﺑﺮاي ﻣﻌﺮﻓﯽ ﻣﺪل در آﻧﺎﻟﯿﺰ وارﯾﺎﻧﺲ ﯾﮏ ﻃﺮﻓﻪ از ﯾﮏ ﺑﺮدار ﭘﺎﺳﺦ و ﯾﮏ ﻓـﺎﮐﺘﻮر‬
‫ﺑﺮاي ﻧﺸﺎن دادن ﺗﯿﻤﺎرﻫﺎ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ) روش اول ( ‪:‬‬

‫‪> resp <-‬‬


‫)‪c(21,25,30,25,29,24,29,20,27,22,28,26,29,21,28,21,26,20,20,29‬‬
‫)‪> fact <- rep(1:5,each=4‬‬
‫)‪> fact <- factor(fact‬‬
‫))‪> anova(lm(resp~fact‬‬
‫‪Analysis of Variance Table‬‬

‫‪Response: resp‬‬
‫)‪Df Sum Sq Mean Sq F value Pr(>F‬‬
‫‪fact‬‬ ‫‪4 10.000‬‬ ‫‪2.500 0.1589 0.9559‬‬
‫‪Residuals 15 236.000 15.733‬‬

‫ﻣﺜﺎل ) روش دوم ( ‪:‬‬

‫))‪> summary(aov(resp~fact‬‬
‫)‪Df Sum Sq Mean Sq F value Pr(>F‬‬
‫‪fact‬‬ ‫‪4 10.000‬‬ ‫‪2.500 0.1589 0.9559‬‬
‫‪Residuals‬‬ ‫‪15 236.000 15.733‬‬

‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﺑﺎﻗﯿﻤﺎﻧﺪه ﻫﺎ و ﻣﻘﺎدﯾﺮ ﺑﺮازاﻧﺪه ﺷﺪه ﻣﻘﺎدﯾﺮ ‪ resid‬و ‪ fitted‬را ﻫﻤﺎﻧﻨﺪ ﯾﮏ ﻟﯿﺴﺖ از ﻣﺪل ﻓﺮاﺧﻮاﻧﯽ‬
‫ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫)‪> mod <- aov(resp~fact‬‬


‫]]'‪> mod[['resid‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬
‫‪12‬‬ ‫‪13‬‬
‫‪-4.25 -0.25 4.75 -0.25 3.50 -1.50‬‬ ‫‪3.50 -5.50‬‬ ‫‪1.25 -3.75‬‬ ‫‪2.25‬‬
‫‪0.25 4.25‬‬
‫‪14‬‬ ‫‪15‬‬ ‫‪16‬‬ ‫‪17‬‬ ‫‪18‬‬ ‫‪19‬‬ ‫‪20‬‬
‫‪-3.75 3.25 -3.75 2.25 -3.75 -3.75‬‬ ‫‪5.25‬‬

‫‪60‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫]]'‪> mod[['fitted‬‬
‫‪1‬‬ ‫‪2‬‬ ‫‪3‬‬ ‫‪4‬‬ ‫‪5‬‬ ‫‪6‬‬ ‫‪7‬‬ ‫‪8‬‬ ‫‪9‬‬ ‫‪10‬‬ ‫‪11‬‬
‫‪12‬‬ ‫‪13‬‬
‫‪25.25 25.25 25.25 25.25 25.50 25.50 25.50 25.50 25.75 25.75 25.75‬‬
‫‪25.75 24.75‬‬
‫‪14‬‬ ‫‪15‬‬ ‫‪16‬‬ ‫‪17‬‬ ‫‪18‬‬ ‫‪19‬‬ ‫‪20‬‬
‫‪24.75 24.75 24.75 23.75 23.75 23.75 23.75‬‬

‫ﺑﺮاي رﺳﻢ ﻧﻤﻮدار ﺟﻌﺒﻪ اي از ﺗﺎﺑﻊ )(‪ boxplot‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬


‫ﻣﺜﺎل ‪:‬‬

‫)‪> boxplot(resp~fact‬‬

‫‪61‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .2‬ﺑﺮرﺳﯽ ﻓﺮض ﻫﺎي ﻣﺪل‬

‫ﺑﺮاي ﺑﺮرﺳﯽ ﻓﺮض ﻫﺎي ﻣﺪل از ﻃﺮﯾﻖ رﺳﻢ ﻧﻤﻮدار از ﺗﺎﺑﻊ )(‪ plot‬ﺑﻪ ﻫﻤـﺮاه )(‪ aov‬اﺳـﺘﻔﺎده ﻣـﯽ ﮐﻨـﯿﻢ‪ .‬ﺗـﺎﺑﻊ‬
‫)(‪ plot‬ﭼﻬﺎر ﻧﻤﻮدار رﺳﻢ ﻣﯽ ﮐﻨﺪ و آﻧﻬﺎ را ﯾﮑﯽ ﭘﺲ از دﯾﮕﺮي ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ‪ .‬ﺑﺮاي ﻧﻤﺎﯾﺶ ﻫﺮ ﭼﻬـﺎر ﻧﻤـﻮدار‬
‫در ﯾﮏ ﺻﻔﺤﻪ از ﺗﺎﺑﻊ )(‪ par‬ﺑﻪ ﺷﮑﻞ ))‪ par(mfrow=c(2,2‬ﻗﺒﻞ از ﺗﺎﺑﻊ )(‪ plot‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬

‫))‪> par(mfrow=c(2,2‬‬
‫))‪> plot(aov(resp~fact‬‬

‫‪62‬‬
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

‫ آزﻣﻮن ﺗﻮﮐﯽ‬.3

.‫ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‬TukeyHSD() ‫ﺑﺮاي اﻧﺠﺎم آزﻣﻮن ﺗﻮﮐﯽ و اﻧﺠﺎم ﻣﻘﺎﯾﺴﻪ ﻫﺎي ﭼﻨﺪﮔﺎﻧﻪ از ﺗﺎﺑﻊ‬
: ‫ﻣﺜﺎل‬

> TukeyHSD(aov(resp~fact))
Tukey multiple comparisons of means
95% family-wise confidence level

Fit: aov(formula = resp ~ fact)

$fact
diff lwr upr p adj
2-1 0.25 -8.41088 8.91088 0.9999839
3-1 0.50 -8.16088 9.16088 0.9997455
4-1 -0.50 -9.16088 8.16088 0.9997455
5-1 -1.50 -10.16088 7.16088 0.9821931
3-2 0.25 -8.41088 8.91088 0.9999839
4-2 -0.75 -9.41088 7.91088 0.9987412
5-2 -1.75 -10.41088 6.91088 0.9688634
4-3 -1.00 -9.66088 7.66088 0.9961482
5-3 -2.00 -10.66088 6.66088 0.9502519
5-4 -1.00 -9.66088 7.66088 0.9961482

> plot(TukeyHSD(aov(resp~fact)))

63
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .4‬ﻃﺮح ﺑﻠﻮك ﻫﺎي ﺗﺼﺎدﻓﯽ و ﻣﺮﺑﻊ ﻻﺗﯿﻦ‬

‫ﺑﺮاي اﺟﺮاي ﯾﮏ ﻃﺮح ﺑﻠﻮك ﻫﺎي ﺗﺼﺎدﻓﯽ ﯾﺎ ﻣﺮﺑﻊ ﻻﺗﯿﻦ و ﯾﺎ ﺣﺘﯽ ﻃﺮح ﻫﺎﯾﯽ ﺑﺎ ﻣﻮﻟﻔﻪ ﻫﺎي ﺑﯿﺸﺘﺮ ﮐﺎﻓﯿﺴﺖ ﺑﻪ ازاي‬
‫ﻫﺮ ﻣﻮﻟﻔﻪ ﻓﺎﮐﺘﻮري ﮐﻪ ﻣﻌﺮﻓﯽ ﮐﻨﻨﺪه آن ﻣﻮﻟﻔﻪ ﺑﺎﺷﺪ در ﻣﻌﺮﻓﯽ ﻣﺪل وارد ﮐﻨﯿﻢ‪ .‬ﺑﺮاي اﺿﺎﻓﻪ ﮐﺮدن ﻣﻮﻟﻔﻪ ﻫﺎ ﺑـﻪ ﻣـﺪل از‬
‫ﻋﻼﻣﺖ " ‪ " +‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ) ﻃﺮح ﺑﻠﻮك ﻫﺎي ﺗﺼﺎدﻓﯽ ( ‪:‬‬

‫>‬ ‫)‪resp <- c(21,25,30,25,29,24,29,20,27,22,28,26,29,21,28,21‬‬


‫>‬ ‫))‪fact <- factor(rep(1:4,each=4‬‬
‫>‬ ‫))‪block <- factor(rep(1:4,times=4‬‬
‫>‬ ‫))‪summary(aov(resp~fact+block‬‬
‫)‪Df Sum Sq Mean Sq F value Pr(>F‬‬
‫‪fact‬‬ ‫‪3 2.188‬‬ ‫‪0.729 0.0825 0.96789‬‬
‫‪block‬‬ ‫‪3 95.687 31.896 3.6080 0.05862 .‬‬
‫‪Residuals‬‬ ‫‪9 79.563‬‬ ‫‪8.840‬‬
‫‪---‬‬
‫‪Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1‬‬

‫ﻣﺜﺎل ) ﻃﺮح ﻣﺮﺑﻊ ﻻﺗﯿﻦ ( ‪:‬‬


‫‪> latin <-‬‬
‫)"‪c("A","B","C","D","D","A","B","C","C","D","A","B","B","C","D","A‬‬
‫)‪> latin <- factor(latin‬‬
‫))‪> summary(aov(resp~fact+block+latin‬‬
‫)‪Df Sum Sq Mean Sq F value Pr(>F‬‬
‫‪fact‬‬ ‫‪3 2.188‬‬ ‫‪0.729 0.0933 0.96098‬‬
‫‪block‬‬ ‫‪3 95.687 31.896 4.0827 0.06744 .‬‬
‫‪latin‬‬ ‫‪3 32.688 10.896 1.3947 0.33256‬‬
‫‪Residuals‬‬ ‫‪6 46.875‬‬ ‫‪7.813‬‬
‫‪---‬‬
‫‪Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1‬‬

‫‪ .5‬ﻃﺮح ﻫﺎي ﻋﺎﻣﻠﯽ‬

‫ﺗﻔﺎوت ﻃﺮح ﻫﺎي ﻋﺎﻣﻠﯽ ﺑﺎ ﻃﺮح ﻫﺎي ﻗﺒﻞ ﻧﯿﺰ در ﻧﺤﻮه ﻣﻌﺮﻓﯽ ﻣﺪل اﺳﺖ‪ .‬ﺑﺮاي اﺟﺮاي ﻃﺮح ﻫﺎي ﻋﺎﻣﻠﯽ ﮐﺎﻓﯿﺴﺖ ﺑﻪ‬
‫ازاي ﻫﺮ ﻋﺎﻣﻞ ﻓﺎﮐﺘﻮري را ﺑﺮاي ﻣﻌﺮﻓﯽ آن ﻋﺎﻣﻞ در ﻣﺪل وارد ﮐﻨﯿﻢ‪ .‬ﺑﺮاي وارد ﮐﺮدن ﻋﺎﻣـﻞ ﻫـﺎ در ﻣـﺪل از ﻋﻼﻣـﺖ‬
‫" * " اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﺜﺎل ) ﻃﺮح دو ﻋﺎﻣﻠﯽ ( ‪:‬‬

‫>‬ ‫)‪resp <- c(21,25,30,25,29,24,29,20,27,22,28,26,29,21,28,21,25,22‬‬


‫>‬ ‫))‪fact1 <- factor(rep(1:2,each=9‬‬
‫>‬ ‫))‪fact2 <- factor(rep(1:3,each=3,times=2‬‬
‫>‬ ‫))‪summary(aov(resp~fact1*fact2‬‬
‫)‪Df Sum Sq Mean Sq F value Pr(>F‬‬
‫‪fact1‬‬ ‫‪1‬‬ ‫‪3.556‬‬ ‫‪3.556 0.2591 0.6200‬‬
‫‪fact2‬‬ ‫‪2 12.444‬‬ ‫‪6.222 0.4534 0.6459‬‬
‫‪fact1:fact2 2‬‬ ‫‪7.111‬‬ ‫‪3.556 0.2591 0.7759‬‬
‫‪Residuals‬‬ ‫‪12 164.667 13.722‬‬

‫‪64‬‬
‫‪www.SourceSara.com‬‬ ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا ‪ -‬آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬

‫‪ .6‬ﻧﻤﻮدار اﺛﺮ ﻣﺘﻘﺎﺑﻞ‬

‫ﺑﺮاي رﺳﻢ ﻧﻤﻮدار اﺛﺮ ﻣﺘﻘﺎﺑﻞ از ﺗﺎﺑﻊ )(‪ interaction.plot‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬در اﯾـﻦ ﺗـﺎﺑﻊ اﺑﺘـﺪا دو ﻓـﺎﮐﺘﻮر‬
‫ﻣﻌﺮﻓﯽ ﮐﻨﻨﺪه ﻋﻮاﻣﻞ‪ ،‬ﺳﭙﺲ ﻣﺘﻐﯿﺮ ﭘﺎﺳﺦ‪ ،‬و ﭘﺲ از آن ﻧﻮع ﻧﻤﺎﯾﺶ ﻧﻤﻮدار را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﯿﻢ‪.‬‬
‫ﻣﺜﺎل ‪:‬‬
‫)"‪> interaction.plot(fact2,fact1,resp,type="l‬‬

‫‪65‬‬
www.SourceSara.com ‫ آﻣﻮزش ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‬- ‫ﺳﺎﯾﺖ ﺳﻮرس ﺳﺮا‬

‫ﻣﻨﺎﺑﻊ‬

1. A short introduction to R, European Educational Programme in Epidemiology,


2005

2. An Introduction to R: Software for StatisticalModelling & Computing,


Petra Kuhnert and Bill Venables

3. An Introduction to R; Notes on R: A Programming Environment for


Data Analysis and Graphics, W. N. Venables, D. M. Smith and the R
Development Core Team

4. An R companion to " Experimental Design ", Vikneswaran

5. R for Statistics, By Example: A Workshop for the Ecological Society


America, Hank Stevens

6. simpleR; Using R for Introductory Statistics, John Verzani

7. Statistics with R, Vincent Zoonekynd

66

You might also like