Preliminary instructions

You may consult with other students currently taking CAP 5625 in your section at FAU on this programming assignment. If you do consult with others, then you must indicate this by providing their names with your submitted assignment. However, all analyses must be performed independently, all source code must be written independently, and all students must turn in their own independent assignment. Note that for this assignment, you may choose to pair up with one other student in your section of CAP 5625 and submit a joint assignment. If you choose to do this, then both your names must be associated with the assignment and you will each receive the same grade.

Though it should be unnecessary to state in a graduate class, I am reminding you that you may not turn in code (partial or complete) that is written or inspired by others, including code from other students, websites, past code that I release from prior assignments in this class or from past semesters in other classes I teach, or any other source that would constitute an academic integrity violation. All instances of academic integrity violations will receive a zero on the assignment and will be referred to the Department Chair and College Dean for further administrative action. A second offense could lead to dismissal from the University and any offense could result in ineligibility for Departmental Teaching Assistant and Research Assistant positions.

You may choose to use whatever programming language you want. However, you must provide clear instructions on how to compile and/or run your source code. I recommend using a modern language, such as Python, R, or Matlab as learning these languages can help you if you were to enter the machine learning or artificial intelligence field in the future. All analyses performed and algorithms run must be written from scratch. That is, you may not use a library that can perform gradient descent, cross validation, ridge regression, logistic (multinomial) regression, optimization, etc. to successfully complete this assignment (though you may reuse your relevant code from Programming Assignments 1, 2, and 3). The goal of this assignment is not to learn how to use particular libraries of a language, but it is to instead understand how key methods in statistical machine learning are implemented. With that stated, I will provide 5% extra credit if you additionally implement the assignment using built-in statistical or machine learning libraries (see Deliverable 7 at end of the document). Note, credit for deliverables that request graphs, discussion of results, or specific values will not be given if the instructor must run your code to obtain these graphs, results, or specific values. Brief overview of assignment

Mobile User
2

In this assignment you will still be analyzing human genetic data from ๐‘ = 183 training observations (individuals) sampled across the world. The goal is to fit a model that can predict (classify) an individualโ€™s ancestry from their genetic data that has been projected along ๐‘ = 10 top principal components (proportion of variance explained is 0.2416) that we use as features rather than the raw genetic data, as the training would take too long to complete for this assignment with the raw data. I recognize that we have not covered precisely what principal components are, but we will get to this in Module 10, and for now you should just treat them as highly informative features as input to your classifier. Specifically, you will perform a penalized (regularized) logistic (multinomial) regression fit using ridge regression, with the model parameters obtained by batch gradient descent. Your predictions will be based on ๐พ = 5 continental ancestries (African, European, East Asian, Oceanian, or Native American). Ridge regression will permit you to provide parameter shrinkage (tuning parameter ๐œ† โ‰ฅ 0) to mitigate overfitting. The tuning parameter ๐œ† will be chosen using five-fold cross validation, and the best- fit model parameters will be inferred on the training dataset conditional on an optimal tuning parameter. This trained model will be used to make predictions on new test data points. Training data

Training data for these observations are given in the attached TrainingData_N183_p10.csv comma-separated file, with individuals labeled on each

row (rows 2 through 184), and input features (PC1, PC2, โ€ฆ, PC10) and ancestry label given on the columns (with the first row representing a header for each column). Test data

Test data are given in the attached TestData_N111_p10.csv comma-separated file, with individuals labeled on each row (rows 2 through 112), and input features (PC1, PC2, โ€ฆ, PC10), and ancestry label given on the columns (with the first row representing a header for each column). There are five individuals with Unknown ancestry, 54 individuals with Mexican ancestry, and 52 individuals with African American ancestry. Each of the five Unknown individuals belong to one of the five ancestries represented in the training set, and each ancestry is represented once in the five Unknown individuals. The Mexican and African American individuals have a range of ancestry proportions based on historical mixing of ancestors of diverse ancestry. You will use the class probabilities from logistic (multinomial) regression to predict the ancestry proportion of each of these putatively mixed samples. Detailed description of the task

