Novel Coronavirus (COVID-19) updates and information
COVID-19 in South Dakota
|
Community Impact Map
|
News
|
If You Develop Symptoms
Community Guidance and Resources
Businesses Impacted by COVID-19
For Medical Providers
|
SD Healthcare Provider Guidance
|
CDC Website
The South Dakota Department of Health (SD-DOH) continues to respond to the emergence of the novel coronavirus. We are working with the CDC and our healthcare partners across the state to protect South Dakotans from COVID-19.
Updates include:
- Combat the Spread of COVID-19: Follow the Governor's Executive Order
- South Dakota FAQs
- Interested in volunteering your services? Join the State Emergency Registry of Volunteers
- What is Social Distancing? Infographic
- What should I do? Infographic
- COVID-19 Testing Facts
- The number of cases and countries with infections worldwide is increasing and can be found on the WHO website
- Case counts and other information about the novel coronavirus can be found on the CDC website
- Travelers returning from High Risk Countries ( See CDC Travel Advisories
- COVID-19 Symptoms and Screening App and Website
COVID-19 in South Dakota
On March 4, 2020, CDC updated the clinical criteria for testing a symptomatic individual after evaluation by their healthcare provider. As a result, the South Dakota Department of Health (SD-DOH) expects the number of persons under investigation (PUI) being tested for COVID-19 to increase.
The number of PUI being tested does not reflect the level of risk to the public in the state.For more information about the outbreak, potential risks, and protective recommendations, visit the
SD-DOH websiteor
CDC website.
| Test Results | # of Cases |
|---|---|
|
Positive* |
108 |
|
Negative |
3609 |
|
Pending |
0 |
|
*Positive test results include testing conducted by the South Dakota Public Health Laboratory and private laboratories.
|
|
Number of Cases |
108 |
|
Hospitalized |
12 |
|
Deaths |
1 |
|
Recovered |
44 |
| County | # of Cases |
|---|---|
|
Aurora |
1 |
|
Beadle |
20 |
|
Bon Homme |
1 |
|
Brookings |
1 |
|
Brown |
3 |
|
Charles Mix |
1 |
|
Clark |
1 |
|
Clay |
3 |
|
Codington |
5 |
|
Davison |
2 |
|
Deuel |
1 |
|
Fall River |
1 |
|
Faulk |
1 |
|
Hamlin |
1 |
|
Hughes |
1 |
|
Hutchinson |
2 |
|
Kingsbury |
1 |
|
Lawrence |
6 |
|
Lincoln |
5 |
|
Lyman |
1 |
|
Marshall |
1 |
|
McCook |
2 |
|
Meade |
1 |
|
Minnehaha |
31 |
|
Pennington |
5 |
|
Roberts |
1 |
|
Todd |
1 |
|
Turner |
1 |
|
Union |
1 |
|
Yankton |
6 |
| Age Range | # of Cases |
|---|---|
|
0 to 19 years |
5 |
|
20 to 29 years |
21 |
|
30 to 39 years |
13 |
|
40 to 49 years |
20 |
|
50 to 59 years |
24 |
|
60 to 69 years |
17 |
|
70 to 79 years |
7 |
|
80+ years |
1 |
| Sex | # of Cases |
|---|---|
|
Male |
56 |
|
Female |
52 |
Data is updated daily by about 12 noon and includes cases reported through 5 p.m. the previous day.
Community Impact Map
Everyone has a role to play to get ready, stay healthy, and protect yourself, your family, and your community from COVID-19. The goal is to slow the spread of COVID-19 to reduce illness and death, while minimizing disruptions to daily life.
What does âcommunity mitigationâ mean?
Any actions that individuals, schools, businesses, and health care facilities take to slow the spread of the infection.
- None:
- Minimal to Moderate:
- Substantial:
NOTE: this data is best viewed on a desktop or laptop computer.
News
- March 31, 2020 - Press Conference
- March 30, 2020 - Potential COVID-19 Exposure in Deadwood
- March 27, 2020 - Press Conference
- March 26, 2020 - Press Conference
- March 25, 2020 - Noem Addresses Media and Public
- March 24, 2020 -
Press Conference
- Governor Noem provides information on Executive Order 2020-08.
- March 23, 2020 -
Press Conference
- Governor Noem provides information on Executive Order 2020-07.
- March 23, 2020 - Noem Issues Executive Order Regarding COVID-19 Guidelines
- March 23, 2020 -
Press Conference
- Governor Noem and Secretary of Health Kim Malsam-Rysdon provide an update on COVID-19 response efforts in South Dakota.
- March 22, 2020 -
Press Conference
- Governor Noem and Secretary of Health Kim Malsam-Rysdon provide an update on COVID-19 response efforts in South Dakota.
- March 19, 2020 - Press Conference
- March 18, 2020 - COVID-19 Briefing for Municipalities and Counties
- March 17, 2020 -
Press Conference
- Governor Noem and state officials provide updates on COVID-19 response efforts.
- March 16, 2020 -
Press Conference
- Governor Noem and state officials provide updates on COVID-19 response efforts including support for small businesses.
- March 16, 2020 - COVID-19 Guidance to Childcare Facilities
- March 13, 2020 - Press Conference
- Governor Noem announces additional COVID-19 response efforts including declaring a state of emergency, recommending school closures for the week of March 16, nursing home visitation restrictions, and an executive order for state employee remote work.
- March 12, 2020 - Press Conference
- Governor Noem and Health Department Officials provide an update on South Dakotaâs COVID-19 response.
- March 10, 2020 - Press Conference
- Governor Noem, Health Department officials announce South Dakotaâs first presumptive positive cases of COVID-19.
- March 5, 2020 - Update Webinar for Healthcare Providers| Slides
- March 4, 2020 - Informational Briefing for Senate Health and Human Services Committee
- February 27, 2020 - South Dakota Prepares for COVID-19 For more South Dakota state news, visit
Precautions to avoid illness
What can you do?
- Wash your hands often with soap and water for at least 20 seconds or use an alcohol-based hand sanitizer.
- Cover your coughs and sneezes with a tissue.
- Avoid close contact with people who are sick.
- Refraining from touching your eyes, nose and mouth.
- Clean frequently touched surfaces and objects.
- Individuals at higher risk for severe COVID-19 illness, such as older adults and people who have chronic medical conditions like heart, lung or kidney disease, should take actions
- Create a family planto prepare for COVID-19 and develop a stay at home kit
Cleaning and Disinfection Recommendations:
- Environmental Cleaning and Disinfection Recommendations
- COVID-19: How to Clean and Disinfect
- Disinfecting Your Facility if Someone is Sick
South Dakota Travelers Returning Home: What You Should Know?
South Dakotaâs healthcare system is prepared to identify and treat cases of COVID-19.
WHAT TO DO IF YOU DEVELOP SYMPTOMS
- Call your health care provider immediately and tell them about any recent travel or exposure.
- Individuals who are concerned that they have COVID-19 should contact their healthcare provider via phone before going to a clinic or hospital to prevent spread in healthcare facilities.
- Avoid contact with other people.
- Follow the directions of your healthcare provider and public health officials.
- Symptoms and Testing Guidance
- Symptom Checker Algorithm
- 10 Ways to Manage Respiratory Symptoms at Home
Find Federally Qualified Health Centers in South Dakota- community-based primary care services in underserved areas providing care on a sliding fee scale based on ability to pay.
Self-Quarantine, Self-Isolation, and Self-Monitoring:
Personal Protective Equipment (PPE) Guidance:
CDC does not recommend that people who are well wear a facemask to protect themselves from respiratory illnesses, including COVID-19. You should only wear a mask if a healthcare professional recommends it. A facemask should be used by people who have COVID-19 and are showing symptoms. This is to protect others from the risk of getting infected. The use of facemasks also is crucial for
health workersand other
people who are taking care of someone infected with COVID-19 in close settings
Community Guidance & Resources
What is Social Distancing? Infographic
Behavioral Health
- Taking Care of Your Behavioral Health: Tips for Social Distancing, Quarantine, and Isolation
- Handling COVID-19 Anxiety & Stress
Communities
- Implementation of Mitigation Strategies for Communities with Local COVID-19 Transmission
- Environmental Cleaning and Disinfection Recommendations
- Talking with Children About Coronavirus Disease
- South Dakota Community Mitigation Guidance
Retirement and Independent Living Facilities
- Plan, Prepare, and Respond
- Interim Guidance on Preventing the Spread of COVID-19
- Preparedness Checklist for Nursing Homes and other Long-Term Care Settings
Schools
- CDC Guidance: Considerations for School Closure
- Presentation for Schools
All Businesses and Employers
-
Workplace and Employer Resources & Recommendations
- Families First Coronavirus Response Act: What does it mean for employers?
- Employee Screening Questions and Guidelines: questions to ask employees reporting to work and guidance to help reduce the spread of the virus that causes COVID-19.
- Social Distancing at Work Poster
- Resources from other State Agencies
Food Service
Are you a business impacted by COVID-19?
Governor Kristi Noem announced Friday, March 20, 2020 that small businesses and non-profit organizations in South Dakota that have been negatively impacted by the global COVID-19 virus are now eligible for economic assistance from the U.S. Small Business Administration
Visit GOEDâs website at sdreadytowork.comor call<PHONE_NUMBER>
- March 20, 2020 - SBA Approves Economic Injury Disaster Loan Fund Program Access for South Dakota
- March 16, 2020 - Governor Noem Works to Activate Small Business Administrationâs Economic Injury Disaster Loan Fund Program in South Dakota
information for Medical Providers
- Medical providers who are concerned a patient may be infected with COVID-19 should:
- Mask the patient
- Isolate the Patient in a private room or separate area, and
- Contact with SD-DOH<PHONE_NUMBER>) immediately for consultation and guidance
- Clinicians are strongly encouraged to test for other infectious causes of respiratory illness, such as influenza and RSV.
Note: Asymptomatic patients are
not eligiblefor testing at the SD Public Health Laboratory.
for testing at the SD Public Health Laboratory.
|
|
||
| Clinical Features | Risk Exposure | |
|
|
||
| Fever OR Cough OR Shortness of Breath | -Individuals who are hospitalized
OR |
|
|
|
||
| Fever OR Cough OR Sore Throat OR Shortness of Breath | -Healthcare workers and first responders | |
|
|
SD Guidance for Healthcare Providers
- Guidance on specimen collection and testing, infection control practices, and other considerations are available at:
- SD-HAN 20-007: Guidance on Evaluating Persons for COVID-19 Infection (Updates SD-HAN 20-003)
- SD-HAN 20-006: Healthcare Facility Checklist
- SD-HAN 20-005: CDC COCA Call
- SD-HAN 20-004: Webinar for Healthcare
- SD-HAN 20-003: Evaluating Persons for COVID-19
- SD-HAN 20-002: Monitoring and Movement Guidance on Novel Coronavirus
- CDC Clinician Call: What Clinicians Need to Know to Prepare for COVID-19
- CDC HAN 427: Updated and Interim Guidance on Outbreak of 2019 Novel Coronavirus
- CMS: Prioritization of Survey Activities (3/23/20)
- CMS: Guidance for Infection Control and Prevention of COVID-19 in nursing homes (Revised 3/13/20)
- CMS:
COVID-19 Emergency Declaration - Healthcare Providers Fact Sheet
(3/13/20)
- SARS-CoV-2 Laboratory Requisition and PUI Evaluation Form (Updated 3/26/20)
-
Personal Protective Equipment (PPE) optimization strategies:Provides options for extended use, reprocessing, and reuse of the various PPE components given current shortages of PPE being reported in many areas of the country.
Provides options for extended use, reprocessing, and reuse of the various PPE components given current shortages of PPE being reported in many areas of the country.
- Public Health reminder:CDC urges healthcare facilities and clinicians to delay and reschedule elective ambulatory visits, surgeries and admissions, and routine dental and eye care to preserve staff, personal protective equipment, and patient care supplies, ensure staff and patient safety, and expand available hospital capacity during the COVID-19 pandemic.
-
Symptom Checker Algorithm
- SD-DOH would like to remind medical providers, hospitals, and laboratories that cases of COVID-19, caused by the SARS-CoV-2 virus, are considered immediately reportable
Important LISTSERVs for Healthcare Providers
The Department of Health maintains a variety of LISTSERVs that provide useful information on COVID-19, including current guidance and scheduled calls.
- Health Alert Network
- Laboratory LISTSERV
- Epi LISTSERV
- Healthcare-associated Infections LISTSERV
- Office of Licensure and Certification LISTSERV
ATTENTION RETIRED OR INACTIVE MEDICAL PROFESSIONALS:
Governor Noem is reaching out to our stateâs licensed medical professionals (physicians, nurses, EMTs, etc.) who are willing to volunteer their services during this COVID-19 pandemic through the Department of HealthâsStatewide Emergency Registry of Volunteers in South Dakota (SERV SD) .
Whether you work in a health field or not, active or retired, if you have an interest in assisting your community or state during the COVID-19 pandemic, we invite you to join SERV SD. SERV SD will create a database of medical and health care volunteers who can be mobilized immediately in response to an emergency. Participation in a deployment opportunity is optional. You may decide at the time a call is made to volunteer if you are willing and able to respond.
Registering with SERV SD is easy. Go to https://volunteers.sd.gov/
CDC Guidance for Healthcare Providers
CDC issued guidance to healthcare facilities in the event that illness is identified.
- Evaluating and reporting persons under investigation
- Healthcare infection control guidance
- Clinical care guidance
- Home care guidance
- Guidance for EMS
- Healthcare personnel with potential exposure guidance
- Inpatient Obstetrics Care
- Disposition of patients with novel coronavirus
- Collection and testing of postmortem samples


