สถิติและข้อมูลขนาดใหญ่

ถามตอบสำหรับผู้ที่สนใจในสถิติการเรียนรู้ของเครื่องจักรการวิเคราะห์ข้อมูลการขุดข้อมูล

2
สัมประสิทธิ์สหสัมพันธ์ของ Pearson แข็งแกร่งแค่ไหนต่อการละเมิดกฎเกณฑ์ทั่วไป?
ข้อมูลของตัวแปรบางประเภทมีแนวโน้มที่ไม่ปกติเมื่อวัดจากประชากรโดยเฉพาะ (เช่นระดับของภาวะซึมเศร้าในประชากรของคนที่มีโรคซึมเศร้า) จากการที่ Pearson ใช้เกณฑ์ปกติสถิติการทดสอบภายใต้เงื่อนไขที่ไม่เป็นมาตรฐานนั้นแข็งแกร่งแค่ไหน? ฉันมีตัวแปรหลายตัวที่ฉันต้องการค่าสัมประสิทธิ์สหสัมพันธ์ แต่ความเบ้ของ Z สำหรับตัวแปรเหล่านี้บางอย่างนั้นมีความสำคัญที่p <.001 (และนั่นก็เป็นตัวอย่างที่ค่อนข้างเล็ก) ฉันได้ลองเปลี่ยนรูปแล้ว แต่การปรับปรุงการกระจายตัวนั้นดีที่สุดเพียงเล็กน้อย ฉันจะต้องติดกับการวิเคราะห์ที่ไม่ใช่พารามิเตอร์หรือไม่ และไม่เพียง แต่สำหรับสหสัมพันธ์ แต่สำหรับการวิเคราะห์ประเภทอื่นด้วย

3
สถิติเบื้องต้นสำหรับลูกขุน
ฉันถูกเรียกตัวให้ทำหน้าที่คณะลูกขุน ฉันตระหนักถึงความเกี่ยวข้องของสถิติกับการพิจารณาของคณะลูกขุน ตัวอย่างเช่นแนวคิดของ "อัตราฐาน" และการประยุกต์ใช้กับการคำนวณความน่าจะเป็นบางครั้งอาจเกี่ยวข้องกับทุกครั้ง หัวข้อทางสถิติใดที่บุคคลในสถานการณ์ของฉันอาจศึกษาอย่างมีประโยชน์และวัสดุใดที่จะเหมาะสำหรับบางคนที่มีภูมิหลัง ฉันมีระดับ "วิทยาศาสตร์ที่ยาก" และมีความรู้ทางสถิติที่ จำกัด แต่ทักษะของฉันก็เป็นสนิม ฉันทำงานเต็มเวลาและไม่มีเวลาก่อนหน้าที่คณะลูกขุน ดังนั้นมันจะเหมาะสำหรับคำตอบที่จะมุ่งเน้นแนวคิดพื้นฐานทักษะการแก้ปัญหาอย่างง่ายและการประยุกต์ใช้กับปัญหาที่เกี่ยวข้อง (และข้อ จำกัด ของแนวคิดและวิธีการเหล่านั้นแน่นอน)