Recall that the task of performing a ridge-penalized logistic regression fit to training data {(๐‘ฅ1, ๐‘ฆ1), (๐‘ฅ2, ๐‘ฆ2), โ€ฆ , (๐‘ฅ๐‘ , ๐‘ฆ๐‘)} is to minimize the cost function

๐ฝ(๐, ๐œ†) = โˆ’ log โ„’(๐) + ๐œ†โˆ‘โˆ‘๐›ฝ๐‘—๐‘˜ 2

๐‘

๐‘—=1

๐พ

๐‘˜=1

where

3

๐ = [

๐›ฝ01 ๐›ฝ02 โ‹ฏ ๐›ฝ0๐พ ๐›ฝ11 ๐›ฝ12 โ‹ฏ ๐›ฝ1๐พ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐›ฝ๐‘1 ๐›ฝ๐‘2 โ‹ฏ ๐›ฝ๐‘๐พ

]

is the (๐‘ + 1) ร— ๐พ matrix of model parameters, where

log โ„’(๐) = โˆ‘[โˆ‘๐‘ฆ๐‘–๐‘˜ (๐›ฝ0๐‘˜ +โˆ‘๐‘ฅ๐‘–๐‘—๐›ฝ๐‘—๐‘˜

๐‘

๐‘—=1

)

๐พ

๐‘˜=1

โˆ’ log(โˆ‘exp(๐›ฝ0โ„“ +โˆ‘๐‘ฅ๐‘–๐‘—๐›ฝ๐‘—โ„“

๐‘

๐‘—=1

)

๐พ

โ„“=1

)]

๐‘

๐‘–=1

is the likelihood function, where ๐‘ฆ๐‘–๐‘˜, ๐‘– = 1,2, โ€ฆ ,๐‘ and ๐‘˜ = 1,2, โ€ฆ , ๐พ, is an indicator variable defined as

