EMATM0061: Statistical Computing and Empirical Methods

Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due

Assignment 1

EMATM0061: Statistical Computing and Empirical Methods, Data Science MSc

Teaching Block 1, 2024

Before starting the assignment it is recommended that you first watch video lectures 2 and 3. You don’t need to hand in this assignment.

Create a data frame

First open RStudio.

Step 1. Within RStudio, find the Console window.  In the Console, write a command to create a vector called animals which contains the names of a few animals. What type of vector is this?

Your vector might look something like this:

##  [1]  "Snake"  "Ostrich"  "Cat"  "Spider"

Step 2. Create a vector of the same length called num legs which gives the number of legs of the different animals. Your second vector will look something like this:

##  [1]  0  2  4  8

Step 3. Now combine these two vectors in a data frame called  animals df which has two columns - one with the names of animals, and another with their respective numbers of legs. The result should look something like this:

##  animals  num_legs ##  1  Snake  0

##  2  Ostrich  2 ##  3  Cat  4

##  4  Spider  8

Step 4. Check the Environment window and find out what objects  (variables) are available. You should be able to find objects called animals, num legs, and animals df.  Can you find the data type of these objects there?

The functions required by the tasks above can be found in the example below.

city_name  <- c( "Bristol", "Manchester", "Birmingham", "London") # vector of city names population <- c(0 .5,0 .5,1,9) # vector of populations

cities_populations_df  <-data.frame(city_name,population) # generating data frame

Check and delete objects

Apart from creating objects, you can also check and delete them.  In this question, you will also learn how to find help documents of R functions.

Step 1. After you finish creating the data frame required by Question 1, get a list of objects in the working environment.

• You can use the function ls() which returns a vector of character strings giving the names of the objects in the environment. Type ?ls to check its usage.

•  Do you find the objects animals, num legs, and animals df again?

Sept 2. Use the function rm (type ?rm to see examples of using rm) to remove the objects num legs from the working environment.  After that, check the list of objects in the current environment again, to see if num legs has been removed.

Step 3. Remove all objects in the working environment.

3    Create a data frame in R Scripts

In Question 1, you created a data frame in the console in RStudio.  Now you will create an R script and create a data frame using the script.

Step 0. Remove all objects in the working environment, similar to what you have done in Question 2.

Step 1. Go to File –> New File –> R Script to create your script.  Save the file by clicking File –> Save and giving the file a name of your choice eg.  “myFirstRScript” .

Step 2. Now you can start writing codes in the script.  Create a data frame  animals df, using the same code you did in Question 1

Step 3. You can run all the code within your script by clicking on the “Source” button on the top right (alternative click Code -> Source).

Step 4. Get a list of objects in the working environment.  Is the list the same as what you got in Question 2 Step 1?

4    Create a data frame in R Markdown

Let’s create an R markdown with html output as follows: File  ->  New  File  ->  R  Markdown  . . .

You can then choose:

• A title for your document;

• An author name (for example your name);

• An output format. Let’s choose HTML.

Then click  “OK” to create an R markdown.  This will create a template project.  Explore the project and note its key features:

1.  There is a block of YAML header at the start of the document which gives key information eg. title and output format.

2. You can create headings of sections with “#” .  Similarly, headings of subsections can be created with “##” and so on.

3. You can embed blocks of R code by using ``` {r} before the R code and ``` afterwards.

4.  By default both the code and its output are displayed.  If you only want to include the output but not the code itself include the option echo  =  FALSE in the code prefix.  If you don’t want to include either then include the option include  =  FALSE.

5. You can include hyperlinks by writing .

Save your R markdown file as “MyFirstRMarkdown” . Remove everything in your R mark- down except for the YAML section at the top with the title, author, date, and output.  Then do the following steps.

Step 1. Insert a block of R code.  In this block of code, create a data frame  animals df, using the same code you did in Question 1.  In R Markdown, a block of code starts with  ``` {r} and ends with ```

Step 2. Insert another block of code to print animals df.

Step  3. You can then generate an HTML file with the  “Knit” button just  above your scripting window. Check what you have in the HTML file.

5    Matrix operations

Use the seq() function to generate a sequence of numbers starting at 12 and decreasing to 2 in steps of -2.  Call this vector x vect.  You may want to run ?seq or help(seq) to help you do this. The vector x vect should look like this:

##  [1]  12  10  8  6  4  2

Now convert the vector x vect into a matrix (with 2 rows and 3 coloumns) called X, using the matrix() function. The result should look like this:

##        [,1] [,2] [,3]

##  [1,]  12 8 4