2
ฉันจะรวบรวมวิธีการหลังและช่วงเวลาที่น่าเชื่อถือหลังจากการใส่ร้ายหลายครั้งได้อย่างไร
ฉันใช้การใส่หลายชุดเพื่อรับชุดข้อมูลที่สมบูรณ์จำนวนหนึ่ง ฉันได้ใช้วิธีการแบบเบย์ในชุดข้อมูลแต่ละชุดที่เสร็จสมบูรณ์เพื่อรับการแจกแจงด้านหลังสำหรับพารามิเตอร์ (เอฟเฟกต์แบบสุ่ม) ฉันจะรวม / รวมผลลัพธ์สำหรับพารามิเตอร์นี้ได้อย่างไร บริบทเพิ่มเติม: แบบจำลองของฉันเป็นแบบลำดับชั้นในแง่ของนักเรียนแต่ละคน (หนึ่งการสังเกตต่อนักเรียนหนึ่งคน) จัดเป็นกลุ่มในโรงเรียน ฉันได้ทำการใส่หลาย ๆ ครั้ง (ใช้MICEใน R) กับข้อมูลของฉันซึ่งฉันรวมไว้schoolเป็นหนึ่งในตัวทำนายสำหรับข้อมูลที่หายไป - เพื่อพยายามรวมลำดับชั้นของข้อมูลเข้ากับการใส่ข้อมูล ฉันได้ติดตั้งโมเดลความชันสุ่มแบบง่ายกับชุดข้อมูลที่สมบูรณ์แต่ละชุด (ใช้MCMCglmmใน R) ผลลัพธ์ที่ได้คือไบนารี ฉันได้พบว่าความหนาแน่นด้านหลังของความแปรปรวนแบบสุ่มเป็น "พฤติกรรมที่ดี" ในแง่ที่ว่าพวกเขามีลักษณะเช่นนี้: ฉันจะรวม / รวมหมายถึงหลังและช่วงเวลาที่น่าเชื่อถือจากชุดข้อมูลแต่ละอันที่มีการกำหนดไว้สำหรับเอฟเฟกต์แบบสุ่มนี้ได้อย่างไร อัปเดต 1 : จากสิ่งที่ฉันเข้าใจจนถึงตอนนี้ฉันสามารถนำกฎของรูบินไปใช้กับค่าเฉลี่ยหลังเพื่อให้ค่าเฉลี่ยหลังซึ่งมีการโต้แย้งกันหลายครั้ง - มีปัญหาอะไรไหมกับการทำเช่นนี้? แต่ฉันไม่รู้ว่าจะรวมช่วงเวลาที่น่าเชื่อถือได้ 95% อย่างไร นอกจากนี้เนื่องจากฉันมีตัวอย่างความหนาแน่นด้านหลังที่แท้จริงสำหรับการใส่ร้ายแต่ละครั้ง - ฉันสามารถรวมสิ่งเหล่านี้ได้หรือไม่ อัปเดต 2 : ตามคำแนะนำของ @ cyan ในความคิดเห็นฉันชอบความคิดที่จะรวมตัวอย่างจากการแจกแจงหลังที่ได้จากชุดข้อมูลแต่ละชุดจากการใส่หลายครั้ง อย่างไรก็ตามฉันควรจะรู้เหตุผลทางทฤษฎีสำหรับการทำเช่นนี้

3
วิธีการตีความสัมประสิทธิ์การถดถอยเมื่อการตอบสนองถูกแปลงโดยรากที่ 4?
ฉันกำลังใช้การรูทที่สี่ ( 1/4) การแปลงพลังงานกับตัวแปรตอบกลับของฉันซึ่งเป็นผลมาจากความต่างระดับ แต่ตอนนี้ฉันไม่แน่ใจว่าจะตีความสัมประสิทธิ์การถดถอยของฉันได้อย่างไร ฉันคิดว่าฉันจะต้องใช้สัมประสิทธิ์เป็นกำลังสี่เมื่อฉันแปลงกลับ (ดูด้านล่างผลลัพธ์การถดถอย) ตัวแปรทั้งหมดอยู่ในหน่วยดอลลาร์เป็นล้าน แต่ฉันอยากรู้ว่าการเปลี่ยนแปลงของเงินดอลลาร์เป็นพันล้าน ในขณะที่มีค่าคงที่ตัวแปรอิสระอื่น ๆ การเปลี่ยนแปลงค่าธรรมเนียมโดยพันล้านดอลลาร์โดยเฉลี่ยนำไปสู่การเปลี่ยนแปลง32(หรือ 32,000 ดอลลาร์) ในการรวบรวม ฉันใช้เวลา(ที่จะได้รับพันล้าน)0.000075223 * 1000 ^ 4 = 0.000032ตอนนี้ฉันจะคูณจำนวนนี้ด้วย 1 ล้านหรือ 1 พันล้าน (หน่วยดั้งเดิมของตัวแปรตามคือล้าน) lm(formula = (Collections^(1/4)) ~ Fees + DIR) Estimate Std. Error t value Pr(>|t|) (Intercept) 2.094573355 0.112292375 18.653 0.0000000000000151 Fees **0.000075223 **0.000008411 8.943 0.0000000131878713 …

