用js写一个计算两组数据斯皮尔曼等级相关的网页,要用split, Number, Math.pow这些函数;数据格式要用“空格”“换行”或者“逗号”分隔,两组数据都要有标题;页面最下方要有两个按钮,一个是名为“斯皮尔曼等级相关分析”的按钮,这个是计算按钮:一个是名为“重置数据”的按钮,这个是重置数据的按钮。两个按钮在一行,中间空一些位置。分析出来的数据以文本形式显示在按钮下放,内容为:“两组数据的斯皮尔曼等级相关系数师:内容都要居中。网页使用淡蓝色背景。
时间: 2024-02-03 12:12:32 浏览: 67
以下是一个简单的实现,仅供参考:
```html
<!DOCTYPE html>
<html>
<head>
<title>斯皮尔曼等级相关分析</title>
<style>
body {
background-color: #E6F2F5;
font-family: Arial;
text-align: center;
}
h1 {
margin-top: 50px;
}
table {
margin: 50px auto;
border-collapse: collapse;
text-align: center;
}
table th, table td {
padding: 10px;
border: 1px solid black;
}
button {
margin-top: 50px;
padding: 10px 20px;
border-radius: 5px;
background-color: #4CAF50;
color: white;
border: none;
cursor: pointer;
}
button:hover {
background-color: #3E8E41;
}
#result {
margin-top: 50px;
text-align: left;
padding: 20px;
background-color: white;
width: 50%;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<h1>斯皮尔曼等级相关分析</h1>
<p>输入数据(用空格、换行或逗号分隔):</p>
<textarea id="data" rows="10" cols="50"></textarea>
<button id="calculate">斯皮尔曼等级相关分析</button>
<button id="reset">重置数据</button>
<div id="result"></div>
<script>
function calculateSpearman() {
// 获取输入数据
const data = document.getElementById("data").value;
const rows = data.trim().split(/\n/g);
const n = rows.length;
const x = [];
const y = [];
let sumX = 0;
let sumY = 0;
for (let i = 0; i < n; i++) {
const cols = rows[i].split(/[ ,]/g);
const xi = Number(cols[0]);
const yi = Number(cols[1]);
x[i] = xi;
y[i] = yi;
sumX += xi;
sumY += yi;
}
const avgX = sumX / n;
const avgY = sumY / n;
// 计算排名
const rankX = getRank(x);
const rankY = getRank(y);
// 计算差值平方和
let diffSum = 0;
for (let i = 0; i < n; i++) {
const diff = rankX[i] - rankY[i];
diffSum += Math.pow(diff, 2);
}
// 计算斯皮尔曼等级相关系数
const rho = 1 - (6 * diffSum) / (n * (n * n - 1));
// 显示结果
const result = document.getElementById("result");
result.innerHTML = "<p>两组数据的斯皮尔曼等级相关系数为:</p><h2>" + rho.toFixed(4) + "</h2>";
}
function getRank(arr) {
const n = arr.length;
const sorted = arr.slice().sort((a, b) => a - b);
const rank = new Array(n);
for (let i = 0; i < n; i++) {
const j = sorted.indexOf(arr[i]);
rank[i] = j + 1;
sorted[j] = NaN;
}
return rank;
}
function resetData() {
document.getElementById("data").value = "";
document.getElementById("result").innerHTML = "";
}
document.getElementById("calculate").addEventListener("click", calculateSpearman);
document.getElementById("reset").addEventListener("click", resetData);
</script>
</body>
</html>
```
阅读全文