๐‘ฆ๐‘–๐‘˜ = { 1 if ๐‘ฆ๐‘– = ๐‘˜ 0 if ๐‘ฆ๐‘– โ‰  ๐‘˜

and where the input ๐‘ features are standardized (i.e., centered and divided by their standard deviation). Moreover, recall that batch gradient descent updates each parameter ๐›ฝ๐‘—๐‘˜, ๐‘— =

0,1, โ€ฆ , ๐‘ and ๐‘˜ = 1,2, โ€ฆ , ๐พ, as follows:

๐›ฝ๐‘—๐‘˜ โ‰” ๐›ฝ๐‘—๐‘˜ โˆ’ ๐›ผ ๐œ•

๐œ•๐›ฝ๐‘—๐‘˜ ๐ฝ(๐, ๐œ†)

where ๐›ผ is the learning rate and where the partial derivative of the cost function with respect to parameter ๐›ฝ๐‘—๐‘˜ is

๐œ•

๐œ•๐›ฝ๐‘—๐‘˜ ๐ฝ(๐, ๐œ†) =

{

โˆ’โˆ‘[๐‘ฆ๐‘–๐‘˜ โˆ’ ๐‘๐‘˜(๐‘ฅ๐‘–; ๐)]

๐‘

๐‘–=1

if ๐‘— = 0

โˆ’โˆ‘๐‘ฅ๐‘–๐‘—[๐‘ฆ๐‘–๐‘˜ โˆ’ ๐‘๐‘˜(๐‘ฅ๐‘–; ๐)]

๐‘

๐‘–=1

+ 2๐œ†๐›ฝ๐‘—๐‘˜ if ๐‘— > 0

where

๐‘๐‘˜(๐‘ฅ๐‘–; ๐) = exp(๐›ฝ0๐‘˜ + โˆ‘ ๐‘ฅ๐‘–๐‘—๐›ฝ๐‘—๐‘˜

๐‘ ๐‘—=1 )

โˆ‘ exp (๐›ฝ0โ„“ + โˆ‘ ๐‘ฅ๐‘–๐‘—๐›ฝ๐‘—โ„“ ๐‘ ๐‘—=1 )๐พ

โ„“=1

To implement this algorithm, depending on whether your chosen language can quickly compute vectorized operations, you may implement batch gradient descent using either Algorithm 1 or Algorithm 2 below (choose whichever you are more comfortable implementing). Note that in languages like R, Python, or Matlab, Algorithm 2 (which would be implemented by several nested loops) may be much slower than Algorithm 1. Also note that if you are implementing Algorithm 1 using Python, use numpy arrays instead of Pandas data frames for computational speed. For this assignment, assume that we will reach the minimum of the cost function within a fixed number of steps, with the number of iterations being 10,000.

4

You may need to explore different learning rate values to identify one that is not too large and not too small, such that it is likely for the algorithm to converge in a reasonable period of time. I would consider a learning rate of ๐›ผ = 10โˆ’5, though I encourage you to explore how your model trains for smaller and larger learning rates as well. For this assignment, assume that we will reach the minimum of the cost function within a fixed number of steps, with the number of iterations being 10,000 (a large number as we have many parameters). Keep in mind that due to this large number of iterations, it could take a long time to train your classifier.

Algorithm 1 (vectorized): Step 1. Choose learning rate ๐›ผ and fix tuning parameter ๐œ† Step 2. Generate ๐‘ ร— (๐‘ + 1) augmented design matrix

๐— =

[ 1 ๐‘ฅ11 ๐‘ฅ12 โ‹ฏ ๐‘ฅ1๐‘ 1 ๐‘ฅ21 ๐‘ฅ22 โ‹ฏ ๐‘ฅ2๐‘ โ‹ฎ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ 1 ๐‘ฅ๐‘1 ๐‘ฅ๐‘2 โ‹ฏ ๐‘ฅ๐‘๐‘]

where column ๐‘˜ + 1 has been centered and standardized such that feature ๐‘˜, ๐‘˜ = 1,2, โ€ฆ , ๐‘, has mean zero and standard deviation one, and generate ๐‘ ร— ๐พ indicator response matrix

๐˜ = [

๐‘ฆ11 ๐‘ฆ12 โ‹ฏ ๐‘ฆ1๐พ ๐‘ฆ21 ๐‘ฆ22 โ‹ฏ ๐‘ฆ2๐พ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐‘ฆ๐‘1 ๐‘ฆ๐‘2 โ‹ฏ ๐‘ฆ๐‘๐พ

]

where ๐‘ฆ๐‘–๐‘˜ = 1 if observation ๐‘– is from class ๐‘˜, and 0 otherwise. Step 3. Initialize the (๐‘ + 1) ร— ๐พ-dimensional parameter matrix

๐ = [

๐›ฝ01 ๐›ฝ02 โ‹ฏ ๐›ฝ0๐พ ๐›ฝ11 ๐›ฝ12 โ‹ฏ ๐›ฝ1๐พ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐›ฝ๐‘1 ๐›ฝ๐‘2 โ‹ฏ ๐›ฝ๐‘๐พ

]

to all zeros, so that initially each class has the same probability. Step 4. Compute ๐‘ ร— ๐พ unnormalized class probability matrix as

๐” = [

๐‘ข11 ๐‘ข12 โ‹ฏ ๐‘ข1๐พ ๐‘ข21 ๐‘ข22 โ‹ฏ ๐‘ข2๐พ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐‘ข๐‘1 ๐‘ข๐‘2 โ‹ฏ ๐‘ข๐‘๐พ

] = exp(๐—๐)

where exp(๐—๐) indicates exponentiation of each element of the ๐—๐ matrix, and not the matrix exponential of ๐—๐.

Step 5. Compute ๐‘ ร— ๐พ normalized class probability matrix as

๐ = [

๐‘11 ๐‘12 โ‹ฏ ๐‘1๐พ ๐‘21 ๐‘22 โ‹ฏ ๐‘2๐พ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐‘๐‘1 ๐‘๐‘2 โ‹ฏ ๐‘๐‘๐พ

]

5

where

๐‘๐‘˜(๐‘ฅ๐‘–; ๐) = ๐‘๐‘–๐‘˜ = ๐‘ข๐‘–๐‘˜

โˆ‘ ๐‘ข๐‘–โ„“ ๐พ โ„“=1

Step 6. For ease of vectorization, generate (๐‘ + 1) ร— ๐พ intercept matrix

๐™ = [

๐›ฝ01 ๐›ฝ02 โ‹ฏ ๐›ฝ0๐พ 0 0 โ‹ฏ 0 โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ 0 0 โ‹ฏ 0

]

Step 7. Update the parameter matrix as

๐ โˆถ= ๐ + ๐›ผ[๐—๐‘‡(๐˜ โˆ’ ๐) โˆ’ 2๐œ†(๐ โˆ’ ๐™)]

Step 8. Repeat Steps 4 to 7 for 10,000 iterations

Step 9. Set the last updated parameter matrix as ๏ฟฝฬ‚๏ฟฝ

Algorithm 2 (non-vectorized): Step 1. Choose learning rate ๐›ผ and fix tuning parameter ๐œ† Step 2. Generate ๐‘ ร— ๐‘ design matrix

๐— = [

๐‘ฅ11 ๐‘ฅ12 โ‹ฏ ๐‘ฅ1๐‘ ๐‘ฅ21 ๐‘ฅ22 โ‹ฏ ๐‘ฅ2๐‘ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐‘ฅ๐‘1 ๐‘ฅ๐‘2 โ‹ฏ ๐‘ฅ๐‘๐‘

]

where column ๐‘˜ has been centered and standardized such that feature ๐‘˜, ๐‘˜ = 1,2, โ€ฆ , ๐‘, has mean zero and standard deviation one, and generate ๐‘ ร— ๐พ indicator response matrix

๐˜ = [

๐‘ฆ11 ๐‘ฆ12 โ‹ฏ ๐‘ฆ1๐พ ๐‘ฆ21 ๐‘ฆ22 โ‹ฏ ๐‘ฆ2๐พ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐‘ฆ๐‘1 ๐‘ฆ๐‘2 โ‹ฏ ๐‘ฆ๐‘๐พ

]

where ๐‘ฆ๐‘–๐‘˜ = 1 if observation ๐‘– is from class ๐‘˜, and 0 otherwise. Step 3. Initialize the (๐‘ + 1) ร— ๐พ-dimensional parameter matrix

๐ = [

๐›ฝ01 ๐›ฝ02 โ‹ฏ ๐›ฝ0๐พ ๐›ฝ11 ๐›ฝ12 โ‹ฏ ๐›ฝ1๐พ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐›ฝ๐‘1 ๐›ฝ๐‘2 โ‹ฏ ๐›ฝ๐‘๐พ

]

to all zeros, so that initially each class has the same probability. Step 4. Create temporary (๐‘ + 1) ร— ๐พ-dimensional parameter matrix

6

๐temp =

[ ๐›ฝ01

temp ๐›ฝ02 temp

โ‹ฏ ๐›ฝ0๐พ temp

๐›ฝ11 temp

๐›ฝ12 temp

โ‹ฏ ๐›ฝ1๐พ temp

โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ

๐›ฝ๐‘1 temp

๐›ฝ๐‘2 temp

โ‹ฏ ๐›ฝ๐‘๐พ temp

]

Step 5. Compute ๐‘ ร— ๐พ unnormalized class probability matrix as

๐” = [

๐‘ข11 ๐‘ข12 โ‹ฏ ๐‘ข1๐พ ๐‘ข21 ๐‘ข22 โ‹ฏ ๐‘ข2๐พ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐‘ข๐‘1 ๐‘ข๐‘2 โ‹ฏ ๐‘ข๐‘๐พ

]

where

๐‘ข๐‘–๐‘˜ = exp(๐›ฝ0๐‘˜ +โˆ‘๐‘ฅ๐‘–๐‘—๐›ฝ๐‘—๐‘˜

๐‘

๐‘—=1

)

Step 6. Compute ๐‘ ร— ๐พ normalized class probability matrix as

๐ = [

๐‘11 ๐‘12 โ‹ฏ ๐‘1๐พ ๐‘21 ๐‘22 โ‹ฏ ๐‘2๐พ โ‹ฎ โ‹ฎ โ‹ฑ โ‹ฎ ๐‘๐‘1 ๐‘๐‘2 โ‹ฏ ๐‘๐‘๐พ

]

where

๐‘๐‘˜(๐‘ฅ๐‘–; ๐) = ๐‘๐‘–๐‘˜ = ๐‘ข๐‘–๐‘˜

โˆ‘ ๐‘ข๐‘–โ„“ ๐พ โ„“=1

Step 7. For each ๐‘—, ๐‘— = 0,1, โ€ฆ , ๐‘, and ๐‘˜, ๐‘˜ = 1,2, โ€ฆ , ๐พ, find next value for parameter ๐‘— for class ๐‘˜ as

๐›ฝ๐‘—๐‘˜ temp

โ‰”

{

๐›ฝ๐‘—๐‘˜ + ๐›ผ (โˆ‘[๐‘ฆ๐‘–๐‘˜ โˆ’ ๐‘๐‘–๐‘˜]

๐‘

๐‘–=1

) if ๐‘— = 0

๐›ฝ๐‘—๐‘˜ + ๐›ผ(โˆ‘๐‘ฅ๐‘–๐‘—[๐‘ฆ๐‘–๐‘˜ โˆ’ ๐‘๐‘–๐‘˜]

๐‘

๐‘–=1

โˆ’ 2๐œ†๐›ฝ๐‘—๐‘˜) if ๐‘— > 0

Step 8. Update the parameter matrix as ๐ = ๐temp

Step 9. Repeat Steps 5 to 8 for 10,000 iterations

Step 10. Set the last updated parameter matrix as ๏ฟฝฬ‚๏ฟฝ Effect of tuning parameter on inferred regression coefficients You will consider a discrete grid of nine tuning parameter values ๐œ† โˆˆ {10โˆ’4, 10โˆ’3, 10โˆ’2, 10โˆ’1, 100, 101, 102, 103, 104} where the tuning parameter is evaluated across a wide range of values on a log scale. For each tuning parameter value, you will use batch gradient descent to infer the best-fit model.

7

Deliverable 1: Illustrate the effect of the tuning parameter on the inferred ridge regression coefficients by generating five plots (one for each of the ๐พ = 5 ancestry classes) of 10 lines

(one for each of the ๐‘ = 10 features), with the ๐‘ฆ-axis as ๏ฟฝฬ‚๏ฟฝ๐‘—๐‘˜, ๐‘— = 1,2, โ€ฆ ,10 for the graph of

class ๐‘˜, and ๐‘ฅ-axis the corresponding log-scaled tuning parameter value log10(๐œ†) that

generated the particular ๏ฟฝฬ‚๏ฟฝ๐‘—๐‘˜. Label both axes in all five plots. Without the log scaling of the

tuning parameter, the plot will look distorted. Choosing the best tuning parameter You will consider a discrete grid of nine tuning parameter values ๐œ† โˆˆ {10โˆ’4, 10โˆ’3, 10โˆ’2, 10โˆ’1, 100, 101, 102, 103, 104} where the tuning parameter is evaluated across a wide range of values on a log scale. For each tuning parameter value, perform five-fold cross validation and choose the ๐œ† value that gives the smallest

CV(5) = 1

5 โˆ‘ CategoricalCrossEntropy๐‘š

5

๐‘š=1

where

CategoricalCrossEntropy๐‘š = โˆ’ 1

๐‘๐‘š โˆ‘ (โˆ‘๐‘ฆ๐‘–๐‘˜ log10 ๐‘๐‘˜(๐‘ฅ๐‘–; ๏ฟฝฬ‚๏ฟฝ)

๐พ

๐‘˜=1

)

๐‘–โˆˆ Validation Set ๐‘š

is a measure of the cost for a classifier with ๐พ classes in fold ๐‘š and where ๐‘๐‘š is the number of observations in Validation set ๐‘š. Note that during the five-fold cross validation, you will hold out one of the five sets (here either 36 or 37 observations) as the Validation Set and the remaining four sets (the other 147 or 146 observations) will be used as the Training Set. On this Training Set, you will need to standardize (center and divided by the standard deviation across samples) each feature. These identical values used for standardizing the input will need to be applied to the corresponding Validation Set, so that the Validation set is on the same scale. Because the Training Set changes based on which set is held out for validation, each of the five pairs of Training and Validation Sets will have different standardization parameters.

Deliverable 2: Illustrate the effect of the tuning parameter on the cross validation error by generating a plot with the ๐‘ฆ-axis as CV(5) error, and the ๐‘ฅ-axis the corresponding log-scaled

tuning parameter value log10(๐œ†) that generated the particular CV(5) error. Label both axes

in the plot. Without the log scaling of the tuning parameter ๐œ†, the plots will look distorted.

Deliverable 3: Indicate the value of ๐œ† value that generated the smallest CV(5) error.

Deliverable 4: Given the optimal ๐œ†, retrain your model on the entire dataset of ๐‘ = 183

observations to obtain an estimate of the (๐‘ + 1) ร— ๐พ model parameter matrix as ๏ฟฝฬ‚๏ฟฝ and

8

make predictions of the probability for each of the ๐พ = 5 classes for the 111 test individuals located in TestData_N111_p10.csv. That is, for class ๐‘˜, compute

๐‘๐‘˜(๐‘‹; ๏ฟฝฬ‚๏ฟฝ) = exp(๏ฟฝฬ‚๏ฟฝ0๐‘˜ + โˆ‘ ๐‘‹๐‘—๏ฟฝฬ‚๏ฟฝ๐‘—๐‘˜

๐‘ ๐‘—=1 )

โˆ‘ exp (๏ฟฝฬ‚๏ฟฝ0โ„“ + โˆ‘ ๐‘‹๐‘—๏ฟฝฬ‚๏ฟฝ๐‘—โ„“ ๐‘ ๐‘—=1 )๐พ

โ„“=1

for each of the 111 test samples ๐‘‹, and also predict the most probable ancestry label as

๏ฟฝฬ‚๏ฟฝ(๐‘‹) = arg max ๐‘˜โˆˆ{1,2,โ€ฆ,๐พ}

๐‘๐‘˜(๐‘‹; ๏ฟฝฬ‚๏ฟฝ)

Report all six values (probability for each of the ๐พ = 5 classes and the most probable ancestry label) for all 111 test individuals.

Deliverable 5: How do the class label probabilities differ for the Mexican and African American samples when compared to the class label probabilities for the unknown samples? Are these class probabilities telling us something about recent history? Explain why these class probabilities are reasonable with respect to knowledge of recent history.

Deliverable 6: Provide all your source code that you wrote from scratch to perform all analyses (aside from plotting scripts, which you do not need to turn in) in this assignment, along with instructions on how to compile and run your code. Deliverable 7 (extra credit): Implement the assignment using statistical or machine learning libraries in a language of your choice. Compare the results with those obtained above, and provide a discussion as to why you believe your results are different if you found them to be different. This is worth up to 5% additional credit, which would allow you to get up to 105% out of 100 for this assignment.

BIDS(63)

Calculate the price of your order

Select your paper details and see how much our professional writing services will cost.

We`ll send you the first draft for approval by at
Price: $36
  • Freebies
  • Format
  • Formatting (MLA, APA, Chicago, custom, etc.)
  • Title page & bibliography
  • 24/7 customer support
  • Amendments to your paper when they are needed
  • Chat with your writer
  • 275 word/double-spaced page
  • 12 point Arial/Times New Roman
  • Double, single, and custom spacing
  • We care about originality

    Our custom human-written papers from top essay writers are always free from plagiarism.

  • We protect your privacy

    Your data and payment info stay secured every time you get our help from an essay writer.

  • You control your money

    Your money is safe with us. If your plans change, you can get it sent back to your card.

How it works

  1. 1
    You give us the details
    Complete a brief order form to tell us what kind of paper you need.
  2. 2
    We find you a top writer
    One of the best experts in your discipline starts working on your essay.
  3. 3
    You get the paper done
    Enjoy writing that meets your demands and high academic standards!

Samples from our advanced writers

Check out some essay pieces from our best essay writers before your place an order. They will help you better understand what our service can do for you.

  • Analysis (any type)
    Advantages and Disadvantages of Lowering the Voting Age to Thirteen
    Undergrad. (yrs 1-2)
    Political science
    APA
  • Coursework
    Leadership
    Undergrad. (yrs 1-2)
    Business Studies
    APA
  • Essay (any type)
    Is Pardoning Criminals Acceptable?
    Undergrad. (yrs 1-2)
    Criminal Justice
    MLA

Get your own paper from top experts

Order now

Perks of our essay writing service

We offer more than just hand-crafted papers customized for you. Here are more of our greatest perks.

  • Swift delivery
    Our writing service can deliver your short and urgent papers in just 4 hours!
  • Professional touch
    We find you a pro writer who knows all the ins and outs of your subject.
  • Easy order placing/tracking
    Create a new order and check on its progress at any time in your dashboard.
  • Help with any kind of paper
    Need a PhD thesis, research project, or a two-page essay? For you, we can do it all.
  • Experts in 80+ subjects
    Our pro writers can help you with anything, from nursing to business studies.
  • Calculations and code
    We also do math, write code, and solve problems in 30+ STEM disciplines.

Frequently asked questions

Get instant answers to the questions that students ask most often.

See full FAQ
  • Is there a possibility of plagiarism in my completed order?

    We complete each paper from scratch, and in order to make you feel safe regarding its authenticity, we check our content for plagiarism before its delivery. To do that, we use our in-house software, which can find not only copy-pasted fragments, but even paraphrased pieces of text. Unlike popular plagiarism-detection systems, which are used by most universities (e.g. Turnitin.com), we do not report to any public databasesโ€”therefore, such checking is safe.

    We provide a plagiarism-free guarantee that ensures your paper is always checked for its uniqueness. Please note that it is possible for a writing company to guarantee an absence of plagiarism against open Internet sources and a number of certain databases, but there is no technology (except forย turnitin.comย itself) that could guarantee no plagiarism against all sources that are indexed by turnitin. If you want to be 100% sure of your paperโ€™s originality, we suggest you check it using the WriteCheck service fromย turnitin.comย and send us the report.

  • I received some comments from my teacher. Can you help me with them?

    Yes. You can have a free revision during 7 days after youโ€™ve approved the paper. To apply for a free revision, please press the revision request button on your personal order page. You can also apply for another writer to make a revision of your paper, but in such a case, we can ask you for an additional 12 hours, as we might need some time to find another writer to work on your order.

    After the 7-day period, free revisions become unavailable, and we will be able to propose only the paid option of a minor or major revision of your paper. These options are mentioned on your personal order page.

  • How will I receive a completed paper?

    You will get the first version of your paper in a non-editable PDF format within the deadline. You are welcome to check it and inform us if any changes are needed. If everything is okay, and no amendments are necessary, you can approve the order and download the .doc file. If there are any issues you want to change, you can apply for a free revision and the writer will amend the paper according to your instructions. If there happen to be any problems with downloading your paper, please contact our support team.
  • Where do I upload files?

    When you submit your first order, you get a personal account where you can track all your orders, their statuses, your payments, and discounts. Among other options, you will have a possibility to communicate with your writer via a special messenger. You will be able to upload all information and additional materials on your paper using the โ€œFilesโ€ tab on your personal page. Please consider uploading everything you find necessary for our writer to perform at the highest standard.
See full FAQ

Take your studies to the next level with our experienced specialists

Live Chat+1 (857) 777-1210 EmailWhatsApp