6
PCA ของข้อมูลที่ไม่ใช่แบบเกาส์
ฉันมีคำถามสองสามข้อเกี่ยวกับ PCA: PCA คิดว่าชุดข้อมูลเป็น Gaussian หรือไม่ จะเกิดอะไรขึ้นเมื่อฉันใช้ PCA กับข้อมูลที่ไม่ใช่เชิงเส้นโดยเนื้อแท้ ให้ชุดข้อมูลกระบวนการคือการทำให้ค่าเฉลี่ย - ปกติแรกตั้งค่าความแปรปรวนเป็น 1 รับ SVD ลดอันดับและสุดท้ายแมปชุดข้อมูลลงในพื้นที่ลดอันดับใหม่ ในพื้นที่ใหม่แต่ละมิติสอดคล้องกับ "ทิศทาง" ของความแปรปรวนสูงสุด แต่ความสัมพันธ์ของชุดข้อมูลนั้นในพื้นที่ใหม่เป็นศูนย์เสมอหรือเป็นจริงสำหรับข้อมูลที่เป็นแบบเกาส์โดยเนื้อแท้ สมมติว่าฉันมีชุดข้อมูลสองชุดคือ "A" และ "B" โดยที่ "A" ตรงกับจุดสุ่มตัวอย่างที่นำมาจาก Gaussian ในขณะที่ "B" ตรงกับจุดสุ่มตัวอย่างจากการแจกแจงแบบอื่น (พูดปัวซอง) PCA (A) เปรียบเทียบกับ PCA (B) อย่างไร โดยการดูที่จุดในพื้นที่ใหม่ฉันจะพิจารณาได้อย่างไรว่า PCA (A) ตรงกับจุดที่สุ่มตัวอย่างจาก Gaussian ในขณะที่ PCA (B) ตรงกับจุดที่สุ่มตัวอย่างจาก Poisson ความสัมพันธ์ของคะแนนใน "A" …
20 pca  svd 