Aaron Johnson aka mmsimply all around madden player former house of Riddell Champion 15 time champion in other various leagues. Simp as he is affectionately called brings a wealth of dedication and experience to the house of Ridell know for his house award and team reveal shows simps puts a charge into the madden franchise. Always able to help with user issues and concerns
Jonathan Perry aka chug has been a fixture in the franchise community. With his level headed approach and forward thinking chugs always pushes the league to new heights chug is also a former House of Riddell champion known for his punishing running style he brings a wealth of leadership and knowledge that can help any league grow
Dark side has been a house staple for man years he is always available to house members for questions and rule interpretations. Dark side is also one of our leading twitch casters that gives us updates and reviews on games outside of madden know as the defense line guru dark side has a knack of turning out monster d lineman.
Allstate known as tae has been a house commissioner for a couple of years he has been a dominant force in the league winning numerous Super Bowls know for his offense output Allstate delivers in the biggest games. Allstate us know for being fair and challenging as a commish and a competitor and his willingness to accept and challenge new concepts makes him a valued member of the admin group


% const currentSection = 'index' %> <% const modules = [] %> <% const intro = `
Websites are marketing tools that evolve as business needs change. A style inventory ensures elements and components stay consistent as code is added and modified over time. The goal of a style inventory is to give designers and developers a place to begin when adding or changing page elements that are used in several contexts of the website.
For example, a button may be added as link at the bottom of a paragraph, as part of a call to action lockup, and as the submit trigger for a form. In all of these situations we want our audience to understand that that tapping this button performs an action. Instead of styling three different buttons, we can use one style that is used across all palces. To see all styles at once, the Buttons page in the style inventory shows how these buttons will look—as well as any future variations that may arise.
The style inventory can be used to reference current element styles and functionality.
The style inventory uses the \`all.css\` stylesheet and default javascript modules to display elements and components as they would look and work on the website. Copy the markup from the style inventory to add an element or component to the website.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.


About Me
My name is Jeffrey Potter. I am from South Carolina, and I am married with a beautiful 2 year old son. I started planting the seeds to teach my self web developement about a year ago, and I haven't looked back. I am passionate about new technologies, and I am constantly teaching myself new things. I look forward to a job as a Junior Developer in the near future.


Sign in with your Aurum Energy Inc. email to start the session<EMAIL_ADDRESS>For access, contact Administration here.


Department of Advanced Science and Technology
University of Computer Studies
B.C.Sc/B.C.Tech. ( Third Year)
Computer Organization (CST-301)
Mid Tearm Examination
March, 2015
Zone III
Answer ALL Questions
Time allowed 3hours.
-
- State whether the following statements are TRUE or FALSE. (5marks)
- The bus arbitration pins are needed to regulater traffic on the bus,in order to prevent two decices from trying to use it at the same time.
- Achievig the minimum instruction size must be weighted against the time required to decode and execute the instructions.
- Immediate addressing is a technique for specifying global variables.
sss
- The bus protocol is well-defined rules about how the external bus works, which all devices attached to it must obey.
- Choose correct or the best alternabive in the following: (5 marks)
- ........addressing can change the value but it cannot change the location.
A.Immediate B.Direct C.Indirect D.Implied
- What characteristic of RAM memoty makes it not suitable for ermanent.........
A.too slow B.unreliable C.it is volatile D.too bulky
- Which of the following is a micro operation?
A. The operations executed on data stored in register
B. The operations executed on data stored in CD ROM
C. The operations excuted on data stored in micro chips
D. The operations executed on data stored in RAM
- .......is meant that the new machine must be able to run old programs without change.
A.Extensibility B.Maintainability C.backward compatible D.Usability
- A ........ circuit takes an n-bit number as input and uses it to select exactly one of the 2&npsb; n output lines.
A.Multiplexer B.Decoder C.Encoder D.Shifter
- Match each of items in List-1(i-v) with the appropriate register in List-2(A-F). (5 marks)
List1
- The current microinstruction
- The address of the control store's
mamory
- Byte address of memory
- Word address of memory
- The top word of the stack
Flst-2
- PC
- Sp
- MPC
- MIR
- TOS
- MAR
-
- Describe the defferences between ANY THREE of the following:(12 marks)
- Defferences between Translation and Interpretation
- Differences between indexed addressing and based-indexed addressing
- Differences between master and slave buses
- Differences between Microinstruction Controls: Mic3 and Mic4
- Short Question
- In what sense are hardware and software equivalent? In what sense are they not equivalent?(4 marks)
- Explain Tri-state devices(4 marks)
-
- Draw a circuit diagram for the new 1 bit ALU to compute any ne of four functions-namely A NAAD B,A OR B, A XOR B or A add B depending on whether the function-select input lines.(8 marks)
- Draw a 128M x 2 bit memory chip using n x n natrices. Calculate the size of this memory chip in bit.(4 marks)
- A computeer ith a 32-bit wide data bus uses 1M x 1 dynamic RAM memoty chips.What is the smallest memoty (in bytes) that this computer can have?
(3marks)
-
- Draw a logic diagram for four 2bit words memory organization.(8marks)
- Consider the timing os a synchronous bus with 100MHz clock rate and it takes 1 nsec for a signal to change.The data setup time is 2nec, The address output delay is 4 nesc, MREQ delay from falling edge of O in T1 is 3 nsec, RD delay from fallng edge of O in T1 is 3 nsec.How much time would the memoty have to get the data onto the bus after RD is asserted? (3 marks)
- Draw a circuit diagram of 1 bit shifter with 8 bit input.Express the control pin and output for input 0011 1010 with right shift.(3 marks)
- Draw a circuit diagram of 1 bit shifter with 8 bit input. Express the control pin and output for input 0011 1010 with right shift.(5-marks)
-
- Write the detail of MIR to represent the following IJVM instructions:(12 marks)
| Tabel |
Operations |
| Main1 |
PC=PC + 1; goto (MBR) |
dup1 dup2 |
MAR=SP=SP+1 MDR=TOS;wr;goto Main1 |
wide_istore1 wide_istore2 wide_istore3 wide_istore4 |
PC=PC+1;fetch H=MBRU <<8 H=MBRU OR H MAR=LV + H; goto istore3 |
ifeq1 ifeq2 ifeq3 ifeq4
|
MAR=SP=SP-1;rd OPC=TOS TOS=MDR Z=OPC;IF(Z) goto T; else goto F |
- Convert the following "factorial of 10" java code to IJVM instructions if the IJVM instruction set is added new Mnemonic (IMUL) for multiplication.
j=10; f=1;
while(j>0)
{
f *=j;
j--;
}
-
- Compare 0-, 1-, 2-, and 3- address machine by wtiting programs to compute
X=(A+B)/ (C-D)+E
for each of the four machines.The instructions a vailable for use are as follows: (12 marks)
| 0-Address |
1-Address |
2-Address |
3-Address |
| PUSH M |
LOAD M |
MOV (X = Y) |
MOV (X = Y) |
| POP M |
STORE M |
ADD (X=X+Y) |
ADD (X=Y+Z) |
| ADD |
ADD M |
SUB (X=X+Y) |
SUB (X=X-Y) |
| SUB |
SUB M |
MUL (X=X*Y) |
MUL (X=X*Z) |
| MUL |
MUL M |
DIV (X=X/Y) |
DIV (X=X/Z) |
| DIV |
DIV M |
M is a16 bit memoty address and X,Y,Z are either 16 bit addresses or 4 bit registers.Assuming
8-bit opcodes, and instruction lengths that are multiples of 4 bits, how many bits does each machine need to compute X?
- Convert the following formulas from infix to reverse Polich notation.(3 marks)
- (A-B)*(((C-D *E)/F)/G)x *H
- (A-B)* (C+D) +E
- (A*B)+(C*D)-E
- Which of the following pairs of revrse Polish notation formulas are mathematically equivalent?
(2 marks)
- A B*C+ and A B C+*
- A B-C- and ABC--
- A B* D/ and A B C/*
********************************


PKEYUTL
Section: OpenSSL (1)Updated: 2009-04-10
Index Return to Main Contents
NAME
pkeyutl - public key algorithm utilitySYNOPSIS
openssl pkeyutl [-in file] [-out file] [-sigfile file] [-inkey file] [-keyform PEM|DER] [-passin arg] [-peerkey file] [-peerform PEM|DER] [-pubin] [-certin] [-rev] [-sign] [-verify] [-verifyrecover] [-encrypt] [-decrypt] [-derive] [-pkeyopt opt:value] [-hexdump] [-asn1parse] [-engine id]DESCRIPTION
The pkeyutl command can be used to perform public key operations using any supported algorithm.COMMAND OPTIONS
- -in filename
- This specifies the input filename to read data from or standard input if this option is not specified.
- -out filename
- specifies the output filename to write to or standard output by default.
- -inkey file
- the input key file, by default it should be a private key.
- -keyform PEM|DER
- the key format PEM, DER or ENGINE.
- -passin arg
- the input key password source. For more information about the format of arg see the PASS PHRASE ARGUMENTS section in openssl(1).
- -peerkey file
- the peer key file, used by key derivation (agreement) operations.
- -peerform PEM|DER
- the peer key format PEM, DER or ENGINE.
- -engine id
- specifying an engine (by its unique id string) will cause pkeyutl to attempt to obtain a functional reference to the specified engine, thus initialising it if needed. The engine will then be set as the default for all available algorithms.
- -pubin
- the input file is a public key.
- -certin
- the input is a certificate containing a public key.
- -rev
- reverse the order of the input buffer. This is useful for some libraries (such as CryptoAPI) which represent the buffer in little endian format.
- -sign
- sign the input data and output the signed result. This requires a private key.
- -verify
- verify the input data against the signature file and indicate if the verification succeeded or failed.
- -verifyrecover
- verify the input data and output the recovered data.
- -encrypt
- encrypt the input data using a public key.
- -decrypt
- decrypt the input data using a private key.
- -derive
- derive a shared secret using the peer key.
- -hexdump
- hex dump the output data.
- -asn1parse
- asn1parse the output data, this is useful when combined with the -verifyrecover option when an ASN1 structure is signed.
NOTES
The operations and options supported vary according to the key algorithm and its implementation. The OpenSSL operations and options are indicated below.Unless otherwise mentioned all algorithms support the digest:alg option which specifies the digest in use for sign, verify and verifyrecover operations. The value alg should represent a digest name as used in the EVP_get_digestbyname() function for example sha1.
RSA ALGORITHM
The RSA algorithm supports encrypt, decrypt, sign, verify and verifyrecover operations in general. Some padding modes only support some of these operations however.- -rsa_padding_mode:mode
-
This sets the RSA padding mode. Acceptable values for mode are pkcs1 for
PKCS#1 padding, sslv23 for SSLv23 padding, none for no padding, oaep
for OAEP mode, x931 for X9.31 mode and pss for PSS.
In PKCS#1 padding if the message digest is not set then the supplied data is signed or verified directly instead of using a DigestInfo structure. If a digest is set then the a DigestInfo structure is used and its the length must correspond to the digest type.
For oeap mode only encryption and decryption is supported.
For x931 if the digest type is set it is used to format the block data otherwise the first byte is used to specify the X9.31 digest ID. Sign, verify and verifyrecover are can be performed in this mode.
For pss mode only sign and verify are supported and the digest type must be specified.
- rsa_pss_saltlen:len
- For pss mode only this option specifies the salt length. Two special values are supported: -1 sets the salt length to the digest length. When signing -2 sets the salt length to the maximum permissible value. When verifying -2 causes the salt length to be automatically determined based on the PSS block structure.
DSA ALGORITHM
The DSA algorithm supports signing and verification operations only. Currently there are no additional options other than digest. Only the SHA1 digest can be used and this digest is assumed by default.DH ALGORITHM
The DH algorithm only supports the derivation operation and no additional options.EC ALGORITHM
The EC algorithm supports sign, verify and derive operations. The sign and verify operations use ECDSA and derive uses ECDH. Currently there are no additional options other than digest. Only the SHA1 digest can be used and this digest is assumed by default.EXAMPLES
Sign some data using a private key:
openssl pkeyutl -sign -in file -inkey key.pem -out sig
Recover the signed data (e.g. if an RSA key is used):
openssl pkeyutl -verifyrecover -in sig -inkey key.pem
Verify the signature (e.g. a DSA key):
openssl pkeyutl -verify -in file -sigfile sig -inkey key.pem
Sign data using a message digest value (this is currently only valid for RSA):
openssl pkeyutl -sign -in file -inkey key.pem -out sig -pkeyopt digest:sha256
Derive a shared secret value:
openssl pkeyutl -derive -inkey key.pem -peerkey pubkey.pem -out secret
SEE ALSO
genpkey(1), pkey(1), rsautl(1) dgst(1), rsa(1), genrsa(1)
Index
- NAME
- SYNOPSIS
- DESCRIPTION
- COMMAND OPTIONS
- NOTES
- RSA ALGORITHM
- DSA ALGORITHM
- DH ALGORITHM
- EC ALGORITHM
- EXAMPLES
- SEE ALSO
This document was created by man2html, using the manual pages.
Time: 05:29:09 GMT, December 24, 2015


Implements interfaces:
Library for performing image transformations using image-magick in combination with php's imagick extension
Located in /lib/sfFilebasePluginGfxEditorAdapterIMagick.php (line 20)
Compatibility layer to switch on the fly between gd versions.
Reference to editor.
If set to true, transparent images will not loose their transparent color definition during processing
Frees memory that was reserved for image manipulation.
Resizes the source image.
Rotates an image to $deg degree
Saves the image as destination path name to disc.
Sets the destination path.
Sets the flag that determins if the processor should preserve transparency during the image manipulation.
This is not needed by imagick, perhapts later on for fine tuning.
Sets the destination quality.
Documentation generated on Mon, 25 May 2009 15:21:37 +0200 by phpDocumentor 1.4.2


OUR PHILOSOPHY
Build systems that improve public good. Proactively identify areas where technology can help. Test our prototypes with actual users. Use and release open source software. Keep a flat hierarchy. Bypass bureaucracy to focus on delivery.
PRODUCTS
A open repository of all the Singapore Government's public data. It helps people understand the data using visualizations and articles, and provides realtime APIs for developers to use.
About
Work on meaningful projects from transport to healthcare. Improve access to education and justice. Don’t waste your skills building another shopping cart. Have a real impact on people's lives.
Design and build products based on what real people actually need. No corporate agendas and no buzzword campaigns. We don't serve our bosses, our agency, or even our ministers. We are public servants; we serve the public.
Actively prototype and evangelize ideas to make real things happen. Don't wait for opportunities to come, identify and pursue them. Work around or cut through bureaucracy. It's our job to challenge the status quo and make things better.


Very new to this. Just trying to compile the emonGLCD Home Energy Monitor sketch downloaded with EmonGLCD-master. I always get the following compile errors:
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\rtclib\RTClib.cpp: In static member function 'static uint8_t RTC_DS1388::EEPROMRead(uint16_t)':
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\rtclib\RTClib.cpp:368: error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\Wire/Wire.h:58: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\Wire/Wire.h:56: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\rtclib\RTClib.cpp: In static member function 'static void RTC_DS1388::EEPROMReadPage(uint8_t, uint8_t*)':
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\rtclib\RTClib.cpp:407: error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\Wire/Wire.h:58: note: candidate 1: uint8_t TwoWire::requestFrom(int, int)
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\Wire/Wire.h:56: note: candidate 2: uint8_t TwoWire::requestFrom(uint8_t, uint8_t)
Not sure what to do next. Any ideas?
Re: emonGLCD Home Energy Monitor sketch will not compile
When I look at my RTCLib, I haven't got 368 lines, and I've never seen that problem! It appears that Jean-Claude has added some real-time routines to his library and there's a conflict in there.
The Wire library function requestFrom is overloaded to accept either two parameters of uint8_t or two of int type. It seems RTClib is calling it with a uint8_t as the first, and a constant "1" or "8" as the second. I think the compiler is treating the constant as signed!
I'd try casting the constant to a uint8_t !
Or get an older copy of RTClib - I've attached the one I'm using, I suggest you try that.
Re: emonGLCD Home Energy Monitor sketch will not compile
Thanks for the reply. Unfortunately my coding skills are fairly basic so to try as you suggest will take me some time to work it out.
I tried your older copy of RTClib and the compiler errors change:
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp: In static member function 'static void RTC_DS1307::adjust(const DateTime&)':
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:125: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:126: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:127: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:128: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:129: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:130: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:131: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:132: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:133: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp: In static member function 'static DateTime RTC_DS1307::now()':
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:139: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:143: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:144: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:145: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:146: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:147: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:148: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:149: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp: In static member function 'static void RTC_PCF8563::adjust(const DateTime&)':
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:160: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:161: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:162: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:163: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:164: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:165: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:166: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:167: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:168: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:169: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:170: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:171: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:172: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:173: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:174: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:175: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp: In static member function 'static DateTime RTC_PCF8563::now()':
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:181: error: 'class TwoWire' has no member named 'send'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:185: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:186: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:187: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:188: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:189: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:190: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:191: error: 'class TwoWire' has no member named 'receive'
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp: In static member function 'static void RTC_Millis::adjust(const DateTime&)':
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:202: error: 'millis' was not declared in this scope
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp: In static member function 'static DateTime RTC_Millis::now()':
D:\My Documents\Personal\Open Energy Monitor\arduino-1.0.5\libraries\RTClib\RTClib.cpp:206: error: 'millis' was not declared in this scope
but I'm guessing from these different errors I maybe need some older versions of some other libraries or code.
Re: emonGLCD Home Energy Monitor sketch will not compile
Can you get a simple sketch to work, such as "blink.ino"?
Re: emonGLCD Home Energy Monitor sketch will not compile
Hmmm. I'm confused. I couldn't understand why you got that error last night, but it was late! I've got Arduino 1.0.5 too, I've just set up the 6-days old RTCLib and the Tester sketch has compiled error-free for me. But I get the same errors as you do for emonGLCD_HEM.ino
[Robin - it's a libraries issue! Specifically the Arduino Wire and JCW's RTCLib]
So what I've done:
In RTClib.cpp I changed line 368 to
Wire.requestFrom(getEEPROMBank(pos), 1U);
and line 407 to
Wire.requestFrom(getEEPROMBank((uint16_t)page * 8), 8U);
(In each case, 'U' is telling the compiler to treat the number (1 or 8) as unsigned rather than signed, and that keeps it happy.)
Re: emonGLCD Home Energy Monitor sketch will not compile
Thanks. That allowed to compile error free by changing the numbers 1 and 8 to unsigned numbers. Before the Tester sketch and the GLCD_SMM sketch compiled OK but not the HomeEnergyMonitor or SolarPV sketches. Now the HomeEnergyMonitor and SolarPV sketches compile and upload fine. Now I can start playing and try to learn a bit more about it all. Thanks for your help - much appreciated.


About Us
Meet The Team
The Longmire founders met working on parallel blockchain projects, and eventually teamed up to build a decentralized token rating dApp, fully housed on the Ethereum blockchain. From there, they expanded into other chat-based token rating systems, and continuted to focus on blockchain regulatory issues.
This prior work and collaboration led to an interest in democracy—and, specifically, questioning what democracy would look like if blockchain consensus mechanisms were applied to the lawmaking process rather than just the final vote. Please feel free to explore our website for more information, or reach out to us directly!
AK
AK is an alien. After studying economics and computer science at Cornell University, AK went on to earn his Ph.D. in ecology and foraging behavior at U.C. Davis. Alan has built everything from mobile apps to entire open-source systems, and is passionate about individual freedoms, the environment, and his dogs. AK is the CTO and Chief Architect at Longmire.
RY
RY is interested in the intersection between law and technology. After studying psychology and philosophy at U.C. Santa Cruz, RY earned a Master's in philosophy (SFSU), a B.S. in computer science (OSU), and a law degree from U.C. Davis. His past project focus on blockchain regulation, broadband access, and consumer protections. RY is the product lead at Longmire.


You have {{meData.subscriptions}} subscriptions.
Please select from the available subscriptions below to start working with the add-in. We'll then
load the available regions for this subscription and you'll be able to insert resources into Excel
per region and resource type!
You are currently not signed-in with Azure Active Directory or a Microsoft Account. To use this add-in, you need to sign-in with an account that has access to an Azure Subscription. After that, you'll be able to select an Azure Subscription and then insert resources per region and resource type with their billing details.


What you will learn
{% for objective in page.objectives %}
-
{{objective}}
{% endfor %}
Roadmap - {{page.courses.size}} Course(s)
{% for course in page.courses %}
{{course.name}}
({{course.ratingCount}} ratings),
{{course.students}} students
View on Udemy
{% endfor %}
Crafted For You With Love
{% for feature in page.features %}
{{feature.name}}
{{feature.description}}
{% endfor %}
{% include trustedby.html %}
What Your Colleagues Are Saying
{% for item in page.testimonials %}
{% endfor %}
{% include newsletter.html %}


Enter a title of a book. It will work better if you chose something out of this source:
This site is maintained by The-Log.


happyBirthdayMotu.com
Home
Wish Happy Bday
Games
Really Cool Game
Another Really Cool Game
About Her
Contact Her
Gimme a Thumbs up
UP
LEFT
RIGHT
DOWN
Terms and conditions
Send Feedback
copyright@swabhi


A Bar chart with rounded tops
This goes in the documents header:
<script src="RGraph.common.core.js"></script>
<script src="RGraph.bar.js"></script>
Put this where you want the chart to show up:
<div style="padding: 15px; display: inline-block">
<canvas id="cvs1" width="750" height="250">[No canvas support]</canvas>
<canvas id="cvs2" width="750" height="250">[No canvas support]</canvas>
<canvas id="cvs3" width="750" height="250">[No canvas support]</canvas>
<canvas id="cvs4" width="750" height="250">[No canvas support]</canvas>
<canvas id="cvs5" width="750" height="250">[No canvas support]</canvas>
<canvas id="cvs6" width="750" height="250">[No canvas support]</canvas>
</div>
This is the code that generates the chart - it should be placed AFTER the canvas tag(s):


Q: Why this format over an online course?
There are two main aspects: firstly, if online courses are an
effective system for you, or for learning this particular field, then we
encourage you to continue on that front! A couple of resources we
like are: fast.ai, and
neural networks
and deep learning, but there are many others.
The second aspect is that we've found there are some significant benefits
for learning in a small group, namely:
- Ability to clarify confusion directly dramatically speeds up
learning, and also builds confidence,
-
Exploratory nature of the workshop allows for supervised
experimentation,
- Collaboration with other students significantly increases engagement
and thus retention of knowledge,
- Building a local community enriches everyone, and allows for
connections and learning to be established outside of the workshop
itself,
- Direct access to trainers allows the teaching and interaction to be
adapted to the present students, and the specific areas of
clarification that they may require,
- Discussions with our trainers, who are industry experts,
allows students to learn more than what's directly in the course
syllabus, such as industry best practices, handy tools, and other
aspects of AI and deep learning.
Q: What do people use AI for?
One way of thinking about this is that people use AI to perform
tasks that might typically take a human, but have been done so
frequently that we have lots of data for it, and thus can use that
data to feed some algorithm so it can attempt the task.
Everyday examples are:
- Detecting "things" in videos/photos: such things include: people,
animals, objects, actions. This has wide applicability in factories,
wild-life parks, offices, etc.
- Making recommendations: such as places to go, products to buy,
events to attend.
- "Understanding" text: such as, classifying it as good or bad,
summarising it, working out what it's talking about, etc.
When you combine these abilities with specific technology, powerful
capabilities can be built.
You can find more concrete examples, along with simple explanations,
on our showreel.


|
|
.NET Framework |
| PREV TYPE NEXT TYPE |
FRAMES NO FRAMES |
| SUMMARY: INNER | FIELD | CONST | PROP | METHOD | OP | EVENT |
DETAIL: FIELD | CONST | PROP | METHOD | OP | EVENT |
NVelocity.Runtime.Parser.Node
Class GetExecutor
Executor that simply tries to execute a get(key)
operation. This will try to find a get(key) method
for any type of object, not just objects that
implement the Map interface as was previously
the case.
| Fields inherited from class NVelocity.Runtime.Parser.Node.AbstractExecutor |
|
method, property, rsvc |
| Constructor Summary |
GetExecutor(NVelocity.Runtime.RuntimeServices r, System.Type c, string key)
Default constructor.
|
| Method Summary |
| object |
execute(object o, NVelocity.Context.InternalContextAdapter context)
Execute method against context.
|
| Methods inherited from class NVelocity.Runtime.Parser.Node.AbstractExecutor |
|
isAlive
|
GetExecutor
public GetExecutor(NVelocity.Runtime.RuntimeServices r,
System.Type c,
string key)
-
Default constructor.
execute
public object execute(object o,
NVelocity.Context.InternalContextAdapter context)
-
Execute method against context.
|
|
.NET Framework |
| PREV TYPE NEXT TYPE |
FRAMES NO FRAMES |
| SUMMARY: INNER | FIELD | CONST | PROP | METHOD | OP | EVENT |
DETAIL: FIELD | CONST | PROP | METHOD | OP | EVENT |


Total Amount Collected:
Date Collected:
Interest Rate: 5%
Loan Duration:
| Loan ID | Amount paid | Date | Balance | Duration |
|---|---|---|---|---|
| 3452 | #23000 | 20/05/2019 | #10000 | 3months |
| 3452 | #3000 | 20/06/2019 | #70000 | 3months |
| 3452 | #3000 | 20/07/2019 | #4000 | 3months |
| 3452 | #3000 | 20/08/2019 | #1000 | 3months |


Use the buttons below to test the API registered on the other domain. *All information is stored in sessionStorage and is kept on your computer. There is no actual registration or login process external to your own system.
Username:
Password:
Login
DisplayName:
Submit


{# Home Page #} {% extends "base.html" %} {% load static %} {% block title %}Home{% endblock title %} {% block inlinecss %} {% endblock inlinecss %} {% block main %}
Do you have skills you would like to share with others? Want to travel? Want to learn from other communities? Become a Hacker in Residence!
 Your organization needs a Hacker in Residence!
This site is totally free to use. Organizations can create residency opportunities for free. Potential residents can browse opportunities for free.
{% endblock defaultpage %}


TODO
What will you do now?
There are four tunnels.
In tunnel one there is room of grow lights and plants.


If you consider yourself a programmer and are willing to contribute (through discussion or coding), we'd love to have you on board. There are development instructions to suggest how to help.
Thanks!
Development of the server is performed by a number of people all over the world. The FreeRADIUS Project thanks (in alphabetical order by surname)... (and this list is by no means exhaustive!)
- Alan Curry has contributed many fixes for such things as proxying, replication, and realm support. He also wrote the interface between the modules and the server core.
- Alan DeKok authored the dynamically loaded modules, and maintains the server core. He's the project's benevolent dictator.
- Jochen Friedrich contributed SMUX and SNMP support.
- Kostas Kalevras
wrote
dialup_admin
, a web/PHP front-end to administering LDAP/SQL back-ends for the server. Also maintains several server modules - Mike Machado wrote the MySQL module for the server.
- Chad Miller wrote a new config parser, restructured autoconf, and designed this web site.
- Nathan Neulinger wrote the Kerberos authentication module.
- Chris Parker
wrote the
attr_filter
module, contributed configuration file enhancements, and currently hosts FreeRADIUS.org, and the bug tracking system. - Adrian Pavlykevych wrote the LDAP module, now maintained by Kostas Kalevras.
- Javier Fernandez-Sanguino Peña contributed LDAP and Debian fixes.
- Miquel van Smoorenburg is the original author of Cistron Radius, FreeRADIUS' parent project, and was involved in setting up the FreeRADIUS project.
The above descriptions are woefully inadequate to describe what the developers do. The proof is in the pudding, as pudding hackers like to say.
Of course, this list isn't updated as often as it should be. We apologise to everyone that we neglect to thank.


Chapter 7 Multiple Treatment Designs
In the last unit, we were introduced to multiple-treatment experiments, using an example with which many of you are familiar: a hybrid research or demonstration trial. Recall how the analysis of variance worked: we compared two sources of variation to see how much of that variation each of them explained. There were two effects in our original trial: treatment and error
\[ Y_{ij}=\mu + T_i + \epsilon_{i(j)}\]
The Analysis of Variance (ANOVA) was used to calculate and compare these variances. First, the sums of squares from the treatment means and the error (the summed distributions of observations around each treatment mean) were calculated. By dividing the sum of squares by their degrees of freedom, the we obtained the treatment and error mean squares, also known as their variances. The F-value was derived from the ratio of the treatment variance to the error variance. Finally, the probability that the difference among treatments was zero, given the F-value we observed, was calculated using the F-distribution.
This experimental design is known as a Completely Randomized Design. It is the simplest multiple-treatment design there is. In this unit, we will learn two other designs commonly used in trials:
- Randomized Complete Block Design
- Two-Way Factorial Design
These designs, we will see, use additional sources of variation to either expand the number of treatments we can evaluate, or reduce the error (unexplained variation) in our trials so that we can better identify treatment effects.
7.1 Randomized Complete Block Design
If you have participated in agronomic research, you have likely heard references to a Randomized Complete Block Design (RCBD). We first discussed blocking when we learned about side-by-side trials. When we block treatments, we force treatments to occur in closer proximity to each other than they likely would were they assigned at random. The best way to understand this is to look at a plot map.
library(tidyverse)
= rep(1:4, each=4)
col = rep(1:4, 4)
row
= rep(1:4, each=4)
block
set.seed(5)
= sample(col, 16, replace = FALSE)
crd = list()
rcbd_list for(i in c(1:4)){
set.seed(i)
= sample(1:4, 4, replace = FALSE)
z = z
rcbd_list[[i]]
}
= do.call(c, rcbd_list)
rcbd
= cbind(col, row, block, crd, rcbd) %>%
dataset as.data.frame() %>%
gather(design, treatment, crd, rcbd) %>%
mutate(design = toupper(design)) %>%
mutate(block_effect = case_when(col==1 ~ 3,
==2 ~ 1,
col==3 ~ -1,
col==4 ~ -3))
col
%>%
dataset ggplot(aes(x=col, y=row, label=treatment)) +
geom_tile(fill="grey", color="black") +
geom_text(aes(label = treatment)) +
facet_grid(. ~ design)
In the plot above, the Completely Randomized Design (CRD) is shown on the left, and the Randomized Complete Block Design (RCBD) on the right. In the Completely Randomized Design, any treatment can occur anywhere in the the plot. Note that in the left plot, treatment 3 occurs twice in the first column of plots while treatment 2 does not occur at all. Treatment 2 occurs twice in the second column, but there is no treatment 1. In the Randomized Complete Block Design, each treatment must occur once, and only once, per column. In this case, the treatments are blocked on column.
Why block? Let’s suppose each column in the plot map above has a different soil type, with soils transitioning from more productive to less productive as columns increase from 1 to 4:
%>%
dataset ggplot(aes(x=col, y=row, label=treatment)) +
geom_tile(aes(fill=as.factor(col)), color="black") +
geom_text(aes(label = treatment)) +
scale_fill_manual(values = c("lightgreen", "yellow2", "orange1", "tomato")) +
facet_grid(. ~ design) +
theme(legend.position = "none")
Note that treatment 3 occurs three times in the more productive soils of columns 1 and 2, and only once in the less productive soils of columns 3 and 4. Conversely, treatment 1 occurs three times in the less productive soils of columns 3 and 4, but only once in the more productive soil of columns 1 or 2.
If the mean effect of treatment 3 is greater than the mean effect of treatment 1, how will we distinguish the effects of treatment and error? It is a moot question: we can’t. Our linear model is additive:
\[ Y_{ij}=\mu + T_i + \epsilon_{i(j)}\]
The term additive is important: it means we assume that treatment and error effects do not interact – they independently add or subtract from the population mean. If the measured effect of treatment is dependent on plot error, the model fails.
The plot on the right has blocked treatments according to column. Doing that allows us to remove the effect of soil type, which consistently varies from column to column, from the effect of error, which is random. Our linear model changes as well:
\[ Y_{ij}=\mu + B_i + T_j + BT_{ij}\]
Where \(Y_{ij}\) is the individual value, \(\mu\) is the population mean, \(B_i\) is the block effect, \(T_j\) is the treatment effect, and \(BT_{ij}\) is the interaction of block and treatment, also known as the error effect.
7.1.1 Case Study: Randomized Complete Block Design
A field trial outside Goshen, Indiana, evaluated the effect of seed treatments on soybean yield. Treatments were as follows: - A: untreated - B: metalaxyl only - C: metalaxyl + insecticide - D: metalaxyl + insecticide + nematicide
Treatments were arranged in a Randomized Complete Block Design.
library(tidyverse)
= data.frame(obs=c(1:16))
st set.seed(041383)
= rep(c(68.3))
mu = rep(1:4, each=4)
Block = rep(c(-2.2, -0.8, 0.3, 1.2), each = 4)
B = rep(c("A","B","C","D"), 4)
Treatment = rep(c(-1.1, -0.3, 0.8, 1.6), 4)
T = rnorm(n=16, mean = 0, sd = 1)
BT
= st %>%
st_data cbind(Block, Treatment, mu, B, T, BT) %>%
mutate(BT = round(BT,1)) %>%
mutate(Y = mu+B+T+BT) %>%
group_by(Block) %>%
sample_n(4) %>%
ungroup() %>%
select(-obs) %>%
mutate(Block = as.factor(Block))
$row = rep(1:4, 4)
st_data
%>%
st_data mutate(plot_label = paste0("Treatment ", Treatment, "\n", Y)) %>%
ggplot(aes(x=block, y=row, label=plot_label)) +
geom_tile(fill="grey", color="black") +
geom_text(aes(label = plot_label))
<IP_ADDRESS> Linear Additive Model
In this example, the linear additive model is:
\[ Y_{ij}=\mu + B_i + T_j + BT_{ij}\]
Or, with regard to our particular trial:
\[ Yield = Population \space Mean + Block \space Effect + Treatment \space Effect + Block \times Treatment \space Interaction\]
We can see how the additive model works in the following table:
= st_data %>%
st_effects select(Block, row, Treatment, mu, B, T, BT, Y)
::kable(st_effects) knitr
| Block | row | Treatment | mu | B | T | BT | Y |
|---|---|---|---|---|---|---|---|
| 1 | 1 | D | 68.3 | -2.2 | 1.6 | -1.1 | 66.6 |
| 1 | 2 | A | 68.3 | -2.2 | -1.1 | -0.8 | 64.2 |
| 1 | 3 | C | 68.3 | -2.2 | 0.8 | 0.2 | 67.1 |
| 1 | 4 | B | 68.3 | -2.2 | -0.3 | -1.5 | 64.3 |
| 2 | 1 | C | 68.3 | -0.8 | 0.8 | -0.4 | 67.9 |
| 2 | 2 | A | 68.3 | -0.8 | -1.1 | -0.4 | 66.0 |
| 2 | 3 | D | 68.3 | -0.8 | 1.6 | -1.3 | 67.8 |
| 2 | 4 | B | 68.3 | -0.8 | -0.3 | -0.1 | 67.1 |
| 3 | 1 | C | 68.3 | 0.3 | 0.8 | 1.0 | 70.4 |
| 3 | 2 | B | 68.3 | 0.3 | -0.3 | 1.5 | 69.8 |
| 3 | 3 | A | 68.3 | 0.3 | -1.1 | 1.3 | 68.8 |
| 3 | 4 | D | 68.3 | 0.3 | 1.6 | -1.6 | 68.6 |
| 4 | 1 | A | 68.3 | 1.2 | -1.1 | -0.1 | 68.3 |
| 4 | 2 | B | 68.3 | 1.2 | -0.3 | 2.0 | 71.2 |
| 4 | 3 | D | 68.3 | 1.2 | 1.6 | 0.4 | 71.5 |
| 4 | 4 | C | 68.3 | 1.2 | 0.8 | 0.1 | 70.4 |
In the first row of the table, we see that the observed yield, Y, is:
\[ Y = 68.3 + (-2.2) + (1.3) + (-1.1) = 66.3 \]
Similarly, in the fifth row:
\[ Y = 68.3 + (-0.8) + (0.5) + (-0.4) = 67.6 \]
<IP_ADDRESS> Analysis of Variance
We can use the linear additive model above with R to create the proper linear model:
= aov(Y ~ Block + Treatment, st_data)
model anova(model)
## Analysis of Variance Table
##
## Response: Y
## Df Sum Sq Mean Sq F value Pr(>F)
## Block 3 56.250 18.7500 23.7175 0.0001313 ***
## Treatment 3 10.485 3.4950 4.4209 0.0359018 *
## Residuals 9 7.115 0.7906
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Note that in the above model, we only specify the Block and Treatment sources of variation. Any source of variation not included in the model and, if you will “leftover” from the model, is pooled into the Residuals, or error. In the model above, the interaction of Block and Treatment (BT) is not specified, for it is the source of any variation we observe from plot to plot.
Two sources of variation are tested above: Block and Treatment. The F-value for both is calculated by dividing their Mean Square by the Residual (or Error) Mean Square. The probability that the difference among blocks or treatment is zero, given their observed F-value, is reported in the \(Pr(>F)\) column.
The Block effect is usually of less interest in analyzing table results. If it is insignificant, that may indicate we don’t need to block in this location in the future, but in the vast majority of trials there will be at least some benefit to blocking.
The most important effect of blocking is seen upon examining the Sum of Squares (“Sum Sq”) column. Here we can see just how much the Residual Sum of Squares was reduced by including blocks in the model. Had we not included the Block term in our model, our Residual Sum of Squares would have been about 63.4. Even given the greater residual degress of freedom (which would have included the three degrees of freedom that were assigned to Block, the residual mean square would have been about \(64\div12 = 5.3\). Without even calculating F, we can see the error mean square would have been larger than the treatment mean square, meaning there was more variance within treatments than between them. The Treatment effect would not have been significant.
7.2 Factorial Design
Agronomy is all about interactions. How do hybrids differ in their response to nitrogen? Response to fungicide? Does a fungicide increase yield more when it is sprayed on corn at V5 or VT? Does the effect of a starter fertilizer depend whether it is applied in-row or in a 2x2 band? How does a crop respond to popuation in 30-inch rows vs 15-inch rows?
To grow a successful crop requires not a single input, but dozens, some of which we can manage and others we can’t. So the issue of how different treatments interact is critical. It is also often more efficient and informative for us to study these interactions together in a single trial, than to study them separately in two or more trials.
Before we go further, some nomenclature. In factorial design, treatments that differ in a single variable are called levels, and these levels together compose a factor. Here are some examples of levels and factors:
- multiple micronutrient products all applied at the V5 stage in corn – the product composition is the level, the timing the factor
- a single fungicide product, applied at V5, V10, or VT in corn – the timing is the level, the fungicide composition the factor
- a single adjuvant, tested with different nozzles – the nozzle is the level, the adjuvant composition the factor
- multiple hybrids, grown in rotation following soybean – the hybrid is the level, the crop rotation is the factor
As you may have anticipated, a factorial design combines two or more factors, each containing two or more levels. For example:
- Factor “Composition” includes two levels of foliar micronutrient product: Mn and Zn
- Factor Timing” includes two levels of timing: V5 and VT
In a factorial designm, every level of factor Composition will occur with every level of factor Timing. We can visualize these treatment combinations the same way we might visualize a Punnet square in Mendalian genetics. The main effects are given on the axes and the particular treatment combinations are in the cells.
= data.frame(Timing = c("V5", "VT", "V5", "VT"),
factorial_trts_1 Composition = c("Mn", "Mn", "Zn", "Zn"),
trt = c("Mn @ V5", "Mn @ VT", "Zn @ V5", "Zn @ VT"))
%>%
factorial_trts_1 ggplot(aes(x=Timing, y=Composition)) +
geom_tile(color="black", fill="grey") +
geom_text(aes(label = trt), size=6) +
theme(axis.title = element_text(size=18),
axis.text = element_text(size=14))
In another example: - Factor “Composition” consists of two adjuvant ingredients: guar (G) or an polyacrylamide (P) - Nozzles are Flat Fan (F) or AI nozzle (A)
Our treatments in the factorial design, then, are:
= data.frame(Nozzle = c("FF", "AI", "FF", "AI"),
factorial_trts_2 Composition = c("G", "G", "P", "P"),
trt = c("FF x G", "AI x G", "FF x P", "AI x P"))
%>%
factorial_trts_2 ggplot(aes(x=Nozzle, y=Composition)) +
geom_tile(color="black", fill="grey") +
geom_text(aes(label = trt), size=6) +
theme(axis.title = element_text(size=18),
axis.text = element_text(size=14))
7.2.1 Case Study 1
Our case study is a clover forage trial conducted in New Zealand from 1992 to 1994. This dataset is publically available as part of the agridat package in R. For this first case study, we will focus on a subset of the data. The two factors were sulfur (S) and phosphorus (P) fertilizer. Sulfur was applied at 0, 11.25, or 22.5 kg/ha, while phosphorus was applied at 0, 40, and 80 kg/ha. Yield is reported in tons/hectare.
Factorial trials are often nicknames by the number of levels of each factor. In this case, we have a \(three-by-three\), or \(3\times3\) trial. We can visualize the factorial combinations as producing the following nine treatments:
= data.frame(Sulfur = rep(c(0, 11.25, 22.5),3),
factorial_trts_3_main Phosphorus = rep(c(0,80,160), each=3))
= factorial_trts_3_main %>%
factorial_trts_3_combos mutate(trt = paste0("S = ", Sulfur, "\n", "P = ", Phosphorus))
%>%
factorial_trts_3_combos ggplot(aes(x=Sulfur, y=Phosphorus)) +
geom_tile(color="black", fill="grey") +
geom_text(aes(label = trt), size=6) +
theme(axis.title = element_text(size=18),
axis.text = element_text(size=14))
library(agridat)
library(tidyverse)
= sinclair.clover
clover
= clover %>%
clover_dataset filter(S %in% c(0, 11.25, 22.50)) %>%
filter(P %in% c(0, 80, 160)) %>%
mutate(S = as.factor(S),
P = as.factor(P))
= data.frame(block = rep(1:4, each=9),
clover_data treatment = rep(1:9, 4),
sulfur = rep(clover_dataset$S,4),
phosphorus = rep(clover_dataset$P,4),
s_p_means = rep(clover_dataset$yield,4))
= clover_data %>%
clover_effects mutate(mu = mean(s_p_means)) %>%
group_by(sulfur) %>%
mutate(S = mean(s_p_means) - mu) %>%
ungroup() %>%
group_by(phosphorus) %>%
mutate(P = mean(s_p_means) - mu) %>%
ungroup() %>%
group_by(sulfur, phosphorus) %>%
mutate(SP = mean(s_p_means) - (mu + S + P)) %>%
ungroup() %>%
select(-treatment, -s_p_means) %>%
mutate(mu = round(mu,2),
S = round(S,2),
P = round(S,2),
SP = round(SP,2))
set.seed(073020)
= clover_effects %>%
clover_final mutate(Error = rnorm(36, 0, 0.4)) %>%
mutate(Error = round(Error, 1)) %>%
mutate(Yield = mu + S + P + SP + Error)
When we deal with factorial designs, it is important to visualize the data. We can observe the data patterns using a line plot. We see clover yield increased with sulfur and phosphorus. We notice, however, the difference in yield between P=80 and P=160 is greater when S=0 than when S=11.25 or S=22.5. We also notice the difference betwee sulfur=0 and sulfur=22.5 is greater for P=160 than P=0.
%>%
clover_final group_by(sulfur, phosphorus) %>%
summarise(Yield = mean(Yield)) %>%
ungroup() %>%
ggplot(aes(x=sulfur, y=Yield, group=phosphorus)) +
geom_line(aes(color=phosphorus), size=2) +
theme(axis.text = element_text(size=12),
axis.title = element_text(size=14),
legend.text = element_text(size=12),
legend.title = element_text(size=14))
## `summarise()` has grouped output by 'sulfur'. You can override using the `.groups` argument.
These differences are called interactions and are the most interesting part of a factorial design. In this case, it is no surprise that crop yield increases with sulfur fertiliztion in a sulfur soil. It is interesting, however, that the response to sulfur is appears to be dependent on phosphorus fertilization, and lends support to Liebig’s Law of the Minimum, which states that addition of a particular nutrient will not increase yield if other nutrients are more deficient.
<IP_ADDRESS> Linear Additive Model
For our trial with two factors, the linear model is:
\[ Y_{ijk} = \mu + S_i + P_j + SP_{ij} + \epsilon_{ij(k)} \] Each observed value, then, is the sum (additive value) of the population mean (\(\mu\)), sulfur effect (\(S\)), phosphorus effect (\(P\)), the interaction of sulfur and phosphorus (\(SP\)), and the error (\(\epsilon\)). As in previous models, error is the random source of variation due to environmental and instrumental inconsistency. \(S_i\) and \(P_j\) are described as main effects. \(SP_{ij}\) is the interaction.
In the table below, the effects from this linear model are broken out:
::kable(clover_final) knitr
| block | sulfur | phosphorus | mu | S | P | SP | Error | Yield |
|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 5.72 | -2.06 | -2.06 | 0.37 | -0.1 | 1.87 |
| 1 | 0 | 80 | 5.72 | -2.06 | -2.06 | -0.38 | 0.2 | 1.42 |
| 1 | 0 | 160 | 5.72 | -2.06 | -2.06 | 0.01 | 0.1 | 1.71 |
| 1 | 11.25 | 0 | 5.72 | 0.24 | 0.24 | 0.29 | 0.2 | 6.69 |
| 1 | 11.25 | 80 | 5.72 | 0.24 | 0.24 | 0.16 | -0.4 | 5.96 |
| 1 | 11.25 | 160 | 5.72 | 0.24 | 0.24 | -0.44 | 0.0 | 5.76 |
| 1 | 22.5 | 0 | 5.72 | 1.81 | 1.81 | -0.66 | 0.6 | 9.28 |
| 1 | 22.5 | 80 | 5.72 | 1.81 | 1.81 | 0.23 | 0.2 | 9.77 |
| 1 | 22.5 | 160 | 5.72 | 1.81 | 1.81 | 0.43 | -0.3 | 9.47 |
| 2 | 0 | 0 | 5.72 | -2.06 | -2.06 | 0.37 | 0.4 | 2.37 |
| 2 | 0 | 80 | 5.72 | -2.06 | -2.06 | -0.38 | 0.0 | 1.22 |
| 2 | 0 | 160 | 5.72 | -2.06 | -2.06 | 0.01 | 0.2 | 1.81 |
| 2 | 11.25 | 0 | 5.72 | 0.24 | 0.24 | 0.29 | 1.0 | 7.49 |
| 2 | 11.25 | 80 | 5.72 | 0.24 | 0.24 | 0.16 | 0.1 | 6.46 |
| 2 | 11.25 | 160 | 5.72 | 0.24 | 0.24 | -0.44 | -0.4 | 5.36 |
| 2 | 22.5 | 0 | 5.72 | 1.81 | 1.81 | -0.66 | -0.2 | 8.48 |
| 2 | 22.5 | 80 | 5.72 | 1.81 | 1.81 | 0.23 | -0.1 | 9.47 |
| 2 | 22.5 | 160 | 5.72 | 1.81 | 1.81 | 0.43 | 0.2 | 9.97 |
| 3 | 0 | 0 | 5.72 | -2.06 | -2.06 | 0.37 | 0.4 | 2.37 |
| 3 | 0 | 80 | 5.72 | -2.06 | -2.06 | -0.38 | -0.1 | 1.12 |
| 3 | 0 | 160 | 5.72 | -2.06 | -2.06 | 0.01 | 0.7 | 2.31 |
| 3 | 11.25 | 0 | 5.72 | 0.24 | 0.24 | 0.29 | 0.2 | 6.69 |
| 3 | 11.25 | 80 | 5.72 | 0.24 | 0.24 | 0.16 | -0.6 | 5.76 |
| 3 | 11.25 | 160 | 5.72 | 0.24 | 0.24 | -0.44 | 0.9 | 6.66 |
| 3 | 22.5 | 0 | 5.72 | 1.81 | 1.81 | -0.66 | 0.4 | 9.08 |
| 3 | 22.5 | 80 | 5.72 | 1.81 | 1.81 | 0.23 | -0.3 | 9.27 |
| 3 | 22.5 | 160 | 5.72 | 1.81 | 1.81 | 0.43 | 0.0 | 9.77 |
| 4 | 0 | 0 | 5.72 | -2.06 | -2.06 | 0.37 | 0.4 | 2.37 |
| 4 | 0 | 80 | 5.72 | -2.06 | -2.06 | -0.38 | -0.6 | 0.62 |
| 4 | 0 | 160 | 5.72 | -2.06 | -2.06 | 0.01 | 0.4 | 2.01 |
| 4 | 11.25 | 0 | 5.72 | 0.24 | 0.24 | 0.29 | -0.2 | 6.29 |
| 4 | 11.25 | 80 | 5.72 | 0.24 | 0.24 | 0.16 | 0.2 | 6.56 |
| 4 | 11.25 | 160 | 5.72 | 0.24 | 0.24 | -0.44 | -0.1 | 5.66 |
| 4 | 22.5 | 0 | 5.72 | 1.81 | 1.81 | -0.66 | -0.3 | 8.38 |
| 4 | 22.5 | 80 | 5.72 | 1.81 | 1.81 | 0.23 | 0.2 | 9.77 |
| 4 | 22.5 | 160 | 5.72 | 1.81 | 1.81 | 0.43 | -0.3 | 9.47 |
<IP_ADDRESS> Analysis of Variance
In R, we use the same approach as previous weeks. All terms from the linear model, except the population mean and error, are included in the model statement.
library(broom)
# define the model
= aov(Yield ~ sulfur + phosphorus + sulfur:phosphorus, data = clover_final)
model #run the anova
= tidy(model)
anova_tab
::kable(anova_tab) knitr
| term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|
| sulfur | 2 |<PHONE_NUMBER> |<PHONE_NUMBER> | 1227.117734 | 0.0000000 |
| phosphorus | 2 | 0.6720889 | 0.3360444 | 2.362812 | 0.1133374 |
| sulfur:phosphorus | 4 | 5.7705111 | 1.4426278 | 10.143477 | 0.0000381 |
| Residuals | 27 | 3.8400000 | 0.1422222 | NA | NA |
In the table, we see that the main effect of sulfur is significant at the \(P \le 0.05\) level. The phosphorus effect is not significant. The interaction (sulfur:phosphorus) effect is also significant at the \(P\le0.05\) level.
When an interaction is significant, we should examine the effect of one factor independently at each level of the other. We can group analyses of one factor by levels of another factor using the group_by command in R. In this case we will tell R to run the analysis of variance for the sulfur effect separately for each level of P.
library(broom)
= clover_final %>%
slice_1 group_by(phosphorus) %>%
do(tidy(aov(.$Yield ~ .$sulfur))) %>%
as.data.frame() %>%
mutate(term = gsub("[.][$]", "", term))
::kable(slice_1) knitr
| phosphorus | term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|---|
| 0 | sulfur | 2 | 90.33447 | 45.1672333 | 264.8242 | 0 |
| 0 | Residuals | 9 | 1.53500 | 0.1705556 | NA | NA |
| 80 | sulfur | 2 | 145.58927 | 72.7946333 | 671.9505 | 0 |
| 80 | Residuals | 9 | 0.97500 | 0.1083333 | NA | NA |
| 160 | sulfur | 2 | 118.89360 | 59.4468000 | 402.2716 | 0 |
| 160 | Residuals | 9 | 1.33000 | 0.1477778 | NA | NA |
We see that the effect of sulfur is significant at each level of phosphorus. We can group analyses of phosphorusby each level of sulfur.
library(broom)
= clover_final %>%
slice_2 group_by(sulfur) %>%
do(tidy(aov(.$Yield ~ .$phosphorus))) %>%
as.data.frame() %>%
mutate(term = gsub("[.][$]", "", term))
::kable(slice_2) knitr
| sulfur | term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|---|
| 0 | phosphorus | 2 | 2.869267 | 1.4346333 | 17.331141 | 0.0008196 |
| 0 | Residuals | 9 | 0.745000 | 0.0827778 | NA | NA |
| 11.25 | phosphorus | 2 | 1.782067 | 0.8910333 | 3.734249 | 0.0659399 |
| 11.25 | Residuals | 9 | 2.147500 | 0.2386111 | NA | NA |
| 22.5 | phosphorus | 2 | 1.791267 | 0.8956333 | 8.507335 | 0.0084258 |
| 22.5 | Residuals | 9 | 0.947500 | 0.1052778 | NA | NA |
Whoa, what is going on here! We can now see the phosphorus effect is significant at S=0 and S=22.5, and almost significant at S=11.25. If we look at the line plot above, we see that phosphorus increases yield when S=0 and S=11.25, but decreases yield when S=22.5. The positive and negative effects cancelled each out when we looked at the overall analysis of variance – the interaction masked the sulfur effect so that its significance was not reflected in the results.
This demonstrates why it is so important to investigate interactions before making inferences about treatments. If we concluded from the first analysis of variance that sulfur affected yield, we would have been accurate. But if we had not analyzed the phosphorus effect separately by sulfur level, we would have erroneously concluded it did not affect yield.
7.2.2 Case Study 2
For the second case study, we are going to look at an experiment where turnips were planted at different densities in different row spacings. There were 5 densities and 4 row widths. This trial also blocked treatments, so it combines the randomized complete block and factorial designs.
<IP_ADDRESS> Linear Additive Model
The linear additive model for this trial is: \[Y_{ijk} = B_i + D_j + S_k + DS_{jk} + BDS_{ijk}\] In this model, \(Y_{ijk}\) is yield, \(B_i\) is block, \(D_j\) is density, \(S_k\) is row spacing, \(DS_{jk}\) is the interaction of planting density and row spacing, and \(BDS_{ijk}\) is the interaction of block, density, and row width, which is used as the residual or error term in this model. We can see the additive effects of the factor levels and their interactions in the table below.
library(agridat)
= mead.turnip
turnip
= turnip %>%
turnip_data filter(!spacing %in% c(32)) %>%
filter(density %in% c(8,20,32)) %>%
mutate(spacing = as.factor(spacing),
density = as.factor(density))
= turnip_data %>%
turnip_effects mutate(mu = mean(yield)) %>%
group_by(block) %>%
mutate(B = mean(yield) - mu) %>%
ungroup() %>%
group_by(spacing) %>%
mutate(S = mean(yield) - mu) %>%
ungroup() %>%
group_by(density) %>%
mutate(D = mean(yield) - mu) %>%
ungroup() %>%
group_by(spacing, density) %>%
mutate(SD = mean(yield) - (mu + B + S + D)) %>%
ungroup() %>%
mutate(Error = yield - (mu + B + S + D + SD)) %>%
mutate(mu = round(mu,2),
B = round(B,2),
S = round(S,2),
D = round(D,2),
SD = round(SD,2),
Error = round(Error, 2))
= turnip_effects %>%
turnip_final mutate(yield = if_else(spacing==16 & density==32, yield-0.4, yield)) %>%
mutate(yield = if_else(spacing==8 & density==32, yield+0.5, yield)) %>%
mutate(yield = if_else(spacing==4 & density==32, yield+0.3, yield))%>%
mutate(yield = if_else(spacing==16 & density==8, yield+3.2, yield))
#turnip_data
::kable(turnip_final) knitr
| yield | block | spacing | density | mu | B | S | D | SD | Error |
|---|---|---|---|---|---|---|---|---|---|
| 2.40 | B1 | 4 | 8 | 2.67 | -0.26 | 0.02 | -0.17 | 0.29 | -0.16 |
| 2.56 | B1 | 4 | 20 | 2.67 | -0.26 | 0.02 | 0.11 | 0.18 | -0.16 |
| 2.78 | B1 | 4 | 32 | 2.67 | -0.26 | 0.02 | 0.06 | 0.30 | -0.31 |
| 2.33 | B1 | 8 | 8 | 2.67 | -0.26 | 0.08 | -0.17 | 0.32 | -0.32 |
| 2.56 | B1 | 8 | 20 | 2.67 | -0.26 | 0.08 | 0.11 | 0.21 | -0.26 |
| 3.03 | B1 | 8 | 32 | 2.67 | -0.26 | 0.08 | 0.06 | 0.25 | -0.27 |
| 5.21 | B1 | 16 | 8 | 2.67 | -0.26 | -0.10 | -0.17 | 0.17 | -0.30 |
| 2.56 | B1 | 16 | 20 | 2.67 | -0.26 | -0.10 | 0.11 | 0.38 | -0.25 |
| 1.90 | B1 | 16 | 32 | 2.67 | -0.26 | -0.10 | 0.06 | 0.23 | -0.30 |
| 2.60 | B2 | 4 | 8 | 2.67 | 0.07 | 0.02 | -0.17 | -0.03 | 0.04 |
| 2.89 | B2 | 4 | 20 | 2.67 | 0.07 | 0.02 | 0.11 | -0.15 | 0.17 |
| 3.06 | B2 | 4 | 32 | 2.67 | 0.07 | 0.02 | 0.06 | -0.02 | -0.03 |
| 2.63 | B2 | 8 | 8 | 2.67 | 0.07 | 0.08 | -0.17 | -0.01 | -0.02 |
| 2.69 | B2 | 8 | 20 | 2.67 | 0.07 | 0.08 | 0.11 | -0.11 | -0.13 |
| 3.48 | B2 | 8 | 32 | 2.67 | 0.07 | 0.08 | 0.06 | -0.08 | 0.18 |
| 5.57 | B2 | 16 | 8 | 2.67 | 0.07 | -0.10 | -0.17 | -0.16 | 0.06 |
| 3.04 | B2 | 16 | 20 | 2.67 | 0.07 | -0.10 | 0.11 | 0.06 | 0.23 |
| 2.31 | B2 | 16 | 32 | 2.67 | 0.07 | -0.10 | 0.06 | -0.10 | 0.11 |
| 2.67 | B3 | 4 | 8 | 2.67 | 0.19 | 0.02 | -0.17 | -0.16 | 0.11 |
| 2.71 | B3 | 4 | 20 | 2.67 | 0.19 | 0.02 | 0.11 | -0.27 | -0.01 |
| 3.44 | B3 | 4 | 32 | 2.67 | 0.19 | 0.02 | 0.06 | -0.15 | 0.35 |
| 2.98 | B3 | 8 | 8 | 2.67 | 0.19 | 0.08 | -0.17 | -0.13 | 0.33 |
| 3.21 | B3 | 8 | 20 | 2.67 | 0.19 | 0.08 | 0.11 | -0.24 | 0.39 |
| 3.39 | B3 | 8 | 32 | 2.67 | 0.19 | 0.08 | 0.06 | -0.21 | 0.09 |
| 5.76 | B3 | 16 | 8 | 2.67 | 0.19 | -0.10 | -0.17 | -0.29 | 0.25 |
| 2.83 | B3 | 16 | 20 | 2.67 | 0.19 | -0.10 | 0.11 | -0.07 | 0.02 |
| 2.40 | B3 | 16 | 32 | 2.67 | 0.19 | -0.10 | 0.06 | -0.22 | 0.20 |
As we did before, we visually inspect the data for insights into how they may interact.
%>%
turnip_final group_by(density, spacing) %>%
summarise(yield = mean(yield)) %>%
ungroup() %>%
ggplot(aes(x=spacing, y=yield, group=density)) +
geom_line(aes(color=density), size=2)
## `summarise()` has grouped output by 'density'. You can override using the `.groups` argument.
The plot gives critical insight into these data. Increasing spacing from 4 to 8 to 16 seems to cause a slight increase in yield where density=20. But where density=8, yield seems to increase rapidly between row spacing 8 and row spacing 16. Where density = 32, yield increases slighty with row spacing from 4 to 8, and then decreases markedly from 8 to 16.
The mean yield, averaged across row spacings, changes little across planting densities – even though the yields change dramatically within each of the individual row spacings. If we did not visually examine the data above, and instead relied on the ANOVA to alert us to an affect, we could miss this very important insight.
<IP_ADDRESS> Analysis of Variance
Our analysis of variance is similar to that we ran for the first case study, except for it now includes the block term.
= aov(yield ~ block + density + spacing + density:spacing, data = turnip_final)
model = anova(model)
anova_tab
::kable(anova_tab) knitr
| Df | Sum Sq | Mean Sq | F value | Pr(>F) | |
|---|---|---|---|---|---|
| block | 2 | 0.9770963 | 0.4885481 | 25.06684 | 1.17e-05 |
| density | 2 | 3.3854519 | 1.6927259 | 86.85182 | 0.00e+00 |
| spacing | 2 | 2.6353852 | 1.3176926 | 67.60929 | 0.00e+00 |
| density:spacing | 4 | 16.3880593 | 4.0970148 | 210.21312 | 0.00e+00 |
| Residuals | 16 | 0.3118370 | 0.0194898 | NA | NA |
The planting density and plant spacing main effects were significant, as was their interacton.
Was the spacing effect significant at each level of density? We can slice the data to find this out.
library(broom)
= turnip_final %>%
slice_1 group_by(density) %>%
do(tidy(aov(.$yield ~ .$spacing))) %>%
as.data.frame() %>%
mutate(term = gsub("[.][$]", "", term))
::kable(slice_1) knitr
| density | term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|---|
| 8 | spacing | 2 | 16.9677556 | 8.4838778 |<PHONE_NUMBER> | 0.0000129 |
| 8 | Residuals | 6 | 0.4070000 | 0.0678333 | NA | NA |
| 20 | spacing | 2 | 0.0182000 | 0.0091000 | 0.1341523 | 0.8770078 |
| 20 | Residuals | 6 | 0.4070000 | 0.0678333 | NA | NA |
| 32 | spacing | 2 | 2.0374889 | 1.0187444 | 12.8701572 | 0.0067549 |
| 32 | Residuals | 6 | 0.4749333 | 0.0791556 | NA | NA |
We can see above that the effect of spacing on yield is only significant at \(P\le0.05\) density=8 and density=32. If we examining the effect of density separately for each level of spacing:
library(broom)
= turnip_final %>%
slice_2 group_by(spacing) %>%
do(tidy(aov(.$yield ~ .$density))) %>%
as.data.frame() %>%
mutate(term = gsub("[.][$]", "", term))
::kable(slice_2) knitr
| spacing | term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|---|
| 4 | density | 2 | 0.4540667 | 0.2270333 | 4.347447 | 0.0680698 |
| 4 | Residuals | 6 | 0.3133333 | 0.0522222 | NA | NA |
| 8 | density | 2 | 0.6872889 | 0.3436444 | 3.670979 | 0.0909484 |
| 8 | Residuals | 6 | 0.5616667 | 0.0936111 | NA | NA |
| 16 | density | 2 | 18.6321556 | 9.3160778 | 135.037365 | 0.0000103 |
| 16 | Residuals | 6 | 0.4139333 | 0.0689889 | NA | NA |
We similarly see that density is only significant at \(P\le0.05\) where spacing=16.
In this trial, both main (density and spacing) effects are significant. But if don’t explore and explain our analysis further, we might miss how the both the magnitude of and the rank rank of row spacing effects on yield changes with plant density.
7.2.3 Discussing Interactions
In factorial experiments, there are three kinds of interaction that may occur. We can have no interaction, a spreading interaction, or a crossover interaction.
<IP_ADDRESS> No Interaction
Where there is no interaction, the treatments effects are simply additive – the observed value of each observation in the plot above is the sum of the effect of the level of Factor A plus the effect of the level of Factor B. The difference between levels of Factor A are consistent across levels of Factor B, and vice versa. If we plot the data using a line plot, it will look like this:
= rep(c(1,2,3), 2)
factA = c(1:6)
Y = rep(c("T1", "T2"), each=3)
factB
= cbind(factA, Y, factB) %>%
dataset as.data.frame() %>%
mutate(factA=as.numeric(factA),
Y=as.numeric(Y))
%>%
dataset ggplot(aes(x=factA, y=Y, group=factB)) +
geom_line(aes(color=factB), size=2) +
labs(x="Factor A", legend="Factor B", color="Factor B")
In a bar plot, it should look like this:
%>%
dataset ggplot(aes(x=factA, y=Y, group=factB)) +
geom_bar(stat="identity", aes(fill=factB), position = "dodge") +
labs(x="Factor A", legend="Factor B", fill="Factor B")
Finally, there will be no change in the ranking of levels within factors. Rank is the order of levels according to their obseved effects, from least to greatest. For factor A, the ranking of levels within Factor A is \(1 > 2 > 3\), while within Factor B, level T2 always ranks higher than level T1.
<IP_ADDRESS> Spreading Interaction
In a spreading interaction, the ranking of levels within factors does not change, but the difference between them does.
= rep(c(1,2,3), 2)
factA = c(1,2,3,4,6,8)
Y = rep(c("T1", "T2"), each=3)
factB
= cbind(factA, Y, factB) %>%
dataset as.data.frame() %>%
mutate(factA=as.numeric(factA),
Y=as.numeric(Y))
%>%
dataset ggplot(aes(x=factA, y=Y, group=factB)) +
geom_line(aes(color=factB), size=2) +
labs(x="Factor A", legend="Factor B", color="Factor B")
In the above plot, we can see the levels of Factor A still rank \(1<2<3\) in their effect on the observed value Y, for both level T1 and level T2 of Factor B. We also note that the levels of Factor B rank \(T1<T2\) at each level of Factor A. In this spreading interaction, however, the difference between T1 and T2 of factor B increases as the levels of Factor A increase. Similarly, the differences among levels of Factor A are greater for level T2 than level T1 of Factor B.
We saw a spreading interaction before in Case Study 1. The effect of sulfur increased with the level of phosphorus, and vice versa.
<IP_ADDRESS> Crossover Interaction
A crossover interaction is similar to a spreading interacton in that the differences between levels within one factor change with the levels of a second factor, but different in that the ranking of levels changes as well. In addition, as we saw above, crossover reactions can mask the effects of factor levels.
= rep(c(1,2,3), 2)
factA = c(1,2,3,4,3,2)
Y = rep(c("T1", "T2"), each=3)
factB
= cbind(factA, Y, factB) %>%
dataset as.data.frame() %>%
mutate(factA=as.numeric(factA),
Y=as.numeric(Y))
%>%
dataset ggplot(aes(x=factA, y=Y, group=factB)) +
geom_line(aes(color=factB), size=2) +
labs(x="Factor A", legend="Factor B", color="Factor B")
In the plot above, the ranking of levels within Factor B is \(T2>T1\) for levels 1 and 2 of Factor A, but \(T1>T2\) for level 3 of Factor A. In other words, whether T2 is greater than T1 depends on the level of Factor A. In addition, the levels of Factor B behave differently in response to the levels of Factor A. Level T1 of Factor B increases with the level of Factor B, while level T2 decreases.
We observed a crossover reaction in Case Study 2 above, where the effect of the widest row spacing on yield was greater than the narrow row spacings at the lowest planting density, but was less than the narrow spacings at the greatest planting density.
<IP_ADDRESS> Discussing Interactions
Interactions are exciting. Spreading interactions show us how the proper combination of of management practices or inputs can have a combined effect that is greater than the individual effect of inputs. Conversely, crossover interactions show us how the advantage of one practice can be lost with the mismanagement of a second practice. This is the essence of agronomy.
When we identify spreading interactions, we learn how to build more productive cropping systems, as opposed to one-off solutions. Don’t get me wrong – there are some wonderful one-off solutions. But almost every input or practice can be made more effective by understanding how it interacts with other practices. In addition, trials can be designed to test how the effect of that input interacts with different environmental conditions, such as temperature and precipitation.
Interactions should always be highlighted when discussing the findings of an Analysis of Variance. The essense of an interaction is that the effect of one factor is dependent on the level of a second factor. If you don’t discuss the interaction between factors, you don’t completely describe the effect of either factor.
As we saw above, crossover interactions can mask the effects of factors. In the second case study, had we simply concluded from the main effect that yield did not differ with plant density, we would have failed to report what the data actually show: yield differs profoundly with plant density – but that row spacing affects the direction of that difference.
7.3 Split-Plot Design
The Split-Plot Design is a special kind of factorial experiment, in which one factor is nested within another. Let’s jump to an illustration.
library(agricolae)
## Warning: package 'agricolae' was built under R version 4.0.5
= c("A","B")
main_factor = c("A","B","C","D","E")
sub_factor = design.split(main_factor,
trt_rand
sub_factor,r=2,
design = "rcbd",
seed=2)
= trt_rand$book
plot_map
%>%
plot_map ggplot(aes(x=plots, y=splots), group=main_factor) +
geom_tile(aes(fill=main_factor), color="black") +
geom_text(aes(label=sub_factor))
In the experiment show above, there are two factors: the main factor and the sub-factor. The main factor has two levels, while the sub-factor has 5 levels. The design is a randomized complete block design. As with any randomized complete block design, all treatments must occur once within each block.
Main factor levels are indicated by color. Sub-factor levels are indicated by letter.
In the above plot map, the main factors occur once in Block 1 (plots 101 and 102) and Block 2 (plots 103 and 104). Within each occurrence of the main factor, all five levels of the sub-factor are nested. The levels of the main factor are randomized within each block, and the levels of the subfactor are randomized within each main plot.
So now that we know what a split-plot design looks like, we will address the question: why would we want to do this? The first answer has to do with practicality. Say the first factor is composed of fungicide treatments that we are going to apply with a Hagge applicator with a 100 ft boom. The second factor is composed of treatments (hybrid, in-furrow fertilizer, etc) that can be apply in 20-foot widths. We can apply our treatments much more easily if we use a split-plot design and nest the second factor (the sub-factor) within the first factor (the main factor).
 This is because, no matter how hard we try, plots that are closer together are more likely to be similar than plots that are further apart. By putting the sub-factor treatments close together, we can better estimate and test treatment effects.
The greater sensitivity to subfactor treatments, however, comes at a cost: we sacrifice some of our ability to detect differences among levels of our main factor. Sometimes, however, the levels of the main plot factor are so markedly different that we know we will detect differences among them, even if they are placed further apart. Plus, we may be more interested in the interaction between the main factor and sub-factor, and our ability to estimate and test this interaction, too, is enhanced by the split plot design.
 They are hotter than the jalapeno, but not devastating like the Carolina Reaper. In this study, habanero peppers were grown in pots of soils characterized by their color. They were harvested at two stages of ripening, green and orange, and their polyphenol concentrations measured. Soil was the main factor and harvest time the subfactor.
= read.csv("data-unit-7/habenero.csv")
habanero head(habanero)
## block soil harvest_stage total_polyphenols
## 1 R1 red green 109.84958
## 2 R1 red orange 186.71777
## 3 R1 brown green 130.53991
## 4 R1 brown orange 207.00041
## 5 R1 black green 97.86705
## 6 R1 black orange 212.19618
7.4 Linear Additive Model
\[ Y_{ijk} = \mu + M_{j} + Error(B_i + BM_{ij}) + S_{k} + MS_{ik} + Error(BS_{ik}+BMS_{ijk})\] Bear with me. We can break this model down in to two sections. Let’s start with the first three terms. These focus on explaining the observed variance among the main plots.
\(B_i\) is the effect of block \(i\)
\(M_j\) is the effect of level \(j\) of the main factor
\(Error(BM_{ij})\) is the error (unexplained variance) associated with the block \(i\) and level \(j\) of the main factor. When we calculate the F-value for the main factor, we use this error term.
The second three terms focus on explaining the observed variance among subplots.
\(S_k\) is the effect of level \(k\) of the sub-factor
\(MS_{ik}\) is the interaction between level \(i\) of the main factor and level \(k\) of the subfactor
\(Error(BS_{ik}+BMS_{ijk})\) is the unexplained variance associated with the given levels of the sub factor and the main factor - sub-factor interaction. It is used in testing the significance of both those effects
Ugh.  Let’s look at the ANOVA table for our habenero trial to make more sense of this.
= aov(total_polyphenols ~ soil + harvest_stage + soil:harvest_stage + Error(block:soil), data=habanero) habanero_model
## Warning in aov(total_polyphenols ~ soil + harvest_stage + soil:harvest_stage + :
## Error() model is singular
summary(habanero_model)
##
## Error: block:soil
## Df Sum Sq Mean Sq F value Pr(>F)
## soil 2 1322.7 661.3 8.691 0.00791 **
## Residuals 9 684.9 76.1
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Error: Within
## Df Sum Sq Mean Sq F value Pr(>F)
## harvest_stage 1 42120 42120 176.72 3.2e-07 ***
## soil:harvest_stage 2 5938 2969 12.46 0.00256 **
## Residuals 9 2145 238
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
We have two ANOVA tables. The top table evaluates the effect of soil in our main plots. Looking at the degrees of freedom, we can see we have 3 soils - 1 = 2 degrees of freedom for soil and (4 blocks - 1) x 3 = 9 degrees of freedom for the error. The F-value is the ratio of the mean square for soil and the mean square for the main factor error (residuals).
The second table evalulates the effect of of the harvest stage and the interaction between soil and harvest stage in the subplots. There are 2 stages - 1 = 1 degree of freedom for harvest stage and *(3 soils - 1) x (2 stages - 1) = 2 degrees of freedom for the interaction. The F-values for the harvest stage and interaction effects are the ratios of their mean squares to the mean square for the subplot error (residuals).
We analyze the ANOVA results the same as we would for any factorial trial. Looking at our table, we see significant results for soil, harvest stage, and their interaction. So lets go straight to the interaction plot.
%>%
habanero group_by(soil, harvest_stage) %>%
summarise(total_polyphenols = mean(total_polyphenols)) %>%
ungroup() %>%
ggplot(aes(x=harvest_stage, y=total_polyphenols, group = soil)) +
geom_line(aes(color=soil))
## `summarise()` has grouped output by 'soil'. You can override using the `.groups` argument.
We can see the the total polyphenol concentration was affected by harvest stage in each soil. Orange habaneros had greater total polyphenos than green ones. Furthermore, we can see that black soils produced the fewest total polyphenols when habaneros where harvested green, but the most when they were harvested orange.
Looking at our interaction tables, we see soil has a significant effect on total polyphenols at both harvest stages.
library(broom)
= habanero %>%
slice_1 group_by(harvest_stage) %>%
do(tidy(aov(.$total_polyphenols ~ .$block + .$soil))) %>%
as.data.frame() %>%
mutate(term = gsub("[.][$]", "", term))
::kable(slice_1) knitr
| harvest_stage | term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|---|
| green | block | 3 | 312.1119 | 104.03731 | 0.4324894 | 0.7375426 |
| green | soil | 2 | 5006.9642 | 2503.48208 | 10.4071271 | 0.0112036 |
| green | Residuals | 6 | 1443.3275 | 240.55458 | NA | NA |
| orange | block | 3 | 79.2278 | 26.40927 | 0.1592069 | 0.9199513 |
| orange | soil | 2 | 2253.3551 | 1126.67757 | 6.7921174 | 0.0287564 |
| orange | Residuals | 6 | 995.2810 | 165.88017 | NA | NA |
And that harvest stage had a significant effect at each level of soil.
library(broom)
= habanero %>%
slice_2 group_by(soil) %>%
do(tidy(aov(.$total_polyphenols ~ .$block + .$harvest_stage))) %>%
as.data.frame() %>%
mutate(term = gsub("[.][$]", "", term))
::kable(slice_2) knitr
| soil | term | df | sumsq | meansq | statistic | p.value |
|---|---|---|---|---|---|---|
| black | block | 3 | 79.03859 | 26.34620 | 0.0555253 | 0.9798439 |
| black | harvest_stage | 1 | 32872.72483 | 32872.72483 | 69.2801410 | 0.0036344 |
| black | Residuals | 3 | 1423.46960 | 474.48987 | NA | NA |
| brown | block | 3 | 214.87947 | 71.62649 | 0.5937286 | 0.6605111 |
| brown | harvest_stage | 1 | 7062.17490 | 7062.17490 | 58.5400106 | 0.0046367 |
| brown | Residuals | 3 | 361.91529 | 120.63843 | NA | NA |
| red | block | 3 | 390.95481 | 130.31827 | 1.0869202 | 0.4734925 |
| red | harvest_stage | 1 | 8122.82365 | 8122.82365 | 67.7484520 | 0.0037542 |
| red | Residuals | 3 | 359.69045 | 119.89682 | NA | NA |
7.5 Conclusion
Experimental design of multiple treatment experiments plays a critical role in the quality of our data and the inferences that can be made. In most cases, you will probably run randomized complete block design experiments with a single factor, where blocking will reduce the error among plots within each block.
The factorial design allows greater efficiency if you are interested in studying two factors. It is also the only way to study the interaction between two factors.
Finally, where one factor is known to be more subtle (and therefore, harder to test significance for) than a second factor, or where differences in equipment size make it more practical to nest one factor inside the other, the split-plot design can be very useful.


The Computer Science and Engineering Graduate Student Association (CSEGA, pronounced see-sega) is an organization made for, of, and by the graduate students of the Computer Science and Engineering Department whose mission is to promote leadership, support, and social fellowship in the CSE graduate community.
Meeting times have yet to be determined.
Elected Graduate Student Representatives advocate for CSE graduate students at various committee and faculty meetings, and provide the eyes, ears and voice of the CSE graduate community at official functions.
Whenever a CSE graduate student is in conflict with the university or its constituents, the CSEGA will be there to provide unwavering and resolute support for them.
The CSEGA organizes regular social activities (usually with PIZZA) to foster a community that extends beyond the boundaries of individual laboratories, where ideas are shared, and collaborations expand research horizons. The Lab Liaisons play a special role in this process.


I love discovering the structure of projects, breaking down all the pieces and figuring out how it all interplays and connects.
As you code, the more thorough you become in your work, and the more you realize the limitless possibilities of technology. There is so much that we don't know...so much to discover!
Welcome to a glimpse of my continual process of discovery. Take a look around at my latest projects.


title = "vibes" url = "/vibes" layout = "default" is_hidden = 0 ==
All shirts are one time release.
Sold Out


First add Smoothy to your project. It can be done in different ways. Either add it manually by copying the code from Github or install it using a package manager. You can also choose to clone it from the Github repository.
Ensure you're using the file in the dist directory, which contains compiled production-ready code. Place the script before the closing body tag or use Smoothy in an external script file. Just ensure you initialize Smoothy after the Smoothy source code.
Smoothy works right out of the box. But you can customize it after your needs, using its API. You can pass your settings and callbacks into Smoothy through the init function.
Add a function that will be called when the scroll animation has been completed. type: function options: function | undefined default: undefined
A collection of easing patterns to choose from. type: string options: linear | easeInOutQuad | easeInOutCubic default: linear
Option to offset where the animation ends. If the user interface using a fixed header you can offset the headers height to avoid your target being hidden behind it. type: integer default: 0
Defines the average speed. Speed returns pixels per second. type: integer default: 1000
Defines the animation time. It will be used if type is set to time. type: integer default: 500
Speed is the default animation type for Smoothy. type: string options: speed | time default: speed