##  [2,]  10 6 2

Next create a 2 by 2 matrix called Y consisting of a sequence of four numbers from 1-4.  The matrix Y should look like this:

##        [,1]  [,2]

##  [1,]  1      3

##  [2,]  2      4

In addition, create another 2 by 2 matrix called Z which looks as follows:

##        [,1]  [,2]

##  [1,]  4      8

##  [2,]  6      10

Recall that for 2 by 2 matrices A, the transpose AT  is given by

Use the t() function to compute YT  and ZT .

Matrix sums. Now compute the matrix sums Y + Z  and Y + Z.  The result in both cases should be the same.  We call such operations commutative.  This means that reversing the order does not change the result.

Matrix multiplication. Use R to compute the matrix products YZ and ZY. Are the results the same in both cases? Is matrix multiplication commutative?

Recall that the matrix multiplication between two 2 by 2 matrices A and B, is defined as

In addition, use R to compute the matrix product YX . You should get something like this:

##        [,1] [,2] [,3]

##  [1,]  42 26 10

##  [2,]  64 40 16

What happens if you attempt to compute the matrix product XY? Explain the error message you get.

Matrix element-wise multiplication. Use R to compute the element-wise matrix products Y Θ Z and Y Θ Z.  Are the results the same in both cases?  Is element-wise multiplication commutative?

Recall that the element-wise matrix multiplication between A and B is defined as

Matrix inverse. Compute the matrix inverse Y −1  via the solve() function: solve(Y)

You should get something like this

##        [,1] [,2]

##  [1,]  -2 1.5

##  [2,]  1 -0.5

Next, check what you get from computing Y −1Y in R.

Now compute Y −1X . Your result should look like this:

##        [,1] [,2] [,3]

##  [1,]  -9 -7 -5

##  [2,]  7 5 3

Can you do this (obtain the results of Y−1X) without first computing Y −1?  Try running the help command on the solve() function by typing ?solve into the R console to find out how to do this.

6 Writing a function within R

First, create an R script (see also Question 3), and saving it using the name mySecondRScript. To do the following steps, it is good to know how a function is defined in R as well as basic

control flow statements in R (e.g., if . . .else . . ., and for). You may want to first look at the sample function called is prime (provided at the end of this question) for function definition and control flow statements, before you continue.

Step 1. Within your script create a short function called myFirstRFunc which takes in a single numerical argument n and outputs the sum of all those numbers strictly below n which are divisible by either 2 or 7 or both.

For example, if n = 14 then it should be the sum of 2, 4, 6, 7, 8, 10, 12, so myFirstRFunc applied to 14 gives the answer 2 + 4 + 6 + 7 + 8 + 10 + 12 = 49.

Make sure your function includes useful comments. You may want to include a check so that your function produces an error if it is given an argument which isn’t a non-negative integer.

Step 2. Run the script by clicking on the “Source” button on the top right. Then check what

you get if you apply the function to 1000, i.e., myFirstRFunc(1000)

If you have been successful your function should produce the following output. ##  [1]  284787

How to write a function in R? An example.

is_prime  <- function(num){

#  This  example  function  takes  as  input  a  positive  integer  and  outputs  Boolean

stopifnot(is .numeric(num),num%%1==0,num>=0)  #  Stop  if  the  input  is  not  a  non-negative  integer

t_val  <- TRUE # Initialise truth value output with TRUE if(num<2){

t_val<-FALSE # Output FALSE if input is either 0 or 1 }else if(num>2){

for(i  in  2:sqrt(num)){  #  Check  possible  divisors  i  no  greater  than  sqrt(num)

if(num%%i==0){ t_val<-FALSE

break          #  if  i  divides  num  then  num  is  not  prime

}

} }

return(t_val)  #  return  the  truth  value  which  says  whether  or  not  num  is  prime }

7    Futher R Markdown exercises

Next we will learn about how to include plots and mathematical formulae in R Markdown.

First, similar to what you did to set up MyFirstRMarkdown in Question 4, create a new R Markdown file and save it using the name Assignment1RMarkdown.

Step 1. Within your R markdown insert a section heading called “Wave plot” .

Step 2. Insert a code block to do the following.

•  Define  a vector called x consisting of a sequence which starts at 0 and goes to  20 in increments of 0.01. You can do this using the seq() function.

•  Next create a vector called y, which is of the same length as x, such that the ith  entry of y is equal to the sin function of the ith  entry of x.  This can be done via the R function sin().

•  Then create a data frame called sin df with two columns: x and y. You can inspect the first few rows of your data frame with the head() function like this:

head(sin_df,3)