3
ฉันได้รับการโหลดที่“ น่ากลัว” ใน rollapply PCA ใน R. ฉันจะแก้ไขได้ไหม?
ฉันมีข้อมูลส่งคืน 10 ปีต่อวันสำหรับ 28 สกุลเงินที่แตกต่างกัน ฉันต้องการแยกส่วนประกอบหลักตัวแรก แต่แทนที่จะใช้งาน PCA ตลอดทั้ง 10 ปีฉันต้องการเปิดหน้าต่างใหม่ 2 ปีเพราะพฤติกรรมของสกุลเงินมีวิวัฒนาการและฉันต้องการสะท้อนสิ่งนี้ อย่างไรก็ตามฉันมีปัญหาที่สำคัญนั่นคือทั้งฟังก์ชั่น princomp () และ prcomp () มักจะกระโดดจากการโหลดเชิงบวกถึงเชิงลบในการวิเคราะห์ PCA ที่อยู่ติดกัน (เช่น 1 วันห่างกัน) ดูแผนภูมิการโหลดสำหรับสกุลเงิน EUR: เห็นได้ชัดว่าฉันไม่สามารถใช้สิ่งนี้ได้เพราะการโหลดที่อยู่ติดกันจะกระโดดจากบวกเป็นลบดังนั้นซีรี่ส์ของฉันที่ใช้มันจะผิดพลาด ตอนนี้มาดูค่าสัมบูรณ์ของการโหลดสกุลเงิน EUR: ปัญหาคือแน่นอนว่าฉันยังไม่สามารถใช้สิ่งนี้ได้เพราะคุณสามารถเห็นได้จากแผนภูมิด้านบนว่าการโหลดนั้นไปจากเชิงลบเป็นบวกและย้อนกลับไปในบางครั้งซึ่งเป็นลักษณะที่ฉันต้องรักษาไว้ มีวิธีใดบ้างที่ฉันสามารถแก้ไขปัญหานี้ได้ ฉันสามารถบังคับให้การปฐมนิเทศ eigenvector เหมือนกันใน PCAs ที่อยู่ติดกันได้หรือไม่ โดยวิธีการที่ปัญหานี้เกิดขึ้นกับฟังก์ชั่น FactoMineR () รหัสสำหรับ rollapply อยู่ที่นี่: rollapply(retmat, windowl, function(x) summary(princomp(x))$loadings[, 1], by.column = …
20 r  pca 

4
การจัดการกับค่า 0,1 ในการถดถอยเบต้า
ฉันมีข้อมูลบางส่วนใน [0,1] ซึ่งฉันต้องการวิเคราะห์ด้วยการถดถอยเบต้า แน่นอนว่าสิ่งที่ต้องทำเพื่อรองรับค่า 0,1 ฉันไม่ชอบการแก้ไขข้อมูลให้พอดีกับแบบจำลอง นอกจากนี้ฉันไม่เชื่อว่าศูนย์และ 1 เงินเฟ้อเป็นความคิดที่ดีเพราะฉันเชื่อว่าในกรณีนี้เราควรพิจารณาว่า 0 เป็นค่าบวกที่น้อยมาก (แต่ฉันไม่อยากบอกว่าค่าใดเหมาะสม ฉันเชื่อว่าจะเลือกค่าขนาดเล็กเช่น. 001 และ. 999 และเพื่อให้พอดีกับแบบจำลองโดยใช้ dist dist สะสมสำหรับเบต้าดังนั้นสำหรับการสังเกต y_i โอกาสในการบันทึก LL_iwould จะเป็น if y_i < .001 LL+=log(cumd_beta(.001)) else if y_i>.999 LL+=log(1.0-cum_beta(.999)) else LL+=log(beta_density(y_i)) สิ่งที่ฉันชอบเกี่ยวกับรุ่นนี้คือถ้ารุ่นการถดถอยเบต้าถูกต้องโมเดลนี้ก็ใช้ได้เช่นกัน แต่มันจะลบความไวเล็กน้อยต่อค่าที่มากที่สุด อย่างไรก็ตามเรื่องนี้ดูเหมือนจะเป็นวิธีธรรมชาติที่ฉันสงสัยว่าทำไมฉันไม่พบการอ้างอิงที่ชัดเจนในวรรณคดี ดังนั้นคำถามของฉันคือแทนที่จะปรับเปลี่ยนข้อมูลทำไมไม่แก้ไขโมเดล การปรับเปลี่ยนข้อมูลอคติผลลัพธ์ (ตามสมมติฐานที่ว่าแบบจำลองดั้งเดิมนั้นถูกต้อง) ในขณะที่การปรับเปลี่ยนแบบจำลองโดยการผสมค่าที่มากที่สุดจะไม่ทำให้เกิดผลลัพธ์ อาจจะมีปัญหาที่ฉันมองข้าม?

6
“ Bayesian เต็มที่” กับ“ Bayesian”
ฉันได้เรียนรู้เกี่ยวกับสถิติแบบเบย์และฉันมักจะอ่านบทความ "เราใช้แนวทางแบบเบย์" หรือสิ่งที่คล้ายกัน ฉันยังสังเกตเห็นน้อยกว่า: "เราใช้แนวทางแบบเบย์อย่างเต็มที่ " (ความสำคัญของฉัน) มีความแตกต่างระหว่างวิธีการเหล่านี้ในทางปฏิบัติหรือในทางทฤษฎีใด ๆ ? FWIW ฉันใช้แพ็คเกจMCMCglmmใน R ในกรณีที่เกี่ยวข้อง
20 bayesian 

2
การจำลองอนุกรมเวลาที่ให้กำลังและความหนาแน่นสเปกตรัมข้าม
ฉันมีปัญหาในการสร้างชุดของชุดสีเวลาคงที่ให้เมทริกซ์ความแปรปรวนร่วมของพวกเขา (ความหนาแน่นสเปกตรัมพลังงานของพวกเขา (PSDs) และความหนาแน่นสเปกตรัมข้ามอำนาจ (CSDs) ฉันรู้ว่าเมื่อได้รับอนุกรมเวลาสองชุดและฉันสามารถประเมินความหนาแน่นเชิงสเปกตรัมกำลัง (PSDs) และความหนาแน่นข้ามสเปกตรัม (CSDs) โดยใช้กิจวัตรที่มีอยู่มากมายเช่นและฟังก์ชั่นใน Matlab เป็นต้น PSDs และ CSD ประกอบขึ้นเป็นเมทริกซ์ความแปรปรวนร่วม: Yผม( t)Yผม(เสื้อ)y_{I}(t)YJ( t )YJ(เสื้อ)y_{J}(t)psd()csd()C ( f) = ( Pผมผม(ฉ)PJผม(ฉ)PผมJ(ฉ)PJJ(ฉ)),ค(ฉ)=(Pผมผม(ฉ)PผมJ(ฉ)PJผม(ฉ)PJJ(ฉ)), \mathbf{C}(f) = \left( \begin{array}{cc} P_{II}(f) & P_{IJ}(f)\\ P_{JI}(f) & P_{JJ}(f) \end{array} \right)\;, ซึ่งอยู่ในฟังก์ชั่นทั่วไปของความถี่ฉ ฉฉf จะเกิดอะไรขึ้นถ้าฉันต้องการย้อนกลับ รับเมทริกซ์ความแปรปรวนร่วมฉันจะสร้างการรับรู้ของและอย่างไรYผม( t )Yผม(เสื้อ)y_{I}(t)YJ( t )YJ(เสื้อ)y_{J}(t) โปรดรวมทฤษฎีพื้นหลังใด ๆ หรือชี้ให้เห็นเครื่องมือที่มีอยู่ใด ๆ ที่ทำสิ่งนี้ …

1
การคำนวณช่วงการทำนายสำหรับการถดถอยโลจิสติก
ฉันต้องการที่จะเข้าใจวิธีการสร้างช่วงเวลาการทำนายสำหรับการประมาณการการถดถอยโลจิสติก ฉันได้รับคำแนะนำให้ทำตามขั้นตอนในการสร้างแบบจำลองข้อมูลไบนารีของ Collett , 2nd Ed p.98-99 หลังจากนำขั้นตอนนี้มาใช้และเปรียบเทียบกับ R ของpredict.glmจริง ๆ แล้วฉันคิดว่าหนังสือเล่มนี้แสดงขั้นตอนการคำนวณช่วงความเชื่อมั่นไม่ใช่ช่วงเวลาทำนาย การปฏิบัติตามขั้นตอนจาก Collett โดยเปรียบเทียบกับpredict.glmแสดงไว้ด้านล่าง ฉันต้องการทราบว่า: ฉันจะไปจากที่นี่เพื่อสร้างช่วงการทำนายแทนช่วงความมั่นใจได้อย่างไร #Derived from Collett 'Modelling Binary Data' 2nd Edition p.98-99 #Need reproducible "random" numbers. seed <- 67 num.students <- 1000 which.student <- 1 #Generate data frame with made-up data from students: set.seed(seed) #reset seed …

1
ข้อผิดพลาดในการประมาณการกระจายผลรวมสม่ำเสมอ
วิธีการที่ไร้เดียงสาวิธีหนึ่งสำหรับการประมาณการแจกแจงแบบปกติคือการเพิ่มตัวแปรสุ่ม IID จำนวน IID ที่กระจายกันอย่างสม่ำเสมอใน[ 0 , 1 ]จากนั้นกลับมาอีกครั้งและดำเนินการใหม่โดยอาศัยทฤษฎีบทขีด จำกัด กลาง ( หมายเหตุด้านข้าง : มีวิธีการที่แม่นยำมากขึ้นเช่นการแปลง Box – Muller ) ผลรวมของ IID100100100[0,1][0,1][0,1]U(0,1)U(0,1)U(0,1)ตัวแปรสุ่มเป็นที่รู้จักกันกระจายชุดรวมหรือกระจายเออร์วินฮอลล์ ข้อผิดพลาดมีขนาดใหญ่เพียงใดในการประมาณการกระจายตัวแบบสม่ำเสมอโดยการแจกแจงแบบปกติ เมื่อใดก็ตามที่คำถามประเภทนี้เกิดขึ้นเพื่อประมาณผลรวมของตัวแปรสุ่มของ IID ผู้คน (รวมถึงฉัน) จะนำทฤษฎีบท Berry - Esseenมาใช้ซึ่งเป็นเวอร์ชันที่มีประสิทธิภาพของทฤษฎีขีด จำกัด กลางเนื่องจากช่วงเวลาที่สามมีอยู่: |Fn(x)−Φ(x)|≤Cρσ3n−−√|Fn(x)−Φ(x)|≤Cρσ3n|F_n(x) - \Phi(x)| \le \frac{C \rho}{\sigma^3 \sqrt n} ที่เป็นฟังก์ชันการแจกแจงสะสมสำหรับผลรวมของ rescaled IID ตัวแปรสุ่มเป็นสามช่วงเวลาที่แน่นอนกลาง,เป็นส่วนเบี่ยงเบนมาตรฐานและเป็นค่าคงที่แน่นอนซึ่งสามารถนำไปเป็นหรือแม้กระทั่ง1/2FnFnF_nnnnρρ\rhoE|(X−EX)3|E|(X−EX)3|E|(X-EX)^3|σσ\sigmaCCC1111/21/21/2 สิ่งนี้ไม่น่าพอใจ สำหรับผมแล้วการประมาณ Berry - Esseen นั้นใกล้เคียงที่สุดกับการแจกแจงทวินามที่ไม่ต่อเนื่องโดยมีข้อผิดพลาดที่ใหญ่ที่สุดคือสำหรับการแจกแจงทวินามแบบสมมาตร …

6
การเปลี่ยนสเกลของตัวแปรเป็น 0-100
ฉันสร้างดัชนีทุนทางสังคมโดยใช้เทคนิค PCA ดัชนีนี้ประกอบด้วยค่าทั้งบวกและลบ ฉันต้องการแปลง / แปลงดัชนีนี้เป็นมาตราส่วน 0-100 เพื่อให้ตีความได้ง่าย โปรดแนะนำวิธีที่ง่ายที่สุดให้ฉัน

1
เชื่อมโยงระหว่างความแปรปรวนและระยะทางคู่ภายในตัวแปร
โปรดพิสูจน์ว่าถ้าเรามีสองตัวแปร (ขนาดตัวอย่างเท่ากัน)และและความแปรปรวนในมากกว่าในแล้วผลรวมของความแตกต่างกำลังสอง (เช่นระยะห่างแบบยุคลิดกำลังสอง) ระหว่างจุดข้อมูลภายในนั้นมากกว่า ว่าภายในYYXXXYYYYXXXYYYYXXXYYY

2
มีตัวประมาณระยะทางของ Hellinger ระหว่างการแจกแจงสองแบบหรือไม่?
ในการตั้งค่าที่หนึ่งสังเกตกระจายออกมาจากการกระจายความหนาแน่นฉันสงสัยว่ามีการประมาณการที่เป็นกลาง (ตามx_i 's) ของระยะทาง Hellinger การกระจายที่มีความหนาแน่นอีกf_0คือ mathfrak \ {H} (f, f_0) = \ left \ {1 - \ int_ \ mathcal {X} \ sqrt {f (x) f_0 (x)} \ text {d} x \ right \} ^ {1/2} \ ,. f X ฉันf 0 H ( f , f 0 ) …

1
ช่วงความเชื่อมั่นรอบอัตราส่วนของสองสัดส่วน
ฉันมีสองสัดส่วน (เช่นอัตราการคลิกผ่าน (CTR) บนลิงก์ในรูปแบบการควบคุมและ CTR บนลิงก์ในรูปแบบการทดลอง) และฉันต้องการคำนวณช่วงความมั่นใจ 95% รอบอัตราส่วนของสัดส่วนเหล่านี้ ฉันจะทำสิ่งนี้ได้อย่างไร ฉันรู้ว่าฉันสามารถใช้วิธีเดลต้าเพื่อคำนวณความแปรปรวนของอัตราส่วนนี้ได้ แต่ฉันไม่แน่ใจว่าต้องทำอะไรนอกจากนั้น ฉันควรใช้อะไรเป็นจุดกึ่งกลางของช่วงความมั่นใจ (อัตราส่วนที่สังเกตได้ของฉันหรืออัตราส่วนที่คาดหวังซึ่งแตกต่างกัน) และควรเบี่ยงเบนมาตรฐานรอบอัตราส่วนนี้เท่าไหร่ ฉันควรใช้ความแปรปรวนของวิธีเดลต้าเลยหรือไม่ (ฉันไม่สนใจความแปรปรวนจริงๆเพียงแค่ช่วงความมั่นใจ) ฉันควรใช้ทฤษฎีบทของ Fiellerโดยใช้กรณีที่ 1 (เนื่องจากฉันทำสัดส่วนฉันคิดว่าฉันตอบสนองความต้องการกระจายทั่วไป) ฉันควรคำนวณตัวอย่าง bootstrap หรือไม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.