##        x              y

##  1  0 .00  0 .000000000

##  2  0 .01  0 .009999833

##  3  0 .02  0 .019998667

If you have been successful you will observe a similar output after performing “knit” .

• Write a statement to plot sin df.You can do this using the plot() function.  This aims to display a plot with x as the x-axis and y as the y-axis.

Step 3. Insert the following mathematical formula into your Markdown file:

sin2 (x) + cos2 (x) = 1.

About how to insert in the Markdown file mathematical formulae.

You can use R Markdown to render mathematical formulae.  For example, you can write y = sin(x) inline to display “y = sin(x)” .

You can also display more complex expressions.  For example, the code below gives rise to the following output.

\[\sin(x)=\sum_{n=1}^{\infty}(-1)^{n+1}\cdot  \frac{x^{2n-1}}{(2n-1)!}

\approx  x-\frac{x^3}{3!}+\frac{x^5}{5!}-\frac{x^7}{7!}\ldots .  \] The output will be:

\[  A=\left(\begin{matrix}  a_{11}  &  a_{12}\\  a_{21}  &  a_{22}  \end{matrix}\right) .  \]

The output will be:

For information about writing mathematical formulae in Rmarkdown documents visit:

https://bookdown.org/yihui/bookdown/markdown-extensions-by-bookdown.html#equations

8    Version control with RStudio and git

Next we will combine RStudio with git to create an R project with version control.

8.1    Connect RStudio to git

If you do not yet have a GitHub account sign up for one here https://github.com/.

Next, connect your RStudio to git via the usethis R package. Within RStudio perform the following steps within your R console:

install .packages("usethis")  #  Install  the  "usethis"  R  package

library(usethis)  #  Load  the  "usethis"  R  library

use_git_config(user .name  =  "Bob  Smith",  user .email  =  "bob@example .org")  #  Set  profile  info

The first step installs the usethis R package.  The second step loads the usethis R library. You may be prompted to install RTools at this stage.  If so follow the links provided by RStudio. The third step sets your git profile information.  The user.name can be the same as the username you used to set up your git profile, but it is not necessary.  The email needs to be the same email address as you used to set up your git profile.

8.2    Create an R project with version control

1. Create a project on GitHub. Go to https://github.com/within your web browser and log into your git account. Create a new repository by clicking the green “New” button. Next:

–  Give your repository a name eg.  “firstRProject” .

–  Give your repository a description eg.  “This is a repo for an R project” .

–  Check the box which says “Add a README file” .

–  Always be mindful of whether your repo is public or private.

–  Click the green “Create repository” button.

You have now created a git repository.  Next click the green  “Code” button and copy the url provided. This is the repository url.

2.  Create a project at RStudio. Go back to RStudio. Then go to: File  ->  New  Project . . .  ->  Version  Control  ->  Git

–  Below “Repository URL:” Paste the repository url which you copied from your git repo. (if you have chosen your project to be private, you may be asked to input your account details. Follow the instructions to gain access).

–  Below “Project directory name:” Choose a directory name.

–  Below “Create project as a subdirectory of:” Choose where to store your project on your local machine.

–  Check the box marked “Open in new session” .

–  Click create project.

You have now created an R project with version control!

8.3    Committing and pushing

Within your new project click

File  ->  New  File  ->  R  Script

Type some R code in your new R script e.g. a<-1

Now save your new file by selecting File − > Save before giving a name.

commit.  Next go to the git tab at the top right of your screen.  Then click the  “commit” button.

On the left you will see a collection of check boxes.  Here you can choose which files you want to add to your git repo. I suggest for now you check all of the files.

Write a commit message in the “Commit message” box eg.   “This  is my first commit” .  It’s good practice to always include a commit message. Click the commit button. You should see a message which describes your changes. Commits act as a “snapshot” which records the current state of your repository.

push.  You have now taken a local “snapshot” of your repository by performing a “commit” . Next you want to record this snapshot on the central repository. This is done by performing a “Push” .  All you have to do is press the green “Push” button within the git panel in RStudio. You may be asked to enter your password or personal access tokens (you can create your token if needed https://github.com/settings/tokens). You typically only have to do this once.

Now check that your push has been successful. Go back to https://github.com/ and log into your account if you are not already logged in.  Go to the repositories section and click on the name of the repository you created in the previous stage of this assignment.  You should see a record of your most recent commit.

Additionally, you may want to move your previous R script entitled  “myFirstRScript” (from Question 3) into this project. You can then “commit” and “push” to upload your script to your git account.


发表评论

电子邮件地址不会被公开。 必填项已